Commit 4a998817 authored by Chris Wacek's avatar Chris Wacek
Browse files

Provided default arguments for all parameters.

Now a blank request will no longer fail with a server
error and will instead return a default set of data.
parent 809e9345
Loading
Loading
Loading
Loading
+22 −18
Original line number Original line Diff line number Diff line
@@ -8,25 +8,30 @@ from flask import Flask, request, jsonify, render_template,Response
app = Flask(__name__)
app = Flask(__name__)


class Opt(object):
class Opt(object):
    request_types = {
    option_details = {
      'by_as':Boolean,
      'by_as':(Boolean, False),
      'by_country':Boolean,
      'by_country':(Boolean, False),
      'inactive':Boolean,
      'inactive':( Boolean, False ),
      'exits_only':Boolean,
      'exits_only':( Boolean, False ),
      'guards_only': Boolean,
      'guards_only': ( Boolean, False),
      'links':Boolean,
      'links':( Boolean, True ),
      'sort':NullFn,
      'sort':( NullFn, "cw" ),
      'sort_reverse':Boolean,
      'sort_reverse':( Boolean, True ),
      'top':Int,
      'top':( Int , 10),
      'family':NullFn,
      'family':( NullFn, "" ),
      'ases':List,
      'ases':( List, [] ),
      'country':JSON,
      'country':( JSON, [] ),
      'exit_filter':NullFn
      'exit_filter':( NullFn, "all_relays" )
    }
    }



    @staticmethod
    @staticmethod
    def convert(key,val):
    def convert(key,val):
      return Opt.request_types[key](val)
      return Opt.option_details[key][0](val)

    @staticmethod
    def default(key):
      return Opt.option_details[key][1]


    def __str__(self):
    def __str__(self):
      return repr(self)
      return repr(self)
@@ -35,12 +40,11 @@ class Opt(object):
      return str(self.__dict__)
      return str(self.__dict__)


    def __init__(self,request):
    def __init__(self,request):

      for key in Opt.option_details:
      for key in Opt.request_types:
        if key in request:
        if key in request:
          setattr(self,key,Opt.convert(key,request[key]))
          setattr(self,key,Opt.convert(key,request[key]))
        else:
        else:
          setattr(self,key,Opt.convert(key,None))
          setattr(self,key,Opt.default(key))


def parse(output_string, grouping=False, sort_key=None):
def parse(output_string, grouping=False, sort_key=None):
    results = []
    results = []