1+ import httpx
2+ from app .models import Document
3+ from pydantic import TypeAdapter
4+
5+
6+ class DriveClient :
7+ def __init__ (self , base_url : str , token : str ) -> None :
8+ self .base_url = base_url
9+ self .token = token
10+ self .client = httpx .Client (
11+ headers = {"Authorization" : f"Bearer { self .token } " , "Content-Type" : "application/json" }
12+ )
13+
14+
15+ def get_documents (
16+ self , path : str = "api/v1.0/items/" , page : int = 1 , title : str | None = None , favorite : bool = False
17+ ) -> list [Document ]:
18+ url = httpx .URL (f"{ self .base_url } /{ path } " , params = {"page" : page })
19+
20+ if title :
21+ url = url .copy_add_param ("title" , str (title ))
22+
23+ response = self .client .request ("GET" , url )
24+ if response .status_code != 200 :
25+ return TypeAdapter (list [Document ]).validate_python ([])
26+
27+ results = response .json ().get ("results" , [])
28+
29+ if len (results ) < 1 :
30+ return TypeAdapter (list [Document ]).validate_python ([])
31+
32+
33+ workspace_id = results [0 ]['id' ]
34+
35+ item_url = f"{ self .base_url } /api/v1.0/items/{ workspace_id } /children/"
36+
37+ response = self .client .request ("GET" , item_url )
38+ if response .status_code != 200 :
39+ return TypeAdapter (list [Document ]).validate_python ([])
40+
41+ results = response .json ().get ("results" , [])
42+
43+ print (results )
44+
45+
46+ notes : list [Document ] = TypeAdapter (list [Document ]).validate_python (results )
47+
48+ return notes
0 commit comments