Commit 90aa1868 authored by PidgeyL's avatar PidgeyL
Browse files

fix status codes in web/api

parent 1f3bd2ff
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -84,10 +84,10 @@ class API():
      try:
        data = funct(*args, **kwargs)
      except APIError as e:
        error = {'status': 'error', 'reason': e.message}
        error = ({'status': 'error', 'reason': e.message}, e.status)
      except Exception as e:
        print(e)
        error = {'status': 'error', 'reason': 'Internal server error'}
        error = ({'status': 'error', 'reason': 'Internal server error'}, 500)
      # Check if data should be returned as html or data
      try:
        if (request.url_rule.rule.lower().startswith("/api/") or
@@ -106,14 +106,18 @@ class API():
            elif 'plain' in returnType:
              pass # No need to do anything, but needs to be accepted
            else:
              data = {'status': 'error', 'reason': 'Unknown Content-type requested'}
              data = ({'status': 'error', 'reason': 'Unknown Content-type requested'}, 415)
              returnType = 'application/json'
          if type(data) is not str:
            data = json.dumps(data, indent=2, sort_keys=True, default=json_util.default)
          return Response(data, mimetype=returnType)
            if type(data) is tuple:
              data = list(data)
              data[0] = json.dumps(data[0], indent=2, sort_keys=True, default=json_util.default)
            else:
              data = (json.dumps(data, indent=2, sort_keys=True, default=json_util.default), 200)
          return Response(data[0], mimetype=returnType), data[1]
      except:
        pass
      if error: raise(APIError(error['reason']))
      if error and error[1] == 500: raise(APIError(error[0]['reason']))
      return data
    return api_wrapper

@@ -184,7 +188,7 @@ class API():
  def api_cve(self, cveid):
    cvesp = cves.last(rankinglookup=True, namelookup=True, via4lookup=True, capeclookup=True)
    cve = cvesp.getcve(cveid=cveid.upper())
    if not cve: raise(APIError('cve not found'), 404)
    if not cve: raise(APIError('cve not found', 404))
    return cve

  # /api/cwe
@@ -223,11 +227,11 @@ class API():
    try:
      skip = int(f['skip']) if f['skip'] else 0
    except:
      raise(APIError('skip must be an int'))
      raise(APIError('skip must be an int', 400))
    try:
      limit = int(f['limit']) if f['limit'] else 0
    except:
      raise(APIError('limit must be an int'))  
      raise(APIError('limit must be an int', 400))
    return self.filter_logic(f, skip, limit)

  # /api/browse
@@ -240,7 +244,7 @@ class API():
    try:
      browseList = query.getBrowseList(vendor)
    except redisExceptions.ConnectionError:
      raise(APIError("Server could not connect to the browsing repository"))
      raise(APIError("Server could not connect to the browsing repository", 503))
    if isinstance(browseList, dict):
      return browseList
    else: