summaryrefslogtreecommitdiff
path: root/Pb_Api
diff options
context:
space:
mode:
Diffstat (limited to 'Pb_Api')
-rw-r--r--Pb_Api/ImGradient/Params.py0
-rw-r--r--Pb_Api/ImGradient/__init__.py30
-rw-r--r--Pb_Api/ImGrid/Params.py0
-rw-r--r--Pb_Api/ImGrid/__init__.py0
-rw-r--r--Pb_Api/ImPattern/Params.py18
-rwxr-xr-xPb_Api/ImPattern/__init__.py19
-rw-r--r--Pb_Api/Param/Image_Url.py7
-rw-r--r--Pb_Api/Param/MultiSelect.py16
-rw-r--r--Pb_Api/Param/String.py3
-rw-r--r--Pb_Api/Param/Username.py7
-rw-r--r--Pb_Api/Param/__init__.py23
-rw-r--r--Pb_Api/Params.py41
-rw-r--r--Pb_Api/__init__.py33
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))