Added missing API documentation
This commit is contained in:
parent
4003e4e65c
commit
9faa05aec1
8 changed files with 160 additions and 52 deletions
50
openflexure_microscope/common/flask_labthings/spec/paths.py
Normal file
50
openflexure_microscope/common/flask_labthings/spec/paths.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import werkzeug.routing
|
||||
|
||||
PATH_RE = re.compile(r'<(?:[^:<>]+:)?([^<>]+)>')
|
||||
|
||||
|
||||
def rule_to_path(rule):
|
||||
return PATH_RE.sub(r'{\1}', rule.rule)
|
||||
|
||||
|
||||
# Conversion map of werkzeug rule converters to Javascript schema types
|
||||
CONVERTER_MAPPING = {
|
||||
werkzeug.routing.UnicodeConverter: ('string', None),
|
||||
werkzeug.routing.IntegerConverter: ('integer', 'int32'),
|
||||
werkzeug.routing.FloatConverter: ('number', 'float'),
|
||||
}
|
||||
|
||||
DEFAULT_TYPE = ('string', None)
|
||||
|
||||
|
||||
def rule_to_params(rule, overrides=None):
|
||||
overrides = (overrides or {})
|
||||
result = [
|
||||
argument_to_param(argument, rule, overrides.get(argument, {}))
|
||||
for argument in rule.arguments
|
||||
]
|
||||
for key in overrides.keys():
|
||||
if overrides[key].get('in') in ('header', 'query'):
|
||||
overrides[key]['name'] = overrides[key].get('name', key)
|
||||
result.append(overrides[key])
|
||||
return result
|
||||
|
||||
|
||||
def argument_to_param(argument, rule, override=None):
|
||||
param = {
|
||||
'in': 'path',
|
||||
'name': argument,
|
||||
'required': True,
|
||||
}
|
||||
type_, format_ = CONVERTER_MAPPING.get(type(rule._converters[argument]), DEFAULT_TYPE)
|
||||
param['type'] = type_
|
||||
if format_ is not None:
|
||||
param['format'] = format_
|
||||
if rule.defaults and argument in rule.defaults:
|
||||
param['default'] = rule.defaults[argument]
|
||||
param.update(override or {})
|
||||
return param
|
||||
Loading…
Add table
Add a link
Reference in a new issue