Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
VITAL_API_KEY=
VITAL_ENV=
VITAL_REGION=
39 changes: 22 additions & 17 deletions backend/python/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
from http.client import HTTPException
from tracemalloc import start
from typing import Optional
from vital import Client
from vital.client import Vital
from vital.environment import VitalEnvironment
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from pydantic import BaseModel
Expand All @@ -13,9 +14,13 @@
app = FastAPI()
VITAL_API_KEY = os.getenv("VITAL_API_KEY")
VITAL_ENVIRONMENT = os.getenv("VITAL_ENV")
VITAL_REGION = os.getenv("VITAL_REGION")

client = Client(api_key=VITAL_API_KEY, environment=VITAL_ENVIRONMENT, region=os.getenv("VITAL_REGION"))
if VITAL_ENVIRONMENT == "sandbox":
vital_env = VitalEnvironment.SANDBOX
elif VITAL_ENVIRONMENT == "production":
vital_env = VitalEnvironment.PRODUCTION

client = Vital(api_key=VITAL_API_KEY, environment=vital_env)

app.add_middleware( # type: ignore
CORSMiddleware,
Expand All @@ -26,9 +31,9 @@
)


@app.get("/token/{user_key}")
def get_token(user_key: str):
return client.Link.create(user_key)
@app.get("/token/{user_id}")
def get_token(user_id: str):
return client.link.token(user_id=user_id)


class CreateUserData(BaseModel):
Expand All @@ -37,33 +42,33 @@ class CreateUserData(BaseModel):

@app.post("/user/")
def create_user(data: CreateUserData):
return client.User.create(data.client_user_id)
return client.user.create(client_user_id=data.client_user_id)


@app.get("/users/")
def get_users():
return client.User.get_all()
return client.user.get_all()


@app.get("/summary/{data_type}/{user_id}")
def get_users(data_type: str, user_id: str, start_date: str, end_date: str):
func_map = {
"sleep": client.Sleep.get,
"activity": client.Activity.get,
"body": client.Body.get,
"workouts": client.Workouts.get,
"sleep": client.sleep.get,
"activity": client.activity.get,
"body": client.body.get,
"workouts": client.workouts.get,
}
func = func_map.get(data_type)
if not func:
raise HTTPException(400, "Failed to find data type")
data = func(user_id, start_date, end_date)
data = func(user_id=user_id, start_date=start_date, end_date=end_date)
return data


@app.get("/summary/{user_id}")
def get_users(user_id: str, start_date: str, end_date: str):
sleep = client.Sleep.get(user_id, start_date, end_date)
activity = client.Activity.get(user_id, start_date, end_date)
body = client.Body.get(user_id, start_date, end_date)
workouts = client.Workouts.get(user_id, start_date, end_date)
sleep = client.sleep.get(user_id=user_id, start_date=start_date, end_date=end_date)
activity = client.activity.get(user_id=user_id, start_date=start_date, end_date=end_date)
body = client.body.get(user_id=user_id, start_date=start_date, end_date=end_date)
workouts = client.workouts.get(user_id=user_id, start_date=start_date, end_date=end_date)
return {"sleep": sleep, "activity": activity, "body": body, "workouts": workouts}
Loading