Add support for changing base url for cardcast_api.py
This commit is contained in:
parent
d596d55eff
commit
ef0bef0bcc
|
@ -2,7 +2,8 @@ import json
|
|||
import random
|
||||
import urllib.request
|
||||
|
||||
base_url = 'https://api.cardcastgame.com/v1/decks/'
|
||||
default_base_url = 'https://api.cardcastgame.com/v1/decks/'
|
||||
default_timeout = 10
|
||||
|
||||
class CodeValidationError(Exception): pass
|
||||
|
||||
|
@ -16,19 +17,24 @@ def check_code(code):
|
|||
elif any(not accepted_character(char) for char in code):
|
||||
raise CodeValidationError('Code %s contains disallowed characters (0-9 and A-Z are allowed' % code)
|
||||
|
||||
def request(additional, timeout):
|
||||
def request(base_url, additional, timeout):
|
||||
if base_url is None:
|
||||
base_url = default_base_url
|
||||
if timeout is None:
|
||||
timeout = default_timeout
|
||||
|
||||
url = base_url + additional
|
||||
with urllib.request.urlopen(url, timeout = timeout) as r:
|
||||
return json.loads(r.read())
|
||||
|
||||
def info(code, *, timeout = 10):
|
||||
def info(code, *, base_url = None, timeout = None):
|
||||
check_code(code)
|
||||
return request(code, timeout)
|
||||
return request(base_url, code, timeout)
|
||||
|
||||
def cards(code, *, timeout = 10):
|
||||
def cards(code, *, base_url = None, timeout = None):
|
||||
check_code(code)
|
||||
|
||||
data = request(code + '/cards', timeout)
|
||||
data = request(base_url, code + '/cards', timeout)
|
||||
|
||||
calls = [i['text'] for i in data['calls']]
|
||||
responses = [i['text'] for i in data['responses']]
|
||||
|
@ -41,17 +47,17 @@ def cards(code, *, timeout = 10):
|
|||
|
||||
return (calls, responses)
|
||||
|
||||
def random_code(*, timeout = 10, count = None):
|
||||
def random_code(*, base_url = None, timeout = None, count = None):
|
||||
|
||||
if count is None:
|
||||
# Get number of cards
|
||||
results = request('?category=&direction=desc&limit=1&sort=rating&offset=0', timeout)
|
||||
results = request(base_url, '?category=&direction=desc&limit=1&sort=rating&offset=0', timeout)
|
||||
count = results['results']['count']
|
||||
|
||||
# Generate a random number [0, count[
|
||||
offset = random.randint(0, count - 1)
|
||||
|
||||
# Get the data on the selected deck
|
||||
results = request('?category=&direction=desc&limit=1&sort=rating&offset=%i' % offset, timeout)
|
||||
results = request(base_url, '?category=&direction=desc&limit=1&sort=rating&offset=%i' % offset, timeout)
|
||||
|
||||
return (results['results']['data'][0]['code'], count)
|
||||
|
|
Loading…
Reference in New Issue