Skip to content

Commit 9a364d8

Browse files
committed
Refactor resource name identical to class name
1 parent 83fe44e commit 9a364d8

File tree

1 file changed

+18
-26
lines changed

1 file changed

+18
-26
lines changed

pyalex/api.py

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ def _get_multi_items(self, record_list):
198198

199199
return self.filter(openalex_id="|".join(record_list)).get()
200200

201+
def _full_collection_name(self):
202+
203+
return config.openalex_url + "/" + self.__class__.__name__.lower()
204+
201205
def __getattr__(self, key):
202206

203207
if key == "groupby":
@@ -218,7 +222,7 @@ def __getitem__(self, record_id):
218222
if isinstance(record_id, list):
219223
return self._get_multi_items(record_id)
220224

221-
url = self.url_collection + "/" + record_id
225+
url = self._full_collection_name() + "/" + record_id
222226
params = {"api_key": config.api_key} if config.api_key else {}
223227
res = requests.get(
224228
url,
@@ -228,13 +232,13 @@ def __getitem__(self, record_id):
228232
res.raise_for_status()
229233
res_json = res.json()
230234

231-
return self.obj(res_json)
235+
return self.resource_class(res_json)
232236

233237
@property
234238
def url(self):
235239

236240
if not self.params:
237-
return self.url_collection
241+
return self._full_collection_name()
238242

239243
l_params = []
240244
for k, v in self.params.items():
@@ -250,7 +254,9 @@ def url(self):
250254
l_params.append(k + "=" + quote_plus(str(v)))
251255

252256
if l_params:
253-
return self.url_collection + "?" + "&".join(l_params)
257+
return self._full_collection_name() + "?" + "&".join(l_params)
258+
259+
return self._full_collection_name()
254260

255261
def count(self):
256262
_, m = self.get(return_meta=True, per_page=1)
@@ -289,7 +295,7 @@ def get(self, return_meta=False, page=None, per_page=None, cursor=None):
289295
if "group-by" in self.params:
290296
results = res_json["group_by"]
291297
else:
292-
results = [self.obj(ent) for ent in res_json["results"]]
298+
results = [self.resource_class(ent) for ent in res_json["results"]]
293299

294300
# return result and metadata
295301
if return_meta:
@@ -369,45 +375,31 @@ def select(self, s):
369375

370376

371377
class Works(BaseOpenAlex):
372-
373-
url_collection = config.openalex_url + "/works"
374-
obj = Work
378+
resource_class = Work
375379

376380

377381
class Authors(BaseOpenAlex):
378-
379-
url_collection = config.openalex_url + "/authors"
380-
obj = Author
382+
resource_class = Author
381383

382384

383385
class Sources(BaseOpenAlex):
384-
385-
url_collection = config.openalex_url + "/sources"
386-
obj = Source
386+
resource_class = Source
387387

388388

389389
class Institutions(BaseOpenAlex):
390-
391-
url_collection = config.openalex_url + "/institutions"
392-
obj = Institution
390+
resource_class = Institution
393391

394392

395393
class Concepts(BaseOpenAlex):
396-
397-
url_collection = config.openalex_url + "/concepts"
398-
obj = Concept
394+
resource_class = Concept
399395

400396

401397
class Publishers(BaseOpenAlex):
402-
403-
url_collection = config.openalex_url + "/publishers"
404-
obj = Publisher
398+
resource_class = Publisher
405399

406400

407401
class Funders(BaseOpenAlex):
408-
409-
url_collection = config.openalex_url + "/funders"
410-
obj = Funder
402+
resource_class = Funder
411403

412404
# deprecated
413405

0 commit comments

Comments
 (0)