Skip to content

Commit

Permalink
Moved the help function into its own class
Browse files Browse the repository at this point in the history
  • Loading branch information
markmcdowall committed Jul 3, 2017
1 parent 27bd489 commit 7745b73
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 80 deletions.
3 changes: 0 additions & 3 deletions docs/app.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
mg-rest-3d server
=================

Methods
-------

.. automodule:: rest.app

Methods
Expand Down
155 changes: 78 additions & 77 deletions rest/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,69 +23,70 @@
APP = Flask(__name__)
#app.config['DEBUG'] = False

def help_usage(error_message, status_code,
parameters_required, parameters_provided):
"""
Usage Help
Description of the basic usage patterns for GET functions for the app,
including any parameters that were provided byt he user along with the
available parameters that are required/optional.
Parameters
----------
error_message : str | None
Error message detailing what has gone wrong. If there are no errors then
None should be passed.
status_code : int
HTTP status code.
parameters_required : list
List of the text names for each paramter required by the end point. An
empty list should be provided if there are no parameters required
parameters_provided : dict
Dictionary of the parameters and the matching values provided by the
user. An empyt dictionary should be passed if there were no parameters
provided by the user.
Returns
-------
str
JSON formated status message to display to the user
"""
parameters = {
'user_id' : ['User ID', 'str', 'REQUIRED'],
'file_id' : ['File ID', 'str', 'REQUIRED'],
'chrom' : ['Chromosome', 'str', 'REQUIRED'],
'start' : ['Start', 'int', 'REQUIRED'],
'end' : ['End', 'int', 'REQUIRED'],
'res' : ['Resolution', 'int', 'REQUIRED'],
'region' : ['Region ID', 'int', 'REQUIRED'],
'model' : ['Model ID', 'str', 'REQUIRED'],
'page' : ['Page number (default: 0)', 'int', 'OPTIONAL'],
'mpp' : ['Models per page (default: 10; max: 100)', 'int', 'OPTIONAL'],
}

used_param = {k : parameters[k] for k in parameters_required if k in parameters}

usage = {
'_links' : {
'_self' : request.base_url,
'_parent' : request.url_root + 'mug/api/dmp'
},
'parameters' : used_param
}
message = {
'usage' : usage,
'status_code' : status_code
}

if parameters_provided:
message['provided_parameters'] = parameters_provided

if error_message != None:
message['error'] = error_message

return message
class get_help(object):
def help_usage(error_message, status_code,
parameters_required, parameters_provided):
"""
Usage Help
Description of the basic usage patterns for GET functions for the app,
including any parameters that were provided byt he user along with the
available parameters that are required/optional.
Parameters
----------
error_message : str | None
Error message detailing what has gone wrong. If there are no errors then
None should be passed.
status_code : int
HTTP status code.
parameters_required : list
List of the text names for each paramter required by the end point. An
empty list should be provided if there are no parameters required
parameters_provided : dict
Dictionary of the parameters and the matching values provided by the
user. An empyt dictionary should be passed if there were no parameters
provided by the user.
Returns
-------
str
JSON formated status message to display to the user
"""
parameters = {
'user_id' : ['User ID', 'str', 'REQUIRED'],
'file_id' : ['File ID', 'str', 'REQUIRED'],
'chrom' : ['Chromosome', 'str', 'REQUIRED'],
'start' : ['Start', 'int', 'REQUIRED'],
'end' : ['End', 'int', 'REQUIRED'],
'res' : ['Resolution', 'int', 'REQUIRED'],
'region' : ['Region ID', 'int', 'REQUIRED'],
'model' : ['Model ID', 'str', 'REQUIRED'],
'page' : ['Page number (default: 0)', 'int', 'OPTIONAL'],
'mpp' : ['Models per page (default: 10; max: 100)', 'int', 'OPTIONAL'],
}

used_param = {k : parameters[k] for k in parameters_required if k in parameters}

usage = {
'_links' : {
'_self' : request.base_url,
'_parent' : request.url_root + 'mug/api/dmp'
},
'parameters' : used_param
}
message = {
'usage' : usage,
'status_code' : status_code
}

if parameters_provided:
message['provided_parameters'] = parameters_provided

if error_message != None:
message['error'] = error_message

return message

class GetEndPoints(Resource):
"""
Expand Down Expand Up @@ -160,11 +161,11 @@ def get(self):

# Display the parameters available
if sum([x is None for x in params]) == len(params):
return help_usage(None, 200, params_required, {})
return get_help.help_usage(None, 200, params_required, {})

# ERROR - one of the required parameters is NoneType
if sum([x is not None for x in params]) != len(params):
return help_usage(
return get_help.help_usage(
'MissingParameters',
400,
params_required,
Expand Down Expand Up @@ -240,11 +241,11 @@ def get(self):

# Display the parameters available
if sum([x is None for x in params]) == len(params):
return help_usage(None, 200, params_required, {})
return get_help.help_usage(None, 200, params_required, {})

# ERROR - one of the required parameters is NoneType
if sum([x is not None for x in params]) != len(params):
return help_usage(
return get_help.help_usage(
'MissingParameters',
400,
params_required,
Expand All @@ -255,7 +256,7 @@ def get(self):
resolution = int(resolution)
except ValueError:
# ERROR - one of the parameters is not of integer type
return help_usage(
return get_help.help_usage(
'IncorrectParameterType',
400,
params_required,
Expand Down Expand Up @@ -343,11 +344,11 @@ def get(self):

# Display the parameters available
if sum([x is None for x in params]) == len(params):
return help_usage(None, 200, params_required, {})
return get_help.help_usage(None, 200, params_required, {})

# ERROR - one of the required parameters is NoneType
if sum([x is not None for x in params]) != len(params):
return help_usage(
return get_help.help_usage(
'MissingParameters',
400,
params_required,
Expand All @@ -367,7 +368,7 @@ def get(self):
resolution = int(resolution)
except ValueError:
# ERROR - one of the parameters is not of integer type
return help_usage(
return get_help.help_usage(
'IncorrectParameterType',
400,
params_required,
Expand Down Expand Up @@ -456,11 +457,11 @@ def get(self):

# Display the parameters available
if sum([x is None for x in params]) == len(params):
return help_usage(None, 200, params_required, {})
return get_help.help_usage(None, 200, params_required, {})

# ERROR - one of the required parameters is NoneType
if sum([x is not None for x in params]) != len(params):
return help_usage(
return get_help.help_usage(
'MissingParameters',
400,
params_required,
Expand All @@ -476,7 +477,7 @@ def get(self):
resolution = int(resolution)
except ValueError:
# ERROR - one of the parameters is not of integer type
return help_usage(
return get_help.help_usage(
'IncorrectParameterType',
400,
params_required,
Expand Down Expand Up @@ -573,11 +574,11 @@ def get(self):

# Display the parameters available
if sum([x is None for x in params]) == len(params):
return help_usage(None, 200, params_required, {})
return get_help.help_usage(None, 200, params_required, {})

# ERROR - one of the required parameters is NoneType
if sum([x is not None for x in params]) != len(params):
return help_usage(
return get_help.help_usage(
'MissingParameters',
400,
params_required,
Expand All @@ -602,7 +603,7 @@ def get(self):
mpp = int(mpp)
except ValueError:
# ERROR - one of the parameters is not of integer type
return help_usage(
return get_help.help_usage(
'IncorrectParameterType',
400,
params_required,
Expand Down

0 comments on commit 7745b73

Please sign in to comment.