From 4c045a3fe05f505eb0110da2c653ea3c2adc0e5c Mon Sep 17 00:00:00 2001 From: Nanda Scott Date: Tue, 6 Feb 2018 21:52:21 -0500 Subject: [PATCH] Added a class for using the search endpoint. --- scrython/__init__.py | 1 + scrython/cards/__init__.py | 1 + scrython/cards/search.py | 43 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 scrython/cards/search.py diff --git a/scrython/__init__.py b/scrython/__init__.py index 2b79c3d..e92d240 100644 --- a/scrython/__init__.py +++ b/scrython/__init__.py @@ -6,6 +6,7 @@ from scrython.cards import Mtgo from scrython.cards import Multiverse from scrython.cards import Named from scrython.cards import Random +from scrython.cards import Search #Import classes from rulings from scrython.rulings import Mtgo diff --git a/scrython/cards/__init__.py b/scrython/cards/__init__.py index f0f191d..9939786 100644 --- a/scrython/cards/__init__.py +++ b/scrython/cards/__init__.py @@ -5,3 +5,4 @@ from .mtgo import Mtgo from .multiverse import Multiverse from .named import Named from .randomcard import Random +from .search import Search diff --git a/scrython/cards/search.py b/scrython/cards/search.py new file mode 100644 index 0000000..669c6bb --- /dev/null +++ b/scrython/cards/search.py @@ -0,0 +1,43 @@ +from .scryfall_object import ScryfallObject +import urllib.parse + +class Search(ScryfallObject): + def __init__(self, **kwargs): + self.q = kwargs.get('q') + self.order = kwargs.get('order') + self.dict = {} + + if self.q is not None: + self.dict['q'] = self.q + + if self.order is not None: + self.dict['order'] = self.order + + self.args = urllib.parse.urlencode(self.dict) + self.url = 'cards/search?' + self.args + + super(Search, self).__init__(self.url) + + def __checkForKey(self, key): + try: + return self.scryfallJson[key] + except KeyError: + return None + + def object(self): + if self.__checkForKey('object') is None: + return KeyError('This card has no associated object key.') + + return self.scryfallJson['object'] + + def total_cards(self): + if self.__checkForKey('total_cards') is None: + return KeyError('This card has no associated total cards key.') + + return self.scryfallJson['total_cards'] + + def data(self): + if self.__checkForKey('data') is None: + return KeyError('This card has no associated data key.') + + return self.scryfallJson['data']