diesel-api-dsl 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +5 -13
  2. data/Rakefile +5 -0
  3. data/diesel.gemspec +4 -0
  4. data/lib/diesel.rb +13 -5
  5. data/lib/diesel/api_base.rb +27 -0
  6. data/lib/diesel/api_builder.rb +98 -34
  7. data/lib/diesel/api_error.rb +3 -0
  8. data/lib/diesel/api_group.rb +27 -0
  9. data/lib/diesel/data_model.rb +24 -0
  10. data/lib/diesel/endpoint.rb +15 -33
  11. data/lib/diesel/middleware/auth/api_key.rb +27 -0
  12. data/lib/diesel/middleware/debug.rb +20 -0
  13. data/lib/diesel/middleware/set_body_parameter.rb +11 -0
  14. data/lib/diesel/middleware/set_header.rb +15 -0
  15. data/lib/diesel/middleware/set_parameter_base.rb +33 -0
  16. data/lib/diesel/middleware/set_path_parameter.rb +17 -0
  17. data/lib/diesel/middleware/set_query_parameter.rb +13 -0
  18. data/lib/diesel/middleware_builder.rb +15 -0
  19. data/lib/diesel/middleware_stack.rb +21 -0
  20. data/lib/diesel/request_context.rb +40 -15
  21. data/lib/diesel/swagger/data_type_field.rb +25 -0
  22. data/lib/diesel/swagger/definition.rb +12 -0
  23. data/lib/diesel/swagger/external_docs.rb +10 -0
  24. data/lib/diesel/swagger/info.rb +14 -0
  25. data/lib/diesel/swagger/node.rb +140 -0
  26. data/lib/diesel/swagger/operation.rb +22 -0
  27. data/lib/diesel/swagger/parameter.rb +32 -0
  28. data/lib/diesel/swagger/parser.rb +70 -0
  29. data/lib/diesel/swagger/path.rb +27 -0
  30. data/lib/diesel/swagger/property.rb +8 -0
  31. data/lib/diesel/swagger/security_definition.rb +15 -0
  32. data/lib/diesel/swagger/specification.rb +30 -0
  33. data/lib/diesel/utils/inflections.rb +46 -0
  34. data/lib/diesel/version.rb +1 -1
  35. data/spec/diesel/api_builder_spec.rb +14 -0
  36. data/spec/diesel/swagger/parser_spec.rb +80 -0
  37. data/spec/diesel_spec.rb +43 -0
  38. data/spec/files/honeybadger.json +80 -0
  39. data/spec/files/pivotal_tracker.json +94 -0
  40. data/spec/fixtures/vcr_cassettes/honeybadger.yml +98 -0
  41. data/spec/fixtures/vcr_cassettes/pivotal_tracker_create_story.yml +61 -0
  42. data/spec/spec_helper.rb +10 -0
  43. metadata +110 -25
  44. data/apis/pivotal_tracker.rb +0 -55
  45. data/examples/create_pivotal_task.rb +0 -13
  46. data/lib/diesel/action/http.rb +0 -92
  47. data/lib/diesel/api.rb +0 -33
  48. data/lib/diesel/auth/api_key.rb +0 -39
  49. data/lib/diesel/auth/base.rb +0 -8
  50. data/lib/diesel/auth/oauth2.rb +0 -13
  51. data/lib/diesel/authenticator.rb +0 -35
  52. data/lib/diesel/complex_type_builder.rb +0 -24
  53. data/lib/diesel/container_builder.rb +0 -6
  54. data/lib/diesel/dsl.rb +0 -239
  55. data/lib/diesel/model_builder.rb +0 -9
  56. data/lib/diesel/profile.rb +0 -112
@@ -0,0 +1,98 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.honeybadger.io/v1/projects/3167/faults?auth_token=afaketoken
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ response:
13
+ status:
14
+ code: 200
15
+ message: OK
16
+ headers:
17
+ Server:
18
+ - nginx
19
+ Date:
20
+ - Sun, 04 Jan 2015 05:41:06 GMT
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ Transfer-Encoding:
24
+ - chunked
25
+ Connection:
26
+ - keep-alive
27
+ Vary:
28
+ - Accept-Encoding
29
+ Status:
30
+ - 200 OK
31
+ Strict-Transport-Security:
32
+ - max-age=31536000
33
+ X-Frame-Options:
34
+ - SAMEORIGIN
35
+ X-Xss-Protection:
36
+ - 1; mode=block
37
+ X-Content-Type-Options:
38
+ - nosniff
39
+ Set-Cookie:
40
+ - _honeybadger_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFVEkiJTM4ZDllNDdiMDY3Njk4NmZkMDcwYzhjNjQ2OWMwMzIzBjsAVA%3D%3D--124cf4e6729ee5f15da2588ec9283da5e170c2b4;
41
+ path=/; secure; HttpOnly
42
+ X-Request-Id:
43
+ - cbc296dc-05aa-4d76-a372-eb9a1e94239a
44
+ X-Runtime:
45
+ - '2.092752'
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"results":[{"project_id":3167,"klass":"HoneybadgerTestingException","component":"application","action":"verify","environment":"development","resolved":true,"ignored":false,"created_at":"2013-10-02T14:23:21.116Z","comments_count":1,"message":"Testing
49
+ honeybadger via \"rake honeybadger:test\". If you can see this, it works.","notices_count":1,"last_notice_at":"2013-10-02T14:23:21.101Z","tags":[],"id":1563097,"assignee":null},{"project_id":3167,"klass":"NoMethodError","component":"portal","action":"show","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-02T19:54:43.127Z","comments_count":0,"message":"undefined
50
+ method `deals'' for nil:NilClass","notices_count":34,"last_notice_at":"2013-10-07T13:54:49.614Z","tags":[],"id":1569973,"assignee":null},{"project_id":3167,"klass":"NoMethodError","component":"admin/deals","action":"index","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-03T20:56:00.529Z","comments_count":0,"message":"undefined
51
+ method `name'' for nil:NilClass","notices_count":2,"last_notice_at":"2014-06-05T20:26:05.385Z","tags":[],"id":1590813,"assignee":null},{"project_id":3167,"klass":"Foursquare2::APIError","component":"admin/deals","action":"show","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-04T20:07:40.087Z","comments_count":0,"message":"other:
52
+ Must provide parameter venueId (400)","notices_count":50,"last_notice_at":"2014-11-18T19:00:35.983Z","tags":[],"id":1608448,"assignee":null},{"project_id":3167,"klass":"MultiJson::DecodeError","component":"admin/deals","action":"show","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-04T20:08:43.640Z","comments_count":0,"message":"757:
53
+ unexpected token at ''\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003c!DOCTYPE
54
+ html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"\u003e\n\u003chtml\u003e\n \u003chead\u003e\n \u003ctitle\u003e503
55
+ No healthy backends\u003c/title\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003ch1\u003eError
56
+ 503 No healthy backends\u003c/h1\u003e\n \u003cp\u003eNo healthy backends\u003c/p\u003e\n \u003ch3\u003eGuru
57
+ Meditation:\u003c/h3\u003e\n \u003cp\u003eXID: 2595686802\u003c/p\u003e\n \u003chr\u003e\n \u003cp\u003eVarnish
58
+ cache server\u003c/p\u003e\n \u003c/body\u003e\n\u003c/html\u003e\n''","notices_count":2,"last_notice_at":"2013-10-04T20:08:44.290Z","tags":[],"id":1608469,"assignee":null},{"project_id":3167,"klass":"NameError","component":null,"action":null,"environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-06T15:10:39.295Z","comments_count":0,"message":"uninitialized
59
+ constant Jobs::CheckForUngeocodedDeals","notices_count":1,"last_notice_at":"2013-10-06T15:10:39.282Z","tags":[],"id":1628541,"assignee":null},{"project_id":3167,"klass":"NoMethodError","component":null,"action":null,"environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-07T10:30:21.831Z","comments_count":0,"message":"undefined
60
+ method `perform'' for Jobs::CheckForUngeocodedDeals:Class","notices_count":1,"last_notice_at":"2013-10-07T10:30:21.820Z","tags":[],"id":1637349,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/deals","action":"index","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-07T14:02:01.586Z","comments_count":0,"message":"Mysql2::Error:
61
+ Lost connection to MySQL server during query: SELECT `locations`.* FROM `locations` WHERE
62
+ `locations`.`id` = 3596 LIMIT 1","notices_count":4,"last_notice_at":"2013-11-26T14:29:56.279Z","tags":[],"id":1639607,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/reservations","action":"geo","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-07T19:37:50.792Z","comments_count":0,"message":"Mysql2::Error:
63
+ Lost connection to MySQL server during query: SELECT `cities`.* FROM `cities` WHERE
64
+ `cities`.`id` = 1 LIMIT 1","notices_count":32,"last_notice_at":"2014-04-15T19:28:38.959Z","tags":[],"id":1645856,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/reservations","action":"geo","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-07T20:28:39.553Z","comments_count":0,"message":"Mysql2::Error:
65
+ Lost connection to MySQL server during query: SELECT `users`.* FROM `users` WHERE
66
+ `users`.`id` = 370064 LIMIT 1","notices_count":36,"last_notice_at":"2014-04-15T19:26:51.343Z","tags":[],"id":1646919,"assignee":null},{"project_id":3167,"klass":"NoMethodError","component":"admin/daily_content","action":"show_email","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-08T21:39:49.184Z","comments_count":0,"message":"undefined
67
+ method `name'' for nil:NilClass","notices_count":1,"last_notice_at":"2013-10-08T21:39:49.165Z","tags":[],"id":1668099,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"portal","action":"show","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-11T12:46:45.533Z","comments_count":0,"message":"NoMethodError:
68
+ undefined method `fields'' for nil:NilClass: SELECT `ratings`.* FROM `ratings` WHERE
69
+ `ratings`.`location_id` = 3038 AND (ratings.comments IS NOT NULL AND LENGTH(ratings.comments)
70
+ \u003e 4) ORDER BY ratings.created_at DESC LIMIT 5","notices_count":7,"last_notice_at":"2014-05-05T14:27:59.503Z","tags":[],"id":1713397,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/locations","action":"index","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-11T20:42:51.804Z","comments_count":0,"message":"Mysql2::Error:
71
+ Lost connection to MySQL server during query: SELECT `cities`.* FROM `cities` WHERE
72
+ `cities`.`id` = 1 LIMIT 1","notices_count":5,"last_notice_at":"2014-05-06T16:08:05.787Z","tags":[],"id":1720931,"assignee":null},{"project_id":3167,"klass":"NoMethodError","component":"portal","action":"show","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-11T21:13:22.149Z","comments_count":0,"message":"undefined
73
+ method `deal_extension'' for nil:NilClass","notices_count":2,"last_notice_at":"2013-10-11T21:13:28.380Z","tags":[],"id":1721320,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/deals","action":"show","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-16T14:40:09.434Z","comments_count":0,"message":"Mysql2::Error:
74
+ Lost connection to MySQL server during query: SELECT COUNT(*) FROM `claims` WHERE
75
+ `claims`.`deal_id` = 1808 AND `claims`.`type` = ''EmailClaim'' AND (error
76
+ = ''false'' OR error IS NULL)","notices_count":1,"last_notice_at":"2013-10-16T14:40:09.400Z","tags":[],"id":1819734,"assignee":null},{"project_id":3167,"klass":"NoMethodError","component":"admin/articles","action":"new","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-18T20:50:02.451Z","comments_count":0,"message":"undefined
77
+ method `[]'' for nil:NilClass","notices_count":1,"last_notice_at":"2013-10-18T20:50:02.378Z","tags":[],"id":1875098,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/locations","action":"index","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-23T17:48:22.037Z","comments_count":0,"message":"Mysql2::Error:
78
+ Lost connection to MySQL server during query: SELECT `locations`.* FROM `locations` WHERE
79
+ `locations`.`id` = 2916 LIMIT 1","notices_count":3,"last_notice_at":"2013-12-13T16:09:42.419Z","tags":[],"id":1947856,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/daily_content","action":"edit","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-24T19:26:27.647Z","comments_count":0,"message":"Mysql2::Error:
80
+ MySQL server has gone away: SELECT COUNT(*) FROM `daily_content` WHERE `daily_content`.`page_type`
81
+ = ''Shoppe National Email''","notices_count":6,"last_notice_at":"2014-05-15T14:54:52.126Z","tags":[],"id":1966829,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/daily_content","action":"content_options","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-24T20:41:17.983Z","comments_count":0,"message":"Mysql2::Error:
82
+ Lost connection to MySQL server during query: SELECT `shoppe_products`.*
83
+ FROM `shoppe_products` WHERE (deleted_at IS NULL AND (available_on IS NOT
84
+ NULL AND CAST(available_on AS DATE) \u003c= ''2013-12-05'') AND (available_until
85
+ IS NULL OR CAST(available_until AS DATE) \u003e= ''2013-12-05'')) AND (shoppe_artist_id
86
+ IS NOT NULL) AND (name LIKE ''%%'') ORDER BY available_on DESC LIMIT 100","notices_count":2,"last_notice_at":"2013-12-04T14:26:59.451Z","tags":[],"id":1968249,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/daily_content","action":"edit","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-26T02:11:13.946Z","comments_count":0,"message":"Mysql2::Error:
87
+ Lost connection to MySQL server during query: SELECT `cities`.* FROM `cities`","notices_count":1,"last_notice_at":"2013-10-26T02:11:13.905Z","tags":[],"id":1986521,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/deals","action":"index","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-26T02:11:17.186Z","comments_count":0,"message":"Mysql2::Error:
88
+ Lost connection to MySQL server during query: SELECT `cities`.* FROM `cities` WHERE
89
+ `cities`.`id` = 13 LIMIT 1","notices_count":2,"last_notice_at":"2014-01-31T21:51:13.248Z","tags":[],"id":1986531,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/daily_content","action":"content_options","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-28T16:15:54.380Z","comments_count":0,"message":"Mysql2::Error:
90
+ MySQL server has gone away: SHOW TABLES","notices_count":3,"last_notice_at":"2014-05-27T16:52:17.111Z","tags":[],"id":2018760,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/daily_content","action":"content_options","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-28T16:15:54.431Z","comments_count":0,"message":"Mysql2::Error:
91
+ Lost connection to MySQL server during query: SELECT `cities`.* FROM `cities` WHERE
92
+ `cities`.`id` IN (5, 9, 11, 1, 6, 12, 14, 4, 2, 10, 17, 19, 7, 3, 8)","notices_count":1,"last_notice_at":"2013-10-28T16:15:54.317Z","tags":[],"id":2018761,"assignee":null},{"project_id":3167,"klass":"ActiveRecord::StatementInvalid","component":"admin/deals","action":"index","environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-29T20:17:08.404Z","comments_count":0,"message":"NoMethodError:
93
+ undefined method `fields'' for nil:NilClass: SELECT COUNT(*) FROM `deals` WHERE
94
+ `deals`.`privileges_count` = 0 AND `deals`.`visible` = 0","notices_count":6,"last_notice_at":"2014-04-29T18:41:53.327Z","tags":[],"id":2040164,"assignee":null},{"project_id":3167,"klass":"ArgumentError","component":null,"action":null,"environment":"production","resolved":true,"ignored":false,"created_at":"2013-10-29T22:06:52.826Z","comments_count":0,"message":"invalid
95
+ %-encoding (Vincent%2C%20we%20are%20excited%20to%20re-feature%20Vinny%u2019s%20New%20York%20Pizza%20%26%20Italian%20Grill%20for%20a%203%20month%20run.%20%0A%0APlease%20review%20the%20reservation%20form%20for%20accuracy.%20Once%20done%2C%20sign%20electronically%20with%20your%20mouse%20and%20click%20%27submit%27.%20%0A%0AWe%20will%20launch%20your%20new%20feature%20on%20Sunday%2C%20August%2010th.%20%0A%0AThanks%21)","notices_count":8,"last_notice_at":"2014-07-28T21:39:56.859Z","tags":[],"id":2042146,"assignee":null}],"total_count":158,"current_page":1,"num_pages":7}'
96
+ http_version:
97
+ recorded_at: Sun, 04 Jan 2015 05:41:06 GMT
98
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,61 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.pivotaltracker.com/services/v5/projects/1053124/stories
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"name":"Testing Pivotal API","story_type":"chore"}'
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ X-Trackertoken:
13
+ - afaketoken
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Content-Type:
20
+ - application/json; charset=utf-8
21
+ Transfer-Encoding:
22
+ - chunked
23
+ Status:
24
+ - 200 OK
25
+ X-Tracker-Project-Version:
26
+ - '17'
27
+ X-Ua-Compatible:
28
+ - IE=Edge,chrome=1
29
+ Etag:
30
+ - '"3153849c2aa6910b84051fb3f95aa916"'
31
+ Cache-Control:
32
+ - max-age=0, private, must-revalidate
33
+ X-Request-Id:
34
+ - f000300655795ace684e5ce0287aa024
35
+ X-Runtime:
36
+ - '0.209003'
37
+ Date:
38
+ - Sun, 04 Jan 2015 03:27:51 GMT
39
+ X-Rack-Cache:
40
+ - invalidate, pass
41
+ X-Powered-By:
42
+ - Phusion Passenger 4.0.41
43
+ Server:
44
+ - nginx/1.6.0 + Phusion Passenger 4.0.41
45
+ Access-Control-Allow-Origin:
46
+ - "*"
47
+ Access-Control-Allow-Credentials:
48
+ - 'false'
49
+ Access-Control-Allow-Methods:
50
+ - GET, POST, PUT, DELETE, OPTIONS
51
+ Access-Control-Allow-Headers:
52
+ - X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is
53
+ X-Tracker-Client-Pinger-Interval:
54
+ - '8'
55
+ body:
56
+ encoding: UTF-8
57
+ string: '{"kind":"story","id":85381528,"project_id":1053124,"name":"Testing
58
+ Pivotal API","story_type":"chore","current_state":"unscheduled","requested_by_id":371381,"owner_ids":[],"labels":[],"created_at":"2015-01-04T03:27:51Z","updated_at":"2015-01-04T03:27:51Z","url":"https://www.pivotaltracker.com/story/show/85381528"}'
59
+ http_version:
60
+ recorded_at: Sun, 04 Jan 2015 03:27:52 GMT
61
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,10 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'diesel'
5
+ require 'vcr'
6
+
7
+ VCR.configure do |c|
8
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
9
+ c.hook_into :webmock
10
+ end
metadata CHANGED
@@ -1,57 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diesel-api-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Calvin Yu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-01 00:00:00.000000000 Z
11
+ date: 2015-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.1'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.9.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.9.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.20.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.20.0
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: httparty
43
85
  requirement: !ruby/object:Gem::Requirement
44
86
  requirements:
45
- - - ~>
87
+ - - "~>"
46
88
  - !ruby/object:Gem::Version
47
89
  version: '0.12'
48
90
  type: :runtime
49
91
  prerelease: false
50
92
  version_requirements: !ruby/object:Gem::Requirement
51
93
  requirements:
52
- - - ~>
94
+ - - "~>"
53
95
  - !ruby/object:Gem::Version
54
96
  version: '0.12'
97
+ - !ruby/object:Gem::Dependency
98
+ name: multi_json
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.10.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.10.1
55
111
  description: Create API Clients From an DSL
56
112
  email:
57
113
  - me@sourcebender.com
@@ -59,32 +115,53 @@ executables: []
59
115
  extensions: []
60
116
  extra_rdoc_files: []
61
117
  files:
62
- - .gitignore
118
+ - ".gitignore"
63
119
  - Gemfile
64
120
  - LICENSE
65
121
  - README.md
66
122
  - Rakefile
67
- - apis/pivotal_tracker.rb
68
123
  - apis/slack.rb
69
124
  - diesel.gemspec
70
- - examples/create_pivotal_task.rb
71
125
  - examples/post_slack_message.rb
72
126
  - lib/diesel.rb
73
- - lib/diesel/action/http.rb
74
- - lib/diesel/api.rb
127
+ - lib/diesel/api_base.rb
75
128
  - lib/diesel/api_builder.rb
76
- - lib/diesel/auth/api_key.rb
77
- - lib/diesel/auth/base.rb
78
- - lib/diesel/auth/oauth2.rb
79
- - lib/diesel/authenticator.rb
80
- - lib/diesel/complex_type_builder.rb
81
- - lib/diesel/container_builder.rb
82
- - lib/diesel/dsl.rb
129
+ - lib/diesel/api_error.rb
130
+ - lib/diesel/api_group.rb
131
+ - lib/diesel/data_model.rb
83
132
  - lib/diesel/endpoint.rb
84
- - lib/diesel/model_builder.rb
85
- - lib/diesel/profile.rb
133
+ - lib/diesel/middleware/auth/api_key.rb
134
+ - lib/diesel/middleware/debug.rb
135
+ - lib/diesel/middleware/set_body_parameter.rb
136
+ - lib/diesel/middleware/set_header.rb
137
+ - lib/diesel/middleware/set_parameter_base.rb
138
+ - lib/diesel/middleware/set_path_parameter.rb
139
+ - lib/diesel/middleware/set_query_parameter.rb
140
+ - lib/diesel/middleware_builder.rb
141
+ - lib/diesel/middleware_stack.rb
86
142
  - lib/diesel/request_context.rb
143
+ - lib/diesel/swagger/data_type_field.rb
144
+ - lib/diesel/swagger/definition.rb
145
+ - lib/diesel/swagger/external_docs.rb
146
+ - lib/diesel/swagger/info.rb
147
+ - lib/diesel/swagger/node.rb
148
+ - lib/diesel/swagger/operation.rb
149
+ - lib/diesel/swagger/parameter.rb
150
+ - lib/diesel/swagger/parser.rb
151
+ - lib/diesel/swagger/path.rb
152
+ - lib/diesel/swagger/property.rb
153
+ - lib/diesel/swagger/security_definition.rb
154
+ - lib/diesel/swagger/specification.rb
155
+ - lib/diesel/utils/inflections.rb
87
156
  - lib/diesel/version.rb
157
+ - spec/diesel/api_builder_spec.rb
158
+ - spec/diesel/swagger/parser_spec.rb
159
+ - spec/diesel_spec.rb
160
+ - spec/files/honeybadger.json
161
+ - spec/files/pivotal_tracker.json
162
+ - spec/fixtures/vcr_cassettes/honeybadger.yml
163
+ - spec/fixtures/vcr_cassettes/pivotal_tracker_create_story.yml
164
+ - spec/spec_helper.rb
88
165
  homepage: http://github.com/cyu/diesel
89
166
  licenses:
90
167
  - MIT
@@ -95,12 +172,12 @@ require_paths:
95
172
  - lib
96
173
  required_ruby_version: !ruby/object:Gem::Requirement
97
174
  requirements:
98
- - - ! '>='
175
+ - - ">="
99
176
  - !ruby/object:Gem::Version
100
177
  version: '0'
101
178
  required_rubygems_version: !ruby/object:Gem::Requirement
102
179
  requirements:
103
- - - ! '>='
180
+ - - ">="
104
181
  - !ruby/object:Gem::Version
105
182
  version: '0'
106
183
  requirements: []
@@ -109,4 +186,12 @@ rubygems_version: 2.2.2
109
186
  signing_key:
110
187
  specification_version: 4
111
188
  summary: Create API Clients From an DSL
112
- test_files: []
189
+ test_files:
190
+ - spec/diesel/api_builder_spec.rb
191
+ - spec/diesel/swagger/parser_spec.rb
192
+ - spec/diesel_spec.rb
193
+ - spec/files/honeybadger.json
194
+ - spec/files/pivotal_tracker.json
195
+ - spec/fixtures/vcr_cassettes/honeybadger.yml
196
+ - spec/fixtures/vcr_cassettes/pivotal_tracker_create_story.yml
197
+ - spec/spec_helper.rb
@@ -1,55 +0,0 @@
1
- apis do
2
- description "PivotalTracker API v5"
3
- api_version "5"
4
- base_path "https://www.pivotaltracker.com/services/v5"
5
-
6
- api_key "X-TrackerToken" do
7
- nickname :api_token
8
- pass_as :header
9
- end
10
-
11
- header "Content-Type" => "application/json"
12
-
13
- resource "projects/{project_id}/stories" do
14
- description "Operations on stories"
15
-
16
- operation :create_story do
17
- reference_url "https://www.pivotaltracker.com/help/api/rest/v5#projects_project_id_stories_post"
18
- method :post
19
-
20
- parameter "project_id" do
21
- param_type :path
22
- required
23
- end
24
-
25
- body "story" do
26
- data_type "NewStory"
27
- required
28
- end
29
- end
30
- end
31
-
32
- complex_type "NewStory" do
33
- required :name
34
- property :cl_numbers
35
- property :current_state do
36
- enum :accepted, :delivered, :finished, :started, :rejected, :unstarted, :unscheduled
37
- end
38
- property :external_id
39
- property :deadline
40
- property :description
41
- property :estimate
42
- property :integration_id
43
- property :planned_iteration_number
44
- property :requested_by_id
45
- property :accepted_at
46
- property :before_id
47
- property :created_at
48
- property :after_id
49
- property :name
50
- property :story_type do
51
- enum :feature, :bug, :chore, :release
52
- end
53
- end
54
-
55
- end
@@ -1,13 +0,0 @@
1
- require 'diesel'
2
- require 'logger'
3
- PivotalTracker = Diesel.load_api 'apis/pivotal_tracker'
4
- api = PivotalTracker.new
5
- api.logger = Logger.new(STDOUT)
6
- api.logger.level = Logger::DEBUG
7
- api.api_token = YOUR_API_TOKEN
8
- p api.create_story(
9
- project_id: YOUR_PROJECT_ID,
10
- story: {
11
- name: 'Testing Pivotal API',
12
- :story_type => :chore
13
- })