Merge pull request #31 from matrix-org/daniel/specformat

Show all responses, not just the successful one
pull/977/head
Kegsay 9 years ago
commit 96a77d7449

@ -46,6 +46,19 @@ Example request::
{{endpoint.example.req | indent_block(2)}} {{endpoint.example.req | indent_block(2)}}
Example response:: {% if endpoint.example.responses|length > 0 -%}
Response{{"s" if endpoint.example.responses|length > 1 else "" }}:
{{endpoint.example.res | indent_block(2)}} {% endif -%}
{% for res in endpoint.example.responses -%}
**Status code {{res["code"]}}:**
{{res["description"]}}
Example::
{{res["example"] | indent_block(2)}}
{% endfor %}

@ -116,7 +116,8 @@ class MatrixUnits(Units):
"res_tables": [], "res_tables": [],
"example": { "example": {
"req": "", "req": "",
"res": "" "responses": [],
"good_response": ""
} }
} }
self.log(".o.O.o. Endpoint: %s %s" % (method, path)) self.log(".o.O.o. Endpoint: %s %s" % (method, path))
@ -177,11 +178,19 @@ class MatrixUnits(Units):
endpoint["req_param_by_loc"][p["loc"]] = [] endpoint["req_param_by_loc"][p["loc"]] = []
endpoint["req_param_by_loc"][p["loc"]].append(p) endpoint["req_param_by_loc"][p["loc"]].append(p)
# add example response if it has one good_response = None
res = single_api["responses"][200] # get the 200 OK response for code, res in single_api.get("responses", {}).items():
endpoint["example"]["res"] = res.get("examples", {}).get( if not good_response and code == 200:
"application/json", "" good_response = res
) description = res.get("description", "")
example = res.get("examples", {}).get("application/json", "")
if description and example:
endpoint["example"]["responses"].append({
"code": code,
"description": description,
"example": example,
})
# form example request if it has one. It "has one" if all params # form example request if it has one. It "has one" if all params
# have either "x-example" or a "schema" with an "example". # have either "x-example" or a "schema" with an "example".
params_missing_examples = [ params_missing_examples = [
@ -216,22 +225,25 @@ class MatrixUnits(Units):
) )
# add response params if this API has any. # add response params if this API has any.
res_type = Units.prop(res, "schema/type") if good_response:
if res_type and res_type not in ["object", "array"]: res_type = Units.prop(good_response, "schema/type")
# response is a raw string or something like that if res_type and res_type not in ["object", "array"]:
endpoint["res_tables"].append({ # response is a raw string or something like that
"title": None, endpoint["res_tables"].append({
"rows": [{ "title": None,
"key": res["schema"].get("name", ""), "rows": [{
"type": res_type, "key": good_response["schema"].get("name", ""),
"desc": res.get("description", "") "type": res_type,
}] "desc": res.get("description", "")
}) }]
elif res_type and Units.prop(res, "schema/properties"): # object })
res_tables = get_json_schema_object_fields(res["schema"]) elif res_type and Units.prop(good_response, "schema/properties"):
for table in res_tables: # response is an object:
if "no-table" not in table: schema = good_response["schema"]
endpoint["res_tables"].append(table) res_tables = get_json_schema_object_fields(schema)
for table in res_tables:
if "no-table" not in table:
endpoint["res_tables"].append(table)
endpoints.append(endpoint) endpoints.append(endpoint)

Loading…
Cancel
Save