diff options
Diffstat (limited to 'Pb_Api')
| -rw-r--r-- | Pb_Api/ImGradient/Params.py | 0 | ||||
| -rw-r--r-- | Pb_Api/ImGradient/__init__.py | 30 | ||||
| -rw-r--r-- | Pb_Api/ImGrid/Params.py | 0 | ||||
| -rw-r--r-- | Pb_Api/ImGrid/__init__.py | 0 | ||||
| -rw-r--r-- | Pb_Api/ImPattern/Params.py | 18 | ||||
| -rwxr-xr-x | Pb_Api/ImPattern/__init__.py | 19 | ||||
| -rw-r--r-- | Pb_Api/Param/Image_Url.py | 7 | ||||
| -rw-r--r-- | Pb_Api/Param/MultiSelect.py | 16 | ||||
| -rw-r--r-- | Pb_Api/Param/String.py | 3 | ||||
| -rw-r--r-- | Pb_Api/Param/Username.py | 7 | ||||
| -rw-r--r-- | Pb_Api/Param/__init__.py | 23 | ||||
| -rw-r--r-- | Pb_Api/Params.py | 41 | ||||
| -rw-r--r-- | Pb_Api/__init__.py | 33 |
13 files changed, 197 insertions, 0 deletions
diff --git a/Pb_Api/ImGradient/Params.py b/Pb_Api/ImGradient/Params.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Pb_Api/ImGradient/Params.py diff --git a/Pb_Api/ImGradient/__init__.py b/Pb_Api/ImGradient/__init__.py new file mode 100644 index 0000000..18c27c0 --- /dev/null +++ b/Pb_Api/ImGradient/__init__.py @@ -0,0 +1,30 @@ +#!/usr/bin/python2.7 +import urllib +import urllib2 +import simplejson as json +import random +import sys +from lib.utils import post_request, Pb_Api + + +IMGRADIENT_URL = "http://asdf.us/im/api/imgradient" +#from Api.ImGradient.Api import * + +class ImGradientApi(Pb_Api): + def __init__(self): + self.url = IMGRADIENT_URL + self._required_keys = [ + "width", "height", + "color1", "color2", + "stripes", + "stripenumber", "stripeintensity", + "blurriness", + "contrast", + "brightness", "saturation", "hue", + "halftone", + "bevel", "percentbeveled", + "rotate", "flip", "flop", "tilt", + "filetype", + "gradienttype", + "username", + ] diff --git a/Pb_Api/ImGrid/Params.py b/Pb_Api/ImGrid/Params.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Pb_Api/ImGrid/Params.py diff --git a/Pb_Api/ImGrid/__init__.py b/Pb_Api/ImGrid/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Pb_Api/ImGrid/__init__.py diff --git a/Pb_Api/ImPattern/Params.py b/Pb_Api/ImPattern/Params.py new file mode 100644 index 0000000..9c86f7b --- /dev/null +++ b/Pb_Api/ImPattern/Params.py @@ -0,0 +1,18 @@ +#!/usr/bin/python2.7 +from Pb_Api.Params import Pb_Api_Params +from Pb_Api.Param.Username import Pb_Api_Param_Username +from Pb_Api.Param.String import Pb_Api_Param_String +from Pb_Api.Param.MultiSelect import Pb_Api_Param_MultiSelect + +pattern_url_options = [ + { "value":"1.png", "weight":1 }, + { "value":"2.png", "weight":1 }, +] +class ImPattern_Params(Pb_Api_Params): + def __init__(self): + self.params = [ + Pb_Api_Param_Username(name="username", required=1), + Pb_Api_Param_Image_Url(name="image_url", required=1), + Pb_Api_Param_MultiSelect(name="pattern_url", required=1, options=pattern_url_options + ), + ] diff --git a/Pb_Api/ImPattern/__init__.py b/Pb_Api/ImPattern/__init__.py new file mode 100755 index 0000000..f05cee9 --- /dev/null +++ b/Pb_Api/ImPattern/__init__.py @@ -0,0 +1,19 @@ +#!/usr/bin/python2.7 +import urllib +import urllib2 +import simplejson as json +import random +import sys +from lib.utils import post_request, Pb_Api + +IMPATTERN_URL = "http://asdf.us/im/api/impattern" + +#ok what about here? + +class ImPattern(Pb_Api): + def __init__(self): + self.url = IMPATTERN_URL + def params(self): + return ImPattern_Params() + + diff --git a/Pb_Api/Param/Image_Url.py b/Pb_Api/Param/Image_Url.py new file mode 100644 index 0000000..d199e11 --- /dev/null +++ b/Pb_Api/Param/Image_Url.py @@ -0,0 +1,7 @@ +from config import TEST_URL +from Pb_Api.Param.String import Pb_Api_Param_String + +class Pb_Api_Param_Image_Url(Pb_Api_Param_String): + def __init__(self, options): + super(Pb_Api_Param_Image_Url, self).__init__(*args, **kwargs) + self.value(TEST_URL, autogenerated=1) diff --git a/Pb_Api/Param/MultiSelect.py b/Pb_Api/Param/MultiSelect.py new file mode 100644 index 0000000..c482dfd --- /dev/null +++ b/Pb_Api/Param/MultiSelect.py @@ -0,0 +1,16 @@ +from Pb_Api.Param import Pb_Api_Param + +class Pb_Api_Param_MultiSelect(Pb_Api_Param): + def __init__(self, options): + super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) + def options(self): + return self.options + def value(self, *args): + if len(args) > 1: + valid = False + for i in self.options: + if args[0] == i['value']: valid = True + if not valid : raise ValueError + super(Pb_Api_Param_MultiSelect, self).value(args[0]) + def randomize(self): + pass diff --git a/Pb_Api/Param/String.py b/Pb_Api/Param/String.py new file mode 100644 index 0000000..f7d873c --- /dev/null +++ b/Pb_Api/Param/String.py @@ -0,0 +1,3 @@ +class Pb_Api_Param_String(Pb_Api_Param): + def __init__(self, *args, **kwargs): + super(Pb_Api_Param_String, self).__init__(*args, **kwargs) diff --git a/Pb_Api/Param/Username.py b/Pb_Api/Param/Username.py new file mode 100644 index 0000000..80b445c --- /dev/null +++ b/Pb_Api/Param/Username.py @@ -0,0 +1,7 @@ +from config import USERNAME +from Pb_Api.Param.String import Pb_Api_Param_String + +class Pb_Api_Param_Username(Pb_Api_Param_String): + def __init__(self, options): + super(Pb_Api_Param_Username, self).__init__(*args, **kwargs) + self.value(USERNAME, autogenerated=1) diff --git a/Pb_Api/Param/__init__.py b/Pb_Api/Param/__init__.py new file mode 100644 index 0000000..af13a2a --- /dev/null +++ b/Pb_Api/Param/__init__.py @@ -0,0 +1,23 @@ +class Pb_Api_Param(object): + def name(self): + return self.name + def required(self): + return self.required + + def manually_set(self, *args): + if len(args) >= 1: + self._manually_set = args[0] + return self._manually_set + + def value(self, *args, **kwargs): + if len(args) >= 1: + self._value = args[0] + if not 'autogenerated' in kwargs: + self.manually_set(1) + self.is_ready(1) + return self._value + + def is_ready(self, *args): + if len(args) >= 1: + self._is_ready = args[0] + return self._is_ready or not self.required() diff --git a/Pb_Api/Params.py b/Pb_Api/Params.py new file mode 100644 index 0000000..b96a9af --- /dev/null +++ b/Pb_Api/Params.py @@ -0,0 +1,41 @@ +class Pb_Api_Params(object): + def _weighted_choice(self, param): + weights_total = sum(map(lambda x: x["weight"], param)) + choice = random.randint(0, weights_total) + position = 0 + for elem in param: + position += elem["weight"] + if position >= choice: + return elem["value"] + def _default_choice(self, param): + heaviest_idx = 0 + heaviest_weight = 0 + idx = 0 + for elem in param: + if elem["weight"] > heaviest_weight: + heaviest_weight = elem["weight"] + heaviest_idx = idx; + idx += 1 + return param[heaviest_idx]["value"] + def randomize(self): + for el in self.params: + if el.manually_set: + continue + el.randomize() + def is_ready(self): + for p in self.params(): + if not p.is_ready(): + return 0 + return 1 + def params(self): + return self._params + def param(self, name): + for p in self.params(): + if p.name() == name: + return p + return None + def as_hash(self): + result = {} + for p in self.params(): + result[p.name()] = p.value() + return result diff --git a/Pb_Api/__init__.py b/Pb_Api/__init__.py new file mode 100644 index 0000000..14bf18e --- /dev/null +++ b/Pb_Api/__init__.py @@ -0,0 +1,33 @@ +import urllib +import urllib2 +import sys +import random +import simplejson as json + +class Pb_Api: + def __init__(self): + self._required_keys = [] + self.url = "" + def new(self, params): + for k in self._required_keys: + if not k in params: + params[k] = ""; + self.current_params = params + return json.loads(post_request(self.url, self.current_params)) + def post_request(self, url, params): + params = urllib.urlencode(params) + sys.stderr.write(params) + headers = { + "Content-type": "application/x-www-form-urlencoded", + "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36", + "Accept": "text/plain" + } + try: + req = urllib2.Request(url, params, headers) + response = urllib2.urlopen(req) + return response.read() + except Exception as e: + sys.stderr.write(str(e)) + raise + def call(self, params): + return json.loads(self.post_request(self.url, params)) |
