diff options
| -rwxr-xr-x | Pb/Breaker/__init__.py | 20 | ||||
| -rw-r--r-- | Pb/Params/__init__.py | 4 | ||||
| -rw-r--r-- | Pb/__init__.py | 27 | ||||
| -rwxr-xr-x | pbserver.py | 7 |
4 files changed, 33 insertions, 25 deletions
diff --git a/Pb/Breaker/__init__.py b/Pb/Breaker/__init__.py index 14e33b5..2d2f573 100755 --- a/Pb/Breaker/__init__.py +++ b/Pb/Breaker/__init__.py @@ -17,28 +17,32 @@ HEADER_OFFSET = 2000 class Breaker(Pb): def __init__(self, url=None, breaktype=None, finalformat=DEFAULT_FINALFORMAT, - breakmode=None, breakangle=None, username=None, expanded=None): + breakmode=None, breakangle=None, username=None, expanded=None, firsttime=None): super(Breaker,self).__init__(); self.params.breaktype = self._get_breaktype(breaktype); self.params.url = url _frame = inspect.currentframe(); - _args_vals = inspect.getargvalues(frame); + _args_vals = inspect.getargvalues(_frame); for arg in _args_vals.args: - if arg not in ['breaktype', 'url']: - self.params.__setattr__(arg, self.bool_correct(_args_vals.locals[arg])) - - self.params = Params(**self.params); + if arg == "self": + continue + try: + if arg not in ['breaktype', 'url']: + self.params.__setattr__(arg, self.bool_correct(str(_args_vals.locals.get(arg)))) + except Exception as e: + sys.stderr.write("\n"+str(e)+"\n") self.tag = "imBreak" self.commands = []; self._now = self.now() self.files_created = [] - self.basename, self._first_format = self._get_filename_and_type_from_url(); + self.basename, self._first_format = self._get_filename_and_type_from_url(self.params.url); self._downloaded_file = self.tempname_create(basename=self.basename, fmt=self._first_format) + try: self.download(self.params.url, self._downloaded_file) self.files_created.append(self._downloaded_file) @@ -60,7 +64,7 @@ class Breaker(Pb): self._conversion_file = self.tempname_create(basename=self.basename, fmt=self.params.breaktype); def _call_cmd(self, cmd): - super(Breaker,self)._call_cmd(cmd, error) + super(Breaker,self)._call_cmd(cmd) self.commands.append(" ".join(cmd)); def _get_breaktype(self, key): diff --git a/Pb/Params/__init__.py b/Pb/Params/__init__.py index 114b117..2285e7a 100644 --- a/Pb/Params/__init__.py +++ b/Pb/Params/__init__.py @@ -4,5 +4,7 @@ class Params(object): setattr(self, key, value) def __getattr__(self, attr): return self.get(attr, None) - + def __iter__(self): + for key, value in vars(self).iteritems(): + yield key, value diff --git a/Pb/__init__.py b/Pb/__init__.py index 5e5aa65..909f03b 100644 --- a/Pb/__init__.py +++ b/Pb/__init__.py @@ -48,14 +48,16 @@ class Pb(object): except (ValueError, TypeError): return False - @staticmethod - def bool_correct(s): - if re.match(r'^false$', s, re.IGNORECASE): - return False - elif re.match(r'^true$', s, re.IGNORECASE): - return True - else: - return s + def bool_correct(self, s): + try: + if re.match(r'^false$', str(s), re.IGNORECASE): + return False + elif re.match(r'^true$', str(s), re.IGNORECASE): + return True + else: + return s + except Exception as e: + sys.stderr.write("WHAT THE FUCK") @staticmethod def get_mimetype(f): @@ -69,8 +71,7 @@ class Pb(object): sys.stderr.write(str(e)) raise; - @staticmethod - def sanitize (s): + def sanitize (self, s): return re.sub(r'\W+', '', s) @staticmethod @@ -140,11 +141,11 @@ class Pb(object): def _get_filename_and_type_from_url (self, url): name = re.sub(r'(?:\s|\?.*|.*/)', '', urllib.unquote(url)); try: - basename, ext = map(lambda s: self.santize(s), re.search(r'(^.*)\.(.*$)', name).groups()); + basename, ext = map(lambda s: self.sanitize(s), re.search(r'(^.*)\.(.*$)', name).groups()); except Exception as e: self.err_warn("Incompatible input file type") - if (len(name_part) > 20): - name_part = name_part[:-20] + if (len(basename) > 20): + basename = basename[:-20] return "{}{}_{}_{}".format(self.tag, basename, self._now, self.params.username or ""), ext def random_string_create(self): diff --git a/pbserver.py b/pbserver.py index d1fcc32..a1da5d5 100755 --- a/pbserver.py +++ b/pbserver.py @@ -69,13 +69,13 @@ def format_im_data(im, insert_url="NULL"): db.insert_cmd( date=im._now, remote_addr=request.environ.get('REMOTE_ADDR', "NULL"), - username=im.params.get('username', "NULL"), + username=im.params.username or "NULL", url=insert_url, directory=directory, oldfile="NULL", newfile=im.filename, dataobj=";".join(im.commands), - cmd=json.dumps(im.params), + cmd=json.dumps(dict(im.params)), tag=im.tag, ) return json.dumps({ @@ -85,6 +85,7 @@ def format_im_data(im, insert_url="NULL"): 'height' : "{}px".format(dimensions[1]), }) except Exception as e: + sys.stderr.write("Problem sending to database or s3\n") sys.stderr.write(str(e)) raise; @@ -141,7 +142,7 @@ def breaker(): try: im = Breaker(**(dict(request.forms))) im.create(); - return return_image(im, im.params['url']) + return return_image(im, im.params.url) except Exception as e: sys.stderr.write(str(e)) return json.dumps({ 'error' : 'Request could not be processed' }) |
