Browse Source

Refactor using a InformationRetriever base classe

master
Dimitri Merejkowsky 5 years ago
parent
commit
aa6054a628
1 changed files with 22 additions and 23 deletions
  1. +22
    -23
      sources/marvel/marvel_04.py

+ 22
- 23
sources/marvel/marvel_04.py View File

@@ -29,46 +29,45 @@ class Authorization:
params["hash"] = digest params["hash"] = digest
return params return params



class CharacterDescriptionGetter:
class InformationRetriever:
base_url = "http://gateway.marvel.com/v1/public" base_url = "http://gateway.marvel.com/v1/public"


def __init__(self, auth): def __init__(self, auth):
self.auth = auth self.auth = auth


def get_character_description(self, name):
def make_request(self, path, query_params):
params = self.auth.generate_params() params = self.auth.generate_params()
params["name"] = name
url = CharacterDescriptionGetter.base_url + "/characters"
params.update(query_params)
url = InformationRetriever.base_url + path
response = requests.get(url, params=params) response = requests.get(url, params=params)
status_code = response.status_code status_code = response.status_code
if status_code != 200: if status_code != 200:
sys.exit("got status: " + str(status_code)) sys.exit("got status: " + str(status_code))
body = response.json() body = response.json()
description = body["data"]["results"][0]["description"]
attribution = body["attributionText"] attribution = body["attributionText"]
return (description, attribution)
return (body, attribution)




class CreatorNumberOfSeriesGetter:
base_url = "http://gateway.marvel.com/v1/public"
class CharacterDescriptionGetter(InformationRetriever):

def get_character_description(self, name):
params = {"name": name}
body, attribution = self.make_request("/characters", params)
first_result = body["data"]["results"][0]
description = first_result["description"]
return (description, attribution)


def __init__(self, auth):
self.auth = auth
class CreatorNumberOfSeriesGetter(InformationRetriever):


def get_number_of_series(self, first_name, last_name): def get_number_of_series(self, first_name, last_name):
params = self.auth.generate_params()
params["firstName"] = first_name
params["lastName"] = last_name
url = CreatorNumberOfSeriesGetter.base_url + "/creators"
response = requests.get(url, params=params)
status_code = response.status_code
if status_code != 200:
sys.exit("got status: " + str(status_code))
body = response.json()
result = body["data"]["results"][0]
attribution = body["attributionText"]
return result["series"]["available"], attribution
params = {
"firstName": first_name,
"lastName": last_name,
}
body, attribution = self.make_request("/creators", params)
first_result = body["data"]["results"][0]
return (first_result["series"]["available"], attribution)




class Display: class Display: