コード例 #1
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def fibFloor(fibMethod,fibItem):
    apiFace = Face(appStats,'/floor/'+fibMethod,request.method,'Generate a Fibonacci sequence with max value less than '+fibItem+' using method '+fibMethod)
    if int(fibItem) < 0:
      return apiFace.response(appStats,'Fail',"API does not support negative target values")
    try:
      methodLoad = __import__(fibMethod)
      dynLoad = 'methodLoad.'+fibMethod+'()'
      fib = eval(dynLoad)
      list1 =  fib.fibFloor(int(fibItem))
    except:
      return apiFace.response(appStats,'Fail',fibMethod+' returned an error')
    else:
      return apiFace.response(appStats,'Pass',apiFace.listToJson(list1))
コード例 #2
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def fibCeiling(fibMethod,fibItem):
    apiFace = Face(appStats,'/ceiling/'+fibMethod,request.method,'Generate a Fibonacci sequence with max value one sequence item higher than '+fibItem+' using method '+fibMethod)
    if int(fibItem) < 0:
      return apiFace.response(appStats,'Pass',apiFace.listToJson([0]))
    try:
      methodLoad = __import__(fibMethod)
      dynLoad = 'methodLoad.'+fibMethod+'()'
      fib = eval(dynLoad)
      list1 =  fib.fibCeil(int(fibItem))
    except:
      return apiFace.response(appStats,'Fail',fibMethod+' returned an error')
    else:
      return apiFace.response(appStats,'Pass',apiFace.listToJson(list1))
コード例 #3
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def fibSequence(fibMethod,fibLen):
    apiFace = Face(appStats,'/sequence/'+fibMethod,request.method,'Generate a Fibonacci sequence with '+fibLen+' elements using method '+fibMethod)
    if int(fibLen) < 0:
      return apiFace.response(appStats,'Fail',"API does not allow negative length")
    try:
      methodLoad = __import__(fibMethod)
      dynLoad = 'methodLoad.'+fibMethod+'()'
      fib = eval(dynLoad)
      list1 =  fib.fibList(int(fibLen))
    except:
      return apiFace.response(appStats,'Fail',fibMethod+' returned an error')
    else:
      return apiFace.response(appStats,'Pass',apiFace.listToJson(list1))
コード例 #4
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def fibValue(fibMethod,fibItem):
    apiFace = Face(appStats,'/value/'+fibMethod,request.method,'Generate a Fibonacci number at sequence '+fibItem+' using method '+fibMethod)
    if int(fibItem) < 0:
      return apiFace.response(appStats,'Fail',"API does not support negative sequence values")
    try:
      methodLoad = __import__(fibMethod)
      dynLoad = 'methodLoad.'+fibMethod+'()'
      fib = eval(dynLoad)
      fibValue =  fib.fibAtN(int(fibItem))
    except:
      return apiFace.response(appStats,'Fail',fibMethod+' returned an error')
    else:
      return apiFace.response(appStats,'Pass',str(fibValue))
コード例 #5
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def userMethods():
    if request.method == 'GET':
        response='list user methods'
        apiFace = Face(appStats,'/userMethods/',request.method,'list Fibonacci libraries available')
        return apiFace.response(appStats,'Pass',apiFace.dictionaryToJson(libs.list()))
    elif request.method == 'PUT':
        response='update user method'
        apiFace = Face(appStats,'/userMethods/',request.method,'update Fibonacci libraries available')
    elif request.method == 'POST':
        response='create user method'
        apiFace = Face(appStats,'/userMethods/',request.method,'create Fibonacci libraries available')
        #libs.add('TableFib','limited recursion with simple storage')
    elif request.method == 'DELETE':
        response='drop user method'
        apiFace = Face(appStats,'/userMethods/',request.method,'drop Fibonacci libraries available')

    return apiFace.response(appStats,'Fail','not supported:'+response)
コード例 #6
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def test(fibMethod1,fibMethod2):
    apiFace = Face(appStats,'/test/'+fibMethod1+'/'+fibMethod2,request.method,'Compare library '+fibMethod2+' to '+fibMethod1)
    appTests = FuncTest()
    lib1 = appTests.getStandardDictionary()
    lib2 = appTests.getTestDictionary()
    appTests.runLibraryTests(fibMethod1,lib1)
    appTests.runLibraryTests(fibMethod2,lib2)
    testResults = appTests.compare()
    if appTests.testsPassed() == True: overall = "Pass"
    else: overall = "Fail"
    return apiFace.response(appStats,overall,apiFace.dictionaryToJson(sorted(testResults.iteritems())))
コード例 #7
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def apiList():
    apiFace = Face(appStats,'/apiList/',request.method,"List of available API endpoints")
    links = []
    for rule in app.url_map.iter_rules():
      if rule.endpoint != 'static': links.append(rule.endpoint)
    return apiFace.response(appStats,'Pass',apiFace.listToJson(sorted(links)))
コード例 #8
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def status():
    apiFace = Face(appStats,'/status/',request.method,"health check")
    print url_for('status')
    #return status and result
    return apiFace.response(appStats,'healthy',apiFace.dictionaryToJson(appStats.getStats()))
コード例 #9
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def root():
    apiFace = Face(appStats,'/',request.method,"Welcome to Blair's Fibonacci API")
    return apiFace.response(appStats,None,None)
コード例 #10
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def runtime_error(error=None):
  apiFace = Face(appStats,'500 Error',request.method,'python runtime error encountered, see server output')
  return apiFace.response(appStats,"Error",'500')
コード例 #11
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def wrong_method(error=None):
  apiFace = Face(appStats,'405 Error',request.method,'request type not allowed')
  return apiFace.response(appStats,"Error",'405')
コード例 #12
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def not_found(error=None):
  apiFace = Face(appStats,'404 Error',request.method,'URL not found')
  links = []
  for rule in app.url_map.iter_rules():
    if rule.endpoint != 'static': links.append(rule.endpoint)
  return apiFace.response(appStats,'401 Error',apiFace.listToJson(sorted(links)))
コード例 #13
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def forbidden(error=None):
  apiFace = Face(appStats,'401 Error',request.method,'user is not allowed to access the resource')
  return apiFace.response(appStats,"Error",'403')
コード例 #14
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def unauthorized(error=None):
  apiFace = Face(appStats,'401 Error',request.method,'user is not authorized')
  return apiFace.response(appStats,"Error",'401')
コード例 #15
0
ファイル: server1.py プロジェクト: theRealZing/Liber-Abaci
def bad_request(error=None):
  apiFace = Face(appStats,'400 Error',request.method,'malformed request')
  return apiFace.response(appStats,"Error",'400')