mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
/* Model of RAML specifications. */
|
|
import javascript
|
|
import HTTP
|
|
|
|
/** A RAML specification. */
|
|
class RAMLSpec extends YAMLDocument, YAMLMapping {
|
|
RAMLSpec() { getLocation().getFile().getExtension() = "raml" }
|
|
}
|
|
|
|
/** A RAML resource specification. */
|
|
class RAMLResource extends YAMLMapping {
|
|
RAMLResource() {
|
|
getDocument() instanceof RAMLSpec and
|
|
exists(YAMLMapping m, string name |
|
|
this = m.lookup(name) and
|
|
name.matches("/%")
|
|
)
|
|
}
|
|
|
|
/** Get the path of this resource relative to the API root. */
|
|
string getPath() {
|
|
exists(RAMLSpec spec | this = spec.lookup(result))
|
|
or
|
|
exists(RAMLResource that, string p |
|
|
this = that.lookup(p) and
|
|
result = that.getPath() + p
|
|
)
|
|
}
|
|
|
|
/** Get the method for this resource with the given verb. */
|
|
RAMLMethod getMethod(string verb) {
|
|
verb = httpVerb() and
|
|
result = lookup(verb)
|
|
}
|
|
}
|
|
|
|
/** A RAML method specification. */
|
|
class RAMLMethod extends YAMLValue {
|
|
RAMLMethod() {
|
|
getDocument() instanceof RAMLSpec and
|
|
exists(YAMLMapping obj | this = obj.lookup(httpVerb()))
|
|
}
|
|
|
|
/** Get the response specification for the given status code. */
|
|
YAMLValue getResponse(int code) {
|
|
exists(YAMLMapping obj, string s |
|
|
obj = this.(YAMLMapping).lookup("responses") and
|
|
result = obj.lookup(s) and
|
|
code = s.toInt()
|
|
)
|
|
}
|
|
}
|