raml_parser 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +39 -0
- data/Rakefile +7 -0
- data/lib/raml_parser.rb +270 -0
- data/lib/raml_parser/model.rb +146 -0
- data/lib/raml_parser/version.rb +3 -0
- data/lib/raml_parser/yaml_helper.rb +122 -0
- data/raml_parser.gemspec +26 -0
- data/spec/examples/raml/documentation.raml +11 -0
- data/spec/examples/raml/external/box.raml +8473 -0
- data/spec/examples/raml/external/bug.raml +12 -0
- data/spec/examples/raml/external/github.raml +21650 -0
- data/spec/examples/raml/external/groups_and_nesting.raml +22 -0
- data/spec/examples/raml/external/instagram.yml +3369 -0
- data/spec/examples/raml/external/json_schema.json +18 -0
- data/spec/examples/raml/external/jukebox-api.raml +191 -0
- data/spec/examples/raml/external/jukebox-include-album-new.sample +8 -0
- data/spec/examples/raml/external/jukebox-include-album-retrieve.sample +30 -0
- data/spec/examples/raml/external/jukebox-include-album-songs.sample +14 -0
- data/spec/examples/raml/external/jukebox-include-album.schema +36 -0
- data/spec/examples/raml/external/jukebox-include-albums.sample +32 -0
- data/spec/examples/raml/external/jukebox-include-artist-albums.sample +42 -0
- data/spec/examples/raml/external/jukebox-include-artist-new.sample +5 -0
- data/spec/examples/raml/external/jukebox-include-artist-retrieve.sample +52 -0
- data/spec/examples/raml/external/jukebox-include-artist.schema +20 -0
- data/spec/examples/raml/external/jukebox-include-artists.sample +32 -0
- data/spec/examples/raml/external/jukebox-include-song-new.sample +5 -0
- data/spec/examples/raml/external/jukebox-include-song-retrieve.sample +15 -0
- data/spec/examples/raml/external/jukebox-include-song.schema +24 -0
- data/spec/examples/raml/external/jukebox-include-songs.sample +14 -0
- data/spec/examples/raml/external/linkedin-v1-single.yml +2671 -0
- data/spec/examples/raml/external/mule_sales_enablement.raml +148 -0
- data/spec/examples/raml/external/multiple-methods.raml +11 -0
- data/spec/examples/raml/external/named_parameters.raml +85 -0
- data/spec/examples/raml/external/requests-responses.raml +47 -0
- data/spec/examples/raml/external/resource_summary_spacing.raml +42 -0
- data/spec/examples/raml/external/simple.raml +233 -0
- data/spec/examples/raml/external/stripe.raml +12226 -0
- data/spec/examples/raml/external/test.raml +11 -0
- data/spec/examples/raml/external/twitter.raml +34284 -0
- data/spec/examples/raml/external/xml_example.xml +25 -0
- data/spec/examples/raml/external/xml_schema.xsd +50 -0
- data/spec/examples/raml/formparameters.raml +23 -0
- data/spec/examples/raml/headers.raml +15 -0
- data/spec/examples/raml/issue2.raml +51 -0
- data/spec/examples/raml/methods.raml +9 -0
- data/spec/examples/raml/parameters.raml +21 -0
- data/spec/examples/raml/parametersinflection.raml +21 -0
- data/spec/examples/raml/queryparameters.raml +14 -0
- data/spec/examples/raml/requestbodies.raml +21 -0
- data/spec/examples/raml/resources.raml +15 -0
- data/spec/examples/raml/resourcetypes.raml +16 -0
- data/spec/examples/raml/responses.raml +25 -0
- data/spec/examples/raml/securedby1.raml +20 -0
- data/spec/examples/raml/securedby2.raml +21 -0
- data/spec/examples/raml/securityschemes.raml +47 -0
- data/spec/examples/raml/simple.raml +6 -0
- data/spec/examples/raml/traits.raml +34 -0
- data/spec/examples/raml/uriparameters.raml +16 -0
- data/spec/examples/yaml/include1.yml +2 -0
- data/spec/examples/yaml/include2.yml +1 -0
- data/spec/examples/yaml/simple.yml +2 -0
- data/spec/examples/yaml/traversing.yml +11 -0
- data/spec/lib/raml_parser/yaml_parser_spec.rb +38 -0
- data/spec/lib/raml_parser_spec.rb +196 -0
- data/spec/spec_helper.rb +91 -0
- metadata +229 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
+
<job>
|
3
|
+
<id>1511685</id>
|
4
|
+
<expiration-timestamp>1304030488000</expiration-timestamp>
|
5
|
+
<company>
|
6
|
+
<id>229433</id>
|
7
|
+
<name>Cloudera</name>
|
8
|
+
</company>
|
9
|
+
<position>
|
10
|
+
<title>Technical Writer</title>
|
11
|
+
<location>
|
12
|
+
<name>San Francisco Bay Area</name>
|
13
|
+
<country>
|
14
|
+
<code>us</code>
|
15
|
+
</country>
|
16
|
+
</location>
|
17
|
+
</position>
|
18
|
+
<location-description>San Francisco or Palo Alto, CA</location-description>
|
19
|
+
<job-poster>
|
20
|
+
<id>hQ4ruu3J2q</id>
|
21
|
+
<first-name>Paul</first-name>
|
22
|
+
<last-name>Battaglia</last-name>
|
23
|
+
<headline>Technical Writer at Cloudera</headline>
|
24
|
+
</job-poster>
|
25
|
+
</job>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
2
|
+
<xs:element name="job">
|
3
|
+
<xs:complexType>
|
4
|
+
<xs:sequence>
|
5
|
+
<xs:element type="xs:int" name="id"/>
|
6
|
+
<xs:element type="xs:long" name="expiration-timestamp"/>
|
7
|
+
<xs:element name="company">
|
8
|
+
<xs:complexType>
|
9
|
+
<xs:sequence>
|
10
|
+
<xs:element type="xs:int" name="id"/>
|
11
|
+
<xs:element type="xs:string" name="name"/>
|
12
|
+
</xs:sequence>
|
13
|
+
</xs:complexType>
|
14
|
+
</xs:element>
|
15
|
+
<xs:element name="position">
|
16
|
+
<xs:complexType>
|
17
|
+
<xs:sequence>
|
18
|
+
<xs:element type="xs:string" name="title"/>
|
19
|
+
<xs:element name="location">
|
20
|
+
<xs:complexType>
|
21
|
+
<xs:sequence>
|
22
|
+
<xs:element type="xs:string" name="name"/>
|
23
|
+
<xs:element name="country">
|
24
|
+
<xs:complexType>
|
25
|
+
<xs:sequence>
|
26
|
+
<xs:element type="xs:string" name="code"/>
|
27
|
+
</xs:sequence>
|
28
|
+
</xs:complexType>
|
29
|
+
</xs:element>
|
30
|
+
</xs:sequence>
|
31
|
+
</xs:complexType>
|
32
|
+
</xs:element>
|
33
|
+
</xs:sequence>
|
34
|
+
</xs:complexType>
|
35
|
+
</xs:element>
|
36
|
+
<xs:element type="xs:string" name="location-description"/>
|
37
|
+
<xs:element name="job-poster">
|
38
|
+
<xs:complexType>
|
39
|
+
<xs:sequence>
|
40
|
+
<xs:element type="xs:string" name="id"/>
|
41
|
+
<xs:element type="xs:string" name="first-name"/>
|
42
|
+
<xs:element type="xs:string" name="last-name"/>
|
43
|
+
<xs:element type="xs:string" name="headline"/>
|
44
|
+
</xs:sequence>
|
45
|
+
</xs:complexType>
|
46
|
+
</xs:element>
|
47
|
+
</xs:sequence>
|
48
|
+
</xs:complexType>
|
49
|
+
</xs:element>
|
50
|
+
</xs:schema>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
version: v123
|
6
|
+
/a:
|
7
|
+
post:
|
8
|
+
body:
|
9
|
+
application/x-www-form-urlencoded:
|
10
|
+
formParameters:
|
11
|
+
from:
|
12
|
+
description: FROM1
|
13
|
+
to:
|
14
|
+
description: TO1
|
15
|
+
/b:
|
16
|
+
post:
|
17
|
+
body:
|
18
|
+
multipart/form-data:
|
19
|
+
formParameters:
|
20
|
+
from:
|
21
|
+
description: FROM2
|
22
|
+
to:
|
23
|
+
description: TO2
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: GitHub API
|
4
|
+
baseUri: https://api.github.com
|
5
|
+
version: v3
|
6
|
+
traits:
|
7
|
+
- base:
|
8
|
+
responses:
|
9
|
+
404:
|
10
|
+
description: Not found
|
11
|
+
body:
|
12
|
+
application/json:
|
13
|
+
example: |
|
14
|
+
{
|
15
|
+
"status_code": 404,
|
16
|
+
"message": "Not found"
|
17
|
+
}
|
18
|
+
500:
|
19
|
+
description: Internal server error
|
20
|
+
body:
|
21
|
+
application/json:
|
22
|
+
example: |
|
23
|
+
{
|
24
|
+
"status_code": 500,
|
25
|
+
"message": "Internal server error"
|
26
|
+
}
|
27
|
+
resourceTypes:
|
28
|
+
- collection:
|
29
|
+
post:
|
30
|
+
responses:
|
31
|
+
404:
|
32
|
+
description: Not found
|
33
|
+
body:
|
34
|
+
application/json:
|
35
|
+
example: |
|
36
|
+
{
|
37
|
+
"status_code": 404,
|
38
|
+
"message": "Not found"
|
39
|
+
}
|
40
|
+
500:
|
41
|
+
description: Internal server error
|
42
|
+
body:
|
43
|
+
application/json:
|
44
|
+
example: |
|
45
|
+
{
|
46
|
+
"status_code": 500,
|
47
|
+
"message": "Internal server error"
|
48
|
+
}
|
49
|
+
/users/{username}:
|
50
|
+
type: collection
|
51
|
+
get:
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
traits:
|
6
|
+
- first:
|
7
|
+
description: <<resourcePath>> and <<resourcePathName>> and <<methodName>> and <<fooBar>>
|
8
|
+
queryParameters:
|
9
|
+
<<methodName>>:
|
10
|
+
description: Applepie
|
11
|
+
resourceTypes:
|
12
|
+
- second:
|
13
|
+
description: <<resourcePath>> and <<resourcePathName>> and <<applePie>>
|
14
|
+
/first:
|
15
|
+
get:
|
16
|
+
is: [ first: { fooBar: Hello } ]
|
17
|
+
/second:
|
18
|
+
type: { second: { applePie: World } }
|
19
|
+
/third:
|
20
|
+
/fourth:
|
21
|
+
type: { second: { applePie: Finish } }
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
traits:
|
6
|
+
- keep:
|
7
|
+
description: Keep <<resourcePathName>>
|
8
|
+
- sing:
|
9
|
+
description: Sing <<resourcePathName | !singularize>>
|
10
|
+
- plu:
|
11
|
+
description: Plu <<resourcePathName | !pluralize>>
|
12
|
+
/userName:
|
13
|
+
get:
|
14
|
+
is: [ keep ]
|
15
|
+
post:
|
16
|
+
is: [ plu ]
|
17
|
+
/passwords:
|
18
|
+
get:
|
19
|
+
is: [ keep ]
|
20
|
+
post:
|
21
|
+
is: [ sing ]
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
/first:
|
6
|
+
post:
|
7
|
+
body:
|
8
|
+
application/json:
|
9
|
+
example: |
|
10
|
+
{
|
11
|
+
"foo": "bar"
|
12
|
+
}
|
13
|
+
text/xml:
|
14
|
+
put:
|
15
|
+
body:
|
16
|
+
application/json:
|
17
|
+
example: |
|
18
|
+
{
|
19
|
+
"status": "not found",
|
20
|
+
"message: "Resource could not be found"
|
21
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
resourceTypes:
|
6
|
+
- collection:
|
7
|
+
description: A collection
|
8
|
+
get:
|
9
|
+
description: Get all items
|
10
|
+
post:
|
11
|
+
description: Create a new item
|
12
|
+
/a:
|
13
|
+
type: collection
|
14
|
+
put:
|
15
|
+
post:
|
16
|
+
description: Overriden
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
/first:
|
6
|
+
get:
|
7
|
+
responses:
|
8
|
+
200:
|
9
|
+
displayName: The first
|
10
|
+
description: This is the first
|
11
|
+
body:
|
12
|
+
application/json:
|
13
|
+
example: |
|
14
|
+
{
|
15
|
+
"foo": "bar"
|
16
|
+
}
|
17
|
+
text/xml:
|
18
|
+
404:
|
19
|
+
body:
|
20
|
+
application/json:
|
21
|
+
example: |
|
22
|
+
{
|
23
|
+
"status": "not found",
|
24
|
+
"message: "Resource could not be found"
|
25
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
securitySchemes:
|
6
|
+
- oauth_1_0:
|
7
|
+
type: OAuth 1.0
|
8
|
+
- oauth_2_0:
|
9
|
+
type: OAuth 2.0
|
10
|
+
/first:
|
11
|
+
get:
|
12
|
+
securedBy: [oauth_1_0]
|
13
|
+
post:
|
14
|
+
securedBy: [oauth_2_0]
|
15
|
+
/second:
|
16
|
+
securedBy: [oauth_1_0]
|
17
|
+
get:
|
18
|
+
securedBy: [null, oauth_2_0]
|
19
|
+
post:
|
20
|
+
securedBy: [oauth_2_0]
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
securedBy: [oauth_2_0]
|
6
|
+
securitySchemes:
|
7
|
+
- oauth_1_0:
|
8
|
+
type: OAuth 1.0
|
9
|
+
- oauth_2_0:
|
10
|
+
type: OAuth 2.0
|
11
|
+
/first:
|
12
|
+
get:
|
13
|
+
securedBy: [oauth_1_0]
|
14
|
+
post:
|
15
|
+
securedBy: [oauth_2_0]
|
16
|
+
/second:
|
17
|
+
securedBy: [oauth_1_0]
|
18
|
+
get:
|
19
|
+
securedBy: [null, oauth_2_0]
|
20
|
+
post:
|
21
|
+
securedBy: [oauth_2_0]
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
securitySchemes:
|
6
|
+
- oauth_2_0:
|
7
|
+
description: |
|
8
|
+
Dropbox supports OAuth 2.0 for authenticating all API requests.
|
9
|
+
type: OAuth 2.0
|
10
|
+
describedBy:
|
11
|
+
headers:
|
12
|
+
Authorization:
|
13
|
+
description: |
|
14
|
+
Used to send a valid OAuth 2 access token. Do not use
|
15
|
+
with the "access_token" query string parameter.
|
16
|
+
type: string
|
17
|
+
queryParameters:
|
18
|
+
access_token:
|
19
|
+
description: |
|
20
|
+
Used to send a valid OAuth 2 access token. Do not use together with
|
21
|
+
the "Authorization" header
|
22
|
+
type: string
|
23
|
+
responses:
|
24
|
+
401:
|
25
|
+
description: |
|
26
|
+
Bad or expired token. This can happen if the user or Dropbox
|
27
|
+
revoked or expired an access token. To fix, you should re-
|
28
|
+
authenticate the user.
|
29
|
+
403:
|
30
|
+
description: |
|
31
|
+
Bad OAuth request (wrong consumer key, bad nonce, expired
|
32
|
+
timestamp...). Unfortunately, re-authenticating the user won't help here.
|
33
|
+
settings:
|
34
|
+
authorizationUri: https://www.dropbox.com/1/oauth2/authorize
|
35
|
+
accessTokenUri: https://api.dropbox.com/1/oauth2/token
|
36
|
+
authorizationGrants: [ code, token ]
|
37
|
+
- oauth_1_0:
|
38
|
+
description: |
|
39
|
+
OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
|
40
|
+
type: OAuth 1.0
|
41
|
+
settings:
|
42
|
+
requestTokenUri: https://api.dropbox.com/1/oauth/request_token
|
43
|
+
authorizationUri: https://www.dropbox.com/1/oauth/authorize
|
44
|
+
tokenCredentialsUri: https://api.dropbox.com/1/oauth/access_token
|
45
|
+
- customHeader:
|
46
|
+
description: |
|
47
|
+
A custom
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#%RAML 0.8
|
2
|
+
---
|
3
|
+
title: Example API
|
4
|
+
baseUri: http://localhost:3000
|
5
|
+
traits:
|
6
|
+
- searchable:
|
7
|
+
displayName: Foo
|
8
|
+
description: This is searchable
|
9
|
+
queryParameters:
|
10
|
+
q:
|
11
|
+
- sortable:
|
12
|
+
description: This is sortable
|
13
|
+
queryParameters:
|
14
|
+
key:
|
15
|
+
order:
|
16
|
+
/a:
|
17
|
+
get:
|
18
|
+
is: [ searchable, sortable ]
|
19
|
+
/b:
|
20
|
+
get:
|
21
|
+
is: [ searchable, sortable ]
|
22
|
+
displayName: /a/b
|
23
|
+
description: This is resource /a/b
|
24
|
+
queryParameters:
|
25
|
+
sort:
|
26
|
+
q:
|
27
|
+
displayName: This is the search term
|
28
|
+
/c:
|
29
|
+
is: [ sortable ]
|
30
|
+
get:
|
31
|
+
/d:
|
32
|
+
is: [ sortable ]
|
33
|
+
get:
|
34
|
+
is: [ searchable ]
|