resolveUri method
Returns a component definition for uri
.
Construct uri
as a path, e.g. Uri(path: /components/schemas/name)
.
Implementation
APIObject resolveUri(Uri uri) {
final segments = uri.pathSegments;
if (segments.length != 3) {
throw new ArgumentError(
"Invalid reference URI. Must be a path URI of the form: '/components/<type>/<name>'");
}
if (segments.first != "components") {
throw new ArgumentError(
"Invalid reference URI: does not begin with /components/");
}
var namedMap = null;
switch (segments[1]) {
case "schemas":
namedMap = schemas;
break;
case "responses":
namedMap = responses;
break;
case "parameters":
namedMap = parameters;
break;
case "requestBodies":
namedMap = requestBodies;
break;
case "headers":
namedMap = headers;
break;
case "securitySchemes":
namedMap = securitySchemes;
break;
case "callbacks":
namedMap = callbacks;
break;
}
if (namedMap == null) {
throw new ArgumentError(
"Invalid reference URI: component type '${segments[1]}' does not exist.");
}
return namedMap[segments.last];
}