Skip to content

Commit 0d8f4b7

Browse files
committed
API key arg, replace endpoints, fix 200 erroring
1 parent 462e85c commit 0d8f4b7

File tree

8 files changed

+43
-80
lines changed

8 files changed

+43
-80
lines changed

src/recnetpy/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class Client:
1919
#: Use this property to request room data. It serves as a factory for all room objects.
2020
rooms: RoomManager
2121

22-
def __init__(self) -> None:
23-
self.rec_net = RouteManager()
22+
def __init__(self, api_key: str = None) -> None:
23+
self.rec_net = RouteManager(api_key)
2424
self.accounts = AccountManager(self)
2525
self.events = EventManager(self)
2626
self.images = ImageManager(self)

src/recnetpy/dataclasses/account.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ async def get_bio(self, force: bool = False) -> str:
167167
:return: The player's bio.
168168
"""
169169
if self.bio is None or force:
170-
data: 'Response[BioResponse]' = await self.rec_net.accounts.account(self.id).bio.make_request('get')
170+
data: 'Response[BioResponse]' = await self.rec_net.accounts(self.id).bio.make_request('get')
171171
self.bio = data.data['bio']
172172
return self.bio
173173

src/recnetpy/managers/account_manager.py

Lines changed: 5 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,8 @@ async def get(self, name: str) -> Optional['Account']:
2020
:param name: The username of the RecNet user.
2121
:return: An account object representing the data or nothing if not found.
2222
"""
23-
data: 'Response[AccountResponse]' = await self.rec_net.apim.accounts.account.make_request('get', params = {'username': str(name)})
23+
data: 'Response[AccountResponse]' = await self.rec_net.accounts.make_request('get', params = {'username': str(name)})
2424
if data.success and data.data: return self.create_dataclass(data.data['accountId'], data.data)
25-
26-
# If APIM gets deprecated, fall back to accounts host
27-
print("APIM deprecated! File an issue on my repository. Check your input beforehand.")
28-
data: 'Response[AccountResponse]' = await self.rec_net.accounts.account.make_request('get', params = {'username': str(name)})
29-
if data.success and data.data: return self.create_dataclass(data.data['accountId'], data.data)
30-
31-
# No luck
32-
print("APIM and Accounts deprecated! File an issue on my repository. Check your input beforehand.")
3325
return None
3426

3527
async def fetch(self, id: int) -> Optional['Account']:
@@ -40,16 +32,8 @@ async def fetch(self, id: int) -> Optional['Account']:
4032
:param id: The id of the RecNet user.
4133
:return: An account object representing the data or nothing if not found.
4234
"""
43-
data: 'Response[AccountResponse]' = await self.rec_net.apim.accounts.account(id).make_request('get')
44-
if data.success and data.data: return self.create_dataclass(id, data.data)
45-
46-
# If APIM gets deprecated, fall back to accounts host
47-
print("APIM deprecated! File an issue on my repository. Check your input beforehand.")
48-
data: 'Response[AccountResponse]' = await self.rec_net.accounts.account(id).make_request('get')
35+
data: 'Response[AccountResponse]' = await self.rec_net.accounts(id).make_request('get')
4936
if data.success and data.data: return self.create_dataclass(id, data.data)
50-
51-
# No luck
52-
print("APIM and Accounts deprecated! File an issue on my repository. Check your input beforehand.")
5337
return None
5438

5539
async def get_many(self, names: List[str]) -> List['Account']:
@@ -62,16 +46,8 @@ async def get_many(self, names: List[str]) -> List['Account']:
6246
:return: A list of account objects.
6347
"""
6448
bulk = stringify_bulk(names)
65-
data: 'Response[List[AccountResponse]]' = await self.rec_net.apim.accounts.account.bulk.make_request('post', body = {'name': bulk})
66-
if data.success: return self.create_from_data_list(data.data)
67-
68-
# If APIM gets deprecated, fall back to accounts host
69-
print("APIM deprecated! File an issue on my repository. Check your input beforehand.")
70-
data: 'Response[List[AccountResponse]]' = await self.rec_net.accounts.account.bulk.make_request('post', body = {'name': bulk})
49+
data: 'Response[List[AccountResponse]]' = await self.rec_net.accounts.bulk.make_request('post', body = {'name': bulk})
7150
if data.success: return self.create_from_data_list(data.data)
72-
73-
# No luck
74-
print("APIM and Accounts deprecated! File an issue on my repository. Check your input beforehand.")
7551
return []
7652

7753
async def fetch_many(self, ids: List[int]) -> List['Account']:
@@ -83,16 +59,8 @@ async def fetch_many(self, ids: List[int]) -> List['Account']:
8359
:param ids: A list of ids.
8460
:return: A list of account objects.
8561
"""
86-
data: 'Response[List[AccountResponse]]' = await self.rec_net.apim.accounts.account.bulk.make_request('post', body = {'id': ids})
87-
if data.success: return self.create_from_data_list(data.data)
88-
89-
# If APIM gets deprecated, fall back to accounts host
90-
print("APIM deprecated! File an issue on my repository. Check your input beforehand.")
91-
data: 'Response[List[AccountResponse]]' = await self.rec_net.accounts.account.bulk.make_request('post', body = {'id': ids})
62+
data: 'Response[List[AccountResponse]]' = await self.rec_net.accounts.bulk.make_request('post', body = {'id': ids})
9263
if data.success: return self.create_from_data_list(data.data)
93-
94-
# No luck
95-
print("APIM and Accounts deprecated! File an issue on my repository. Check your input beforehand.")
9664
return []
9765

9866
async def search(self, query: str) -> List['Account']:
@@ -104,16 +72,8 @@ async def search(self, query: str) -> List['Account']:
10472
:param query: A search query string.
10573
:return: A list of account objects.
10674
"""
107-
data: 'Response[List[AccountResponse]]' = await self.rec_net.apim.accounts.account.search.make_request('get', params = {'name': str(query)})
75+
data: 'Response[List[AccountResponse]]' = await self.rec_net.accounts.search.make_request('get', params = {'name': str(query)})
10876
if data.success: return self.create_from_data_list(data.data)
109-
110-
# If APIM gets deprecated, fall back to accounts host
111-
print("APIM deprecated! File an issue on my repository. Check your input beforehand.")
112-
data: 'Response[List[AccountResponse]]' = await self.rec_net.accounts.account.search.make_request('get', params = {'name': str(query)})
113-
if data.success: return self.create_from_data_list(data.data)
114-
115-
# No luck
116-
print("APIM and Accounts deprecated! File an issue on my repository. Check your input beforehand.")
11777
return []
11878

11979
def create_dataclass(self, id: int, data: Optional['AccountResponse'] = None) -> 'Account':

src/recnetpy/managers/event_manager.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async def fetch(self, id: int) -> Optional['Event']:
2020
:param id: The id of the event.
2121
:return: An event object representing the data or nothing if not found.
2222
"""
23-
data: 'Response[EventResponse]' = await self.rec_net.api.playerevents.v1(id).make_request('get')
23+
data: 'Response[EventResponse]' = await self.rec_net.apim.playerevents.v1(id).make_request('get')
2424
if data.data: return self.create_dataclass(id, data.data)
2525
return None
2626

@@ -34,7 +34,7 @@ async def fetch_many(self, ids: List[int]) -> List['Event']:
3434
:param ids: A list of ids.
3535
:return: A list of event objects.
3636
"""
37-
data: 'Response[List[EventResponse]]' = await self.rec_net.api.playerevents.v1.bulk.make_request('post', body = {'Ids': ids})
37+
data: 'Response[List[EventResponse]]' = await self.rec_net.apim.playerevents.v1.bulk.make_request('post', body = {'Ids': ids})
3838
return self.create_from_data_list(data.data)
3939

4040
async def search(self, query: str, take: int = 16, skip: int = 0, sort: int = 0) -> List['Event']:
@@ -55,7 +55,7 @@ async def search(self, query: str, take: int = 16, skip: int = 0, sort: int = 0)
5555
'skip': skip,
5656
'sort': sort
5757
}
58-
data: 'Response[List[EventResponse]]' = await self.rec_net.api.playerevents.v1.search.make_request('get', params=params)
58+
data: 'Response[List[EventResponse]]' = await self.rec_net.apim.playerevents.v1.search.make_request('get', params=params)
5959
return self.create_from_data_list(data.data)
6060

6161
async def from_account(self, id: int, take: int = 16, skip: int = 0) -> List['Event']:
@@ -72,7 +72,7 @@ async def from_account(self, id: int, take: int = 16, skip: int = 0) -> List['Ev
7272
'take': take,
7373
'skip': skip,
7474
}
75-
data: 'Response[List[EventResponse]]' = await self.rec_net.api.playerevents.v1.creator(id).make_request('get', params=params)
75+
data: 'Response[List[EventResponse]]' = await self.rec_net.apim.playerevents.v1.creator(id).make_request('get', params=params)
7676
return self.create_from_data_list(data.data)
7777

7878
async def in_room(self, id: int, take: int = 16, skip: int = 0) -> List['Event']:
@@ -89,7 +89,7 @@ async def in_room(self, id: int, take: int = 16, skip: int = 0) -> List['Event']
8989
'take': take,
9090
'skip': skip,
9191
}
92-
data: 'Response[List[EventResponse]]' = await self.rec_net.api.playerevents.v1.room(id).make_request('get', params=params)
92+
data: 'Response[List[EventResponse]]' = await self.rec_net.apim.playerevents.v1.room(id).make_request('get', params=params)
9393
return self.create_from_data_list(data.data)
9494

9595
async def get_events(self, take: int = 16, skip: int = 0, sort: int = 0) -> List['Event']:
@@ -106,7 +106,7 @@ async def get_events(self, take: int = 16, skip: int = 0, sort: int = 0) -> List
106106
'skip': skip,
107107
'sort': sort
108108
}
109-
data: 'Response[List[EventResponse]]' = await self.rec_net.api.playerevents.v1.make_request('get', params=params)
109+
data: 'Response[List[EventResponse]]' = await self.rec_net.apim.playerevents.v1.make_request('get', params=params)
110110
return self.create_from_data_list(data.data)
111111

112112
def create_dataclass(self, id: int, data: Optional['EventResponse'] = None) -> 'Event':

src/recnetpy/managers/image_manager.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async def get(self, name: str) -> Optional['Image']:
2222
:param name: The name of the image.
2323
:return: An image object representing the data or nothing if not found.
2424
"""
25-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v4.bulk.make_request('post', body = {'Names': name})
25+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v4.bulk.make_request('post', body = {'Names': name})
2626
if data.data: return self.create_dataclass(id, data.data[0])
2727
return None
2828

@@ -38,7 +38,7 @@ async def get_many(self, names: List[str]) -> List['Image']:
3838
:param name: The name of the image.
3939
:return: A list of image objects.
4040
"""
41-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v4.bulk.make_request('post', body = {'Names': names})
41+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v4.bulk.make_request('post', body = {'Names': names})
4242
return self.create_from_data_list(data.data)
4343

4444

@@ -50,7 +50,7 @@ async def fetch(self, id: int) -> Optional['Image']:
5050
:param id: The id of the image.
5151
:return: An image object representing the data or nothing if not found.
5252
"""
53-
data: 'Response[ImageResponse]' = await self.rec_net.api.images.v4(id).make_request('get')
53+
data: 'Response[ImageResponse]' = await self.rec_net.apim.images.v4(id).make_request('get')
5454
if data.data: return self.create_dataclass(id, data.data)
5555
return None
5656

@@ -64,7 +64,7 @@ async def fetch_many(self, ids: List[int]) -> List['Image']:
6464
:param ids: A list of ids.
6565
:return: A list of image objects.
6666
"""
67-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v3.bulk.make_request('post', body = {'Ids': ids})
67+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v3.bulk.make_request('post', body = {'Ids': ids})
6868
return self.create_from_data_list(data.data)
6969

7070
async def from_account(self, id: int, take: int = 16, skip: int = 0, sort: int = 0) -> List['Image']:
@@ -83,7 +83,7 @@ async def from_account(self, id: int, take: int = 16, skip: int = 0, sort: int =
8383
'skip': skip,
8484
'sort': sort
8585
}
86-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v4.player(id).make_request('get', params=params)
86+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v4.player(id).make_request('get', params=params)
8787
return self.create_from_data_list(data.data)
8888

8989
async def player_feed(self, id: int, take: int = 16, skip: int = 0) -> List['Image']:
@@ -100,7 +100,7 @@ async def player_feed(self, id: int, take: int = 16, skip: int = 0) -> List['Ima
100100
'take': take,
101101
'skip': skip
102102
}
103-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v3.feed.player(id).make_request('get', params=params)
103+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v3.feed.player(id).make_request('get', params=params)
104104
return self.create_from_data_list(data.data)
105105

106106
async def during_event(self, id: int, take: int = 16, skip: int = 0) -> List['Image']:
@@ -117,7 +117,7 @@ async def during_event(self, id: int, take: int = 16, skip: int = 0) -> List['Im
117117
'take': take,
118118
'skip': skip
119119
}
120-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v1.playerevent(id).make_request('get', params=params)
120+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v1.playerevent(id).make_request('get', params=params)
121121
return self.create_from_data_list(data.data)
122122

123123
async def in_room(self, id: int, take: int = 16, skip: int = 0, sort: int = 0) -> List['Image']:
@@ -136,7 +136,7 @@ async def in_room(self, id: int, take: int = 16, skip: int = 0, sort: int = 0) -
136136
'skip': skip,
137137
'sort': sort
138138
}
139-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v4.room(id).make_request('get', params=params)
139+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v4.room(id).make_request('get', params=params)
140140
return self.create_from_data_list(data.data)
141141

142142
async def front_page(self, take: int = 16, skip: int = 0) -> List['Image']:
@@ -151,7 +151,7 @@ async def front_page(self, take: int = 16, skip: int = 0) -> List['Image']:
151151
'take': take,
152152
'skip': skip
153153
}
154-
data: 'Response[List[ImageResponse]]' = await self.rec_net.api.images.v3.feed('global').make_request('get', params=params)
154+
data: 'Response[List[ImageResponse]]' = await self.rec_net.apim.images.v3.feed('global').make_request('get', params=params)
155155
return self.create_from_data_list(data.data)
156156

157157
def create_dataclass(self, id: int, data: Optional['ImageResponse'] = None) -> 'Image':

src/recnetpy/managers/invention_manager.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async def fetch(self, id: int) -> Optional['Invention']:
2020
:param id: The id of the invention.
2121
:return: An invention object representing the data or nothing if not found.
2222
"""
23-
data: 'Response[InventionResponse]' = await self.rec_net.api.inventions.v1.make_request('get', params = {'inventionId': id})
23+
data: 'Response[InventionResponse]' = await self.rec_net.apim.inventions.v1.make_request('get', params = {'inventionId': id})
2424
if data.data: return self.create_dataclass(id, data.data)
2525
return None
2626

@@ -38,7 +38,7 @@ async def search(self, query: str, take: int = 16) -> List['Invention']:
3838
'value': str(query),
3939
'take': take
4040
}
41-
data: Response[List[InventionResponse]] = await self.rec_net.api.inventions.v2.search.make_request('get', params = params)
41+
data: Response[List[InventionResponse]] = await self.rec_net.apim.inventions.v2.search.make_request('get', params = params)
4242
return self.create_from_data_list(data.data)
4343

4444
async def featured(self, take: int = 16, skip: int = 0) -> List['Invention']:
@@ -53,7 +53,7 @@ async def featured(self, take: int = 16, skip: int = 0) -> List['Invention']:
5353
'take': take,
5454
'skip': skip
5555
}
56-
data: 'Response[List[InventionResponse]]' = await self.rec_net.api.inventions.v1.featured.make_request('get', params = params)
56+
data: 'Response[List[InventionResponse]]' = await self.rec_net.apim.inventions.v1.featured.make_request('get', params = params)
5757
return self.create_from_data_list(data.data)
5858

5959
async def top_today(self) -> List['Invention']:
@@ -62,7 +62,7 @@ async def top_today(self) -> List['Invention']:
6262
6363
:return: A list of invention objects.
6464
"""
65-
data: 'Response[List[InventionResponse]]' = await self.rec_net.api.inventions.v1.toptoday.make_request('get')
65+
data: 'Response[List[InventionResponse]]' = await self.rec_net.apim.inventions.v1.toptoday.make_request('get')
6666
return self.create_from_data_list(data.data)
6767

6868
def create_dataclass(self, id: int, data: Optional['InventionResponse'] = None) -> 'Invention':

src/recnetpy/rest/http_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,20 @@
33

44
from asyncio import Lock, get_running_loop, AbstractEventLoop, sleep
55
from aiohttp import ClientSession, TCPConnector
6+
from .response import Response
67

78
from .exceptions import *
89

910
if TYPE_CHECKING:
1011
from .request import Request
11-
from .response import Response
12+
1213

1314
RATE_LIMIT = 30
1415

1516
def verify_status(resp: Response):
1617
match resp.status:
18+
case 200:
19+
...
1720
case 400:
1821
raise BadRequest(resp)
1922
case 401:

src/recnetpy/rest/route_manager.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ class RouteManager:
1212
def __init__(self, api_key: str):
1313
self.client = HTTPClient(api_key)
1414

15+
@property
16+
def apim(self) -> RouteBuilder:
17+
"""
18+
Creates a route builer with a base url
19+
for apim endpoint requests.
20+
21+
@return: A apim route builder.
22+
"""
23+
return RouteBuilder(self.client, "https://apim.rec.net/public/apis/api/", use_auth=True)
24+
1525
@property
1626
def api(self) -> RouteBuilder:
1727
"""
@@ -20,7 +30,7 @@ def api(self) -> RouteBuilder:
2030
2131
@return: A api route builder.
2232
"""
23-
return RouteBuilder(self.client, "https://api.rec.net/api/")
33+
return RouteBuilder(self.client, "https://api.rec.net/api/", use_auth=True)
2434

2535
@property
2636
def rooms(self) -> RouteBuilder:
@@ -40,7 +50,7 @@ def accounts(self) -> RouteBuilder:
4050
4151
@return: A accounts route builder.
4252
"""
43-
return RouteBuilder(self.client, "https://accounts.rec.net/")
53+
return RouteBuilder(self.client, "https://apim.rec.net/public/accounts/account/", use_auth=True)
4454

4555
@property
4656
def websiteapi(self) -> RouteBuilder:
@@ -52,16 +62,6 @@ def websiteapi(self) -> RouteBuilder:
5262
"""
5363
return RouteBuilder(self.client, "https://websiteapi.rec.net/")
5464

55-
@property
56-
def apim(self) -> RouteBuilder:
57-
"""
58-
Creates a route builer with a base url
59-
for apim API endpoint requests.
60-
61-
@return: An apim API route builder.
62-
"""
63-
return RouteBuilder(self.client, "https://apim.rec.net/")
64-
6565
@property
6666
def clubs(self) -> RouteBuilder:
6767
"""

0 commit comments

Comments
 (0)