From d3092bb1837f79dcb621bd3c96c3ca2e9ede7be0 Mon Sep 17 00:00:00 2001 From: Dean Moore Date: Tue, 3 Sep 2019 14:19:02 +0100 Subject: [PATCH 1/2] Added function to retrieve all actions --- foaas.py | 30 ++++++++++++++++++++++++++++++ tests.py | 6 +++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/foaas.py b/foaas.py index 10374b6..e8b3dcc 100644 --- a/foaas.py +++ b/foaas.py @@ -49,21 +49,37 @@ def html(self): class Fuck(object): actions = { + 'anyway': 'anyway/{company}/{from}', + 'asshole': 'asshole/{from}', 'awesome': 'awesome/{from}', + 'back': 'back/{name}/{from}', + 'bag': 'bag/{from}', 'ballmer': 'ballmer/{name}/{company}/{from}', + 'bday': 'bday/{name}/{from}', 'because': 'because/{from}', + 'blackadder': 'blackadder/{name}/{from}', + 'bm': 'bm/{name}/{from}', + 'bucket': 'bucket/{from}', 'bus': 'bus/{name}/{from}', 'bye': 'bye/{from}', 'caniuse': 'caniuse/{name}/{from}', 'chainsaw': 'chainsaw/{name}/{from}', 'cool': 'cool/{from}', + 'cup': 'cup/{from}', + 'dalton': 'dalton/{name}/{from}', + 'deraadt': 'deraadt/{name}/{from}', 'diabetes': 'diabetes/{from}', 'donut': 'donut/{name}/{from}', + 'dosomething': 'dosomething/{do}/{something}/{from}', 'everyone': 'everyone/{from}', 'everything': 'everything/{from}', + 'family': 'family/{from}', 'fascinating': 'fascinating/{from}', + 'fewer': 'fewer/{name}/{from}', 'field': 'field/{name}/{from}/{reference}', 'flying': 'flying/{from}', + 'ftfy': 'ftfy/{from}', + 'fts': 'fts/{name}/{from}', 'king': 'king/{name}/{from}', 'life': 'life/{from}', 'linus': 'linus/{name}/{from}', @@ -115,6 +131,19 @@ def random(self, **kwargs): choice = getattr(self, random.choice(applicable_actions)) return choice(**kwargs) + def load_actions(self): + """ + Get the current operations from foaas.com + """ + url = "https://foaas.com/operations" + fucks = requests.get(url) + for eachFuck in fucks.json(): + action = eachFuck['url'].split("/")[1] + fields = "" + for eachField in eachFuck['fields']: + fields += "{{{}}}/".format(eachField['field']) + self.actions[action] = "{}/{}".format(action, fields) + def build_url(self, path, **kwargs): # use from_ since from is a keyword. *grumble* params = dict([(k.rstrip('_'), quote(v)) for k, v @@ -126,6 +155,7 @@ def build_url(self, path, **kwargs): fuck = Fuck() +fuck.load_actions() if __name__ == '__main__': parser = OptionParser() diff --git a/tests.py b/tests.py index 35101f7..8aaf621 100644 --- a/tests.py +++ b/tests.py @@ -8,16 +8,16 @@ def setUp(self): def test_url(self): url = self.fuck.off(name='Alice', from_='Bob').url - self.assertEqual('http://foaas.herokuapp.com/off/Alice/Bob', url) + self.assertEqual('http://foaas.herokuapp.com/off/Alice/Bob/', url) def test_url_secure(self): secure_fuck = Fuck(secure=True) url = secure_fuck.everything(from_='Bob', secure=True).url - self.assertEqual('https://foaas.herokuapp.com/everything/Bob', url) + self.assertEqual('https://foaas.herokuapp.com/everything/Bob/', url) def test_url_quoting(self): url = self.fuck.donut(name='Alice!', from_='Bobby McGee').url - self.assertEqual('http://foaas.herokuapp.com/donut/Alice%21/Bobby%20McGee', url) + self.assertEqual('http://foaas.herokuapp.com/donut/Alice%21/Bobby%20McGee/', url) def test_html(self): html = self.fuck.thanks(from_='Bob').html From 53b3ad64437812b7e3f3bc7ee83406d5f66ebcd1 Mon Sep 17 00:00:00 2001 From: Dean Moore Date: Tue, 3 Sep 2019 14:20:27 +0100 Subject: [PATCH 2/2] Removed unneeded data from self.actions --- foaas.py | 51 +-------------------------------------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/foaas.py b/foaas.py index e8b3dcc..64d63f1 100644 --- a/foaas.py +++ b/foaas.py @@ -48,56 +48,7 @@ def html(self): class Fuck(object): - actions = { - 'anyway': 'anyway/{company}/{from}', - 'asshole': 'asshole/{from}', - 'awesome': 'awesome/{from}', - 'back': 'back/{name}/{from}', - 'bag': 'bag/{from}', - 'ballmer': 'ballmer/{name}/{company}/{from}', - 'bday': 'bday/{name}/{from}', - 'because': 'because/{from}', - 'blackadder': 'blackadder/{name}/{from}', - 'bm': 'bm/{name}/{from}', - 'bucket': 'bucket/{from}', - 'bus': 'bus/{name}/{from}', - 'bye': 'bye/{from}', - 'caniuse': 'caniuse/{name}/{from}', - 'chainsaw': 'chainsaw/{name}/{from}', - 'cool': 'cool/{from}', - 'cup': 'cup/{from}', - 'dalton': 'dalton/{name}/{from}', - 'deraadt': 'deraadt/{name}/{from}', - 'diabetes': 'diabetes/{from}', - 'donut': 'donut/{name}/{from}', - 'dosomething': 'dosomething/{do}/{something}/{from}', - 'everyone': 'everyone/{from}', - 'everything': 'everything/{from}', - 'family': 'family/{from}', - 'fascinating': 'fascinating/{from}', - 'fewer': 'fewer/{name}/{from}', - 'field': 'field/{name}/{from}/{reference}', - 'flying': 'flying/{from}', - 'ftfy': 'ftfy/{from}', - 'fts': 'fts/{name}/{from}', - 'king': 'king/{name}/{from}', - 'life': 'life/{from}', - 'linus': 'linus/{name}/{from}', - 'madison': 'madison/{name}/{from}', - 'nugget': 'nugget/{name}/{from}', - 'off': 'off/{name}/{from}', - 'outside': 'outside/{name}/{from}', - 'pink': 'pink/{from}', - 'thanks': 'thanks/{from}', - 'that': 'that/{from}', - 'thing': '{thing}/{from}', - 'this': 'this/{from}', - 'shakespeare': 'shakespeare/{name}/{from}', - 'what': 'what/{from}', - 'xmas': 'xmas/{name}/{from}', - 'yoda': 'yoda/{name}/{from}', - 'you': 'you/{name}/{from}', - } + actions = {} def __init__(self, secure=False, language=None): self.secure = secure