From ef0bef0bccb94676569629a56e1e49e9c6eaaf91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Fri, 10 May 2019 17:52:22 +0300 Subject: [PATCH] Add support for changing base url for cardcast_api.py --- cardcast_api.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/cardcast_api.py b/cardcast_api.py index c58ae88..962ed98 100644 --- a/cardcast_api.py +++ b/cardcast_api.py @@ -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)