working
This commit is contained in:
80
FitnessSync/debug_garth_connection.py
Normal file
80
FitnessSync/debug_garth_connection.py
Normal file
@@ -0,0 +1,80 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
from sqlalchemy import create_engine, text
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
import garth
|
||||
from garth.auth_tokens import OAuth1Token, OAuth2Token
|
||||
|
||||
# Setup DB connection
|
||||
DATABASE_URL = "postgresql://postgres:password@db:5432/fitbit_garmin_sync"
|
||||
engine = create_engine(DATABASE_URL)
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
def debug_connection():
|
||||
print(f"Garth version: {garth.__version__}")
|
||||
print(f"Type of garth.client: {type(garth.client)}")
|
||||
print(f"Content of garth.http.client: {garth.http.client}")
|
||||
|
||||
db = SessionLocal()
|
||||
try:
|
||||
# Fetch tokens
|
||||
result = db.execute(text("SELECT garth_oauth1_token, garth_oauth2_token FROM api_tokens WHERE token_type='garmin'"))
|
||||
row = result.fetchone()
|
||||
|
||||
if not row:
|
||||
print("No tokens found.")
|
||||
return
|
||||
|
||||
oauth1_json = row[0]
|
||||
oauth2_json = row[1]
|
||||
|
||||
print(f"Loaded OAuth1 JSON type: {type(oauth1_json)}")
|
||||
|
||||
oauth1_data = json.loads(oauth1_json)
|
||||
oauth2_data = json.loads(oauth2_json)
|
||||
|
||||
print("Instantiating tokens...")
|
||||
oauth1 = OAuth1Token(**oauth1_data)
|
||||
oauth2 = OAuth2Token(**oauth2_data)
|
||||
|
||||
print(f"OAuth1Token object: {oauth1}")
|
||||
|
||||
# assign to garth.client
|
||||
garth.client.oauth1_token = oauth1
|
||||
garth.client.oauth2_token = oauth2
|
||||
|
||||
print("Tokens assigned.")
|
||||
print(f"garth.client.oauth1_token type: {type(garth.client.oauth1_token)}")
|
||||
|
||||
# Try connectapi directly
|
||||
print("Attempting garth.client.connectapi('/userprofile-service/socialProfile')...")
|
||||
try:
|
||||
profile_direct = garth.client.connectapi("/userprofile-service/socialProfile")
|
||||
print("Direct connectapi success!")
|
||||
print(f"Profile keys: {profile_direct.keys()}")
|
||||
except Exception as e:
|
||||
print(f"Direct connectapi failed: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
# Try via UserProfile.get()
|
||||
print("Attempting garth.UserProfile.get()...")
|
||||
try:
|
||||
profile = garth.UserProfile.get()
|
||||
print("UserProfile.get() success!")
|
||||
except Exception as e:
|
||||
print(f"UserProfile.get() failed: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
except Exception as e:
|
||||
print(f"General error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
debug_connection()
|
||||
Reference in New Issue
Block a user