github_api 0.4.11 → 0.5.0.rc1

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.
Files changed (109) hide show
  1. data/README.md +76 -72
  2. data/features/cassettes/gists/starred.yml +48 -0
  3. data/features/cassettes/pagination/repos/commits/list.yml +193 -0
  4. data/features/cassettes/pagination/repos/commits/next.yml +183 -0
  5. data/features/cassettes/pagination/repos/diff/next.yml +45 -0
  6. data/features/cassettes/pagination/repos/list.yml +176 -0
  7. data/features/cassettes/pagination/repos/list/next.yml +222 -0
  8. data/features/cassettes/pagination/repos/per_page/each_page.yml +45 -0
  9. data/features/cassettes/repos/list.yml +92 -0
  10. data/features/error_codes.feature +1 -1
  11. data/features/gists.feature +12 -3
  12. data/features/gists/comments.feature +3 -3
  13. data/features/github_api.feature +13 -2
  14. data/features/pagination.feature +40 -39
  15. data/features/repos.feature +2 -2
  16. data/features/step_definitions/common_steps.rb +12 -0
  17. data/features/step_definitions/github_api_steps.rb +12 -1
  18. data/lib/github_api.rb +1 -1
  19. data/lib/github_api/api.rb +4 -2
  20. data/lib/github_api/api_factory.rb +11 -5
  21. data/lib/github_api/authorizations.rb +23 -32
  22. data/lib/github_api/client.rb +1 -0
  23. data/lib/github_api/events.rb +38 -38
  24. data/lib/github_api/filter.rb +1 -1
  25. data/lib/github_api/gists.rb +47 -42
  26. data/lib/github_api/gists/comments.rb +77 -84
  27. data/lib/github_api/git_data.rb +25 -6
  28. data/lib/github_api/git_data/blobs.rb +48 -45
  29. data/lib/github_api/git_data/commits.rb +76 -73
  30. data/lib/github_api/git_data/references.rb +137 -118
  31. data/lib/github_api/git_data/tags.rb +74 -70
  32. data/lib/github_api/git_data/trees.rb +88 -85
  33. data/lib/github_api/issues.rb +43 -31
  34. data/lib/github_api/issues/comments.rb +116 -119
  35. data/lib/github_api/issues/events.rb +20 -19
  36. data/lib/github_api/issues/labels.rb +200 -197
  37. data/lib/github_api/issues/milestones.rb +137 -134
  38. data/lib/github_api/orgs.rb +27 -23
  39. data/lib/github_api/orgs/members.rb +105 -108
  40. data/lib/github_api/orgs/teams.rb +236 -237
  41. data/lib/github_api/paged_request.rb +1 -1
  42. data/lib/github_api/pull_requests.rb +40 -42
  43. data/lib/github_api/pull_requests/comments.rb +140 -143
  44. data/lib/github_api/repos.rb +101 -67
  45. data/lib/github_api/repos/collaborators.rb +64 -68
  46. data/lib/github_api/repos/commits.rb +50 -39
  47. data/lib/github_api/repos/downloads.rb +107 -110
  48. data/lib/github_api/repos/forks.rb +38 -39
  49. data/lib/github_api/repos/hooks.rb +161 -167
  50. data/lib/github_api/repos/keys.rb +86 -86
  51. data/lib/github_api/repos/pub_sub_hubbub.rb +99 -87
  52. data/lib/github_api/repos/watching.rb +80 -82
  53. data/lib/github_api/request.rb +5 -9
  54. data/lib/github_api/users.rb +26 -16
  55. data/lib/github_api/users/emails.rb +47 -47
  56. data/lib/github_api/users/followers.rb +85 -86
  57. data/lib/github_api/users/keys.rb +73 -75
  58. data/lib/github_api/validations.rb +25 -0
  59. data/lib/github_api/validations/format.rb +23 -0
  60. data/lib/github_api/validations/presence.rb +25 -0
  61. data/lib/github_api/validations/required.rb +21 -0
  62. data/lib/github_api/validations/token.rb +41 -0
  63. data/lib/github_api/version.rb +3 -3
  64. data/spec/fixtures/repos/commit_comparison.json +112 -0
  65. data/spec/github/api_factory_spec.rb +17 -1
  66. data/spec/github/authorizations_spec.rb +36 -34
  67. data/spec/github/gists/comments_spec.rb +39 -45
  68. data/spec/github/gists_spec.rb +50 -53
  69. data/spec/github/git_data/blobs_spec.rb +27 -20
  70. data/spec/github/git_data/commits_spec.rb +20 -19
  71. data/spec/github/git_data/references_spec.rb +83 -46
  72. data/spec/github/git_data/tags_spec.rb +16 -15
  73. data/spec/github/git_data/trees_spec.rb +20 -19
  74. data/spec/github/git_data_spec.rb +10 -1
  75. data/spec/github/issues/comments_spec.rb +78 -68
  76. data/spec/github/issues/events_spec.rb +42 -34
  77. data/spec/github/issues/labels_spec.rb +89 -101
  78. data/spec/github/issues/milestones_spec.rb +76 -54
  79. data/spec/github/issues_spec.rb +53 -57
  80. data/spec/github/orgs/members_spec.rb +64 -49
  81. data/spec/github/orgs/teams_spec.rb +112 -101
  82. data/spec/github/orgs_spec.rb +41 -31
  83. data/spec/github/paged_request_spec.rb +6 -5
  84. data/spec/github/pull_requests/comments_spec.rb +39 -44
  85. data/spec/github/pull_requests_spec.rb +32 -48
  86. data/spec/github/repos/collaborators_spec.rb +40 -29
  87. data/spec/github/repos/commits_spec.rb +108 -64
  88. data/spec/github/repos/downloads_spec.rb +46 -45
  89. data/spec/github/repos/forks_spec.rb +23 -24
  90. data/spec/github/repos/hooks_spec.rb +69 -71
  91. data/spec/github/repos/keys_spec.rb +39 -34
  92. data/spec/github/repos/pub_sub_hubbub_spec.rb +4 -4
  93. data/spec/github/repos/watching_spec.rb +31 -33
  94. data/spec/github/repos_spec.rb +74 -83
  95. data/spec/github/request_spec.rb +31 -2
  96. data/spec/github/users/emails_spec.rb +19 -17
  97. data/spec/github/users/followers_spec.rb +30 -28
  98. data/spec/github/users/keys_spec.rb +37 -33
  99. data/spec/github/users_spec.rb +124 -125
  100. data/spec/github/validations/format_spec.rb +42 -0
  101. data/spec/github/validations/presence_spec.rb +18 -0
  102. data/spec/github/validations/required_spec.rb +28 -0
  103. data/spec/github/validations/token_spec.rb +19 -0
  104. data/spec/github/validations_spec.rb +23 -0
  105. metadata +33 -10
  106. data/features/cassettes/pagination/repos.yml +0 -177
  107. data/features/cassettes/pagination/repos/next.yml +0 -177
  108. data/lib/github_api/validation.rb +0 -53
  109. data/spec/github/validation_spec.rb +0 -62
@@ -1,177 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.github.com/users/wycats/repos?per_page=45
6
- body:
7
- encoding: US-ASCII
8
- string: ""
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - "*/*"
14
- User-Agent:
15
- - Ruby
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Server:
22
- - nginx/1.0.12
23
- Date:
24
- - Sat, 10 Mar 2012 23:11:49 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
31
- Status:
32
- - 200 OK
33
- X-Ratelimit-Limit:
34
- - "5000"
35
- Etag:
36
- - "\"250b49c2183c9a5aad6039fbd3584dd4\""
37
- Link:
38
- - <https://api.github.com/users/wycats/repos?page=2&per_page=45>; rel="next", <https://api.github.com/users/wycats/repos?page=3&per_page=45>; rel="last"
39
- X-Ratelimit-Remaining:
40
- - "4995"
41
- Content-Encoding:
42
- - gzip
43
- body:
44
- encoding: ASCII-8BIT
45
- string: !binary |
46
- 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
- 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
- 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
- tCvLQxHc3oaHmP6+Fr7No0NW3D75Cojv4zzP8uqn02OSvJnswuJuk53SJAs3
50
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Dn3FwBSd5S6teeDMAtvqK4b6QJYwA374VuYhPg3gz+4Z/t+yD/2VDTYI3oVF
63
- 9A/VkI37Y8qeDJO4fDTIJDLC3Iy+lVFa4K8LAwg3fg3jpDBcI0w3xip6hK3R
64
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Ej42aC/wAIfcZwcoLGL606qJhefMNdVEsblXVxEQukg9LEx7vrQsGsYFMceP
75
- 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
- 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
- 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
- hD+xIRllmDxwJ7gkhNtxXRvG3amWhHJXSOkA1/DsR5hrpBPbHSMH9fb5Fu6w
79
- 2rtob+FhBzj53NbId20HCXJ1d34VIfV+CvN9lCuf4JzsRYCfUo4AhqKD8KO+
80
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 1ie4SDFVTSNs2CiM0Qt4HS9AsNx00Mm0ARKtNGS5KOKgZo80CY+xphOQ4/Ro
109
- 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
- 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
- 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
- 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
- EP2KkjXxzAtECmDmqpf1j2EE9TCCaFlkzYYnZJ9JNfRg0iYfZ667sLu9wxQ5
114
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- UYyIE085Vzh4gz7Oq+uC0OwTfQEA9YGrLY3zt6nBx6xQkXTK4xIN/KpLA/7a
129
- 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
- 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
- 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
- QsPtImUmDMU4l39oL1R3eQDyqEBCz46WJWB7qEzU7AbafgMaaF1gJUD6EqCj
133
- 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
- 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
- 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
- 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
- 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
- nGC501koKoK2TfWgir33R2SrI3uwVaQQPpB6DukcEDwe6Q5MMEaA0o/YxfnK
139
- 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
- 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
- 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
- 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
- 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
- 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
- 9e2mkIN4g5cW4UhEcYczVa9VLXd9xwZvnMezbGXbF9zemD+aW1ZcHsJBVsd1
146
- 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
- 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
- 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
- 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
- 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
- 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
- +i8oeG0NBzXsD0dybQ+/ArJ44pV0gfgVIp0w92RvxUIiHOEUZFirO1XHRLhS
153
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- PvRbcODWTSRhmmt3cXZ3KLOyDICEWsrvsmMRmVqg74jrY56xDKsEp0N3gPQx
166
- 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
- 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
- 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
- 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
- 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
- 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
- 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
173
- VDexfer+3K17q5z3//1/LEiUxtayAAA=
174
-
175
- http_version:
176
- recorded_at: Sat, 10 Mar 2012 23:11:50 GMT
177
- recorded_with: VCR 2.0.0
@@ -1,177 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.github.com/users/wycats/repos?page=2&per_page=45
6
- body:
7
- encoding: US-ASCII
8
- string: ""
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - "*/*"
14
- User-Agent:
15
- - Ruby
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Server:
22
- - nginx/1.0.12
23
- Date:
24
- - Sat, 10 Mar 2012 23:15:47 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
31
- Status:
32
- - 200 OK
33
- X-Ratelimit-Limit:
34
- - "5000"
35
- Etag:
36
- - "\"ce6531680e537a351580547b9f970720\""
37
- Link:
38
- - <https://api.github.com/users/wycats/repos?page=3&per_page=45>; rel="next", <https://api.github.com/users/wycats/repos?page=3&per_page=45>; rel="last", <https://api.github.com/users/wycats/repos?page=1&per_page=45>; rel="first", <https://api.github.com/users/wycats/repos?page=1&per_page=45>; rel="prev"
39
- X-Ratelimit-Remaining:
40
- - "4981"
41
- Content-Encoding:
42
- - gzip
43
- body:
44
- encoding: ASCII-8BIT
45
- string: !binary |
46
- H4sIAAAAAAAAA+1da2/kRnb9K4SAYL2AKPHZDwZBMvGuN4+VYXgUf0gQCFQ3
47
- JTFiNxskW7Jmsf8951axySKLki5LI34isF7YM13d9Trnvm/9z9/OyvLh5lhk
48
- Z9HZfVr9C/55ON5ebPJd9PyyiavycpcUt/YmL5IL/N3Z+Zn87ENVHcro8jI+
49
- pPTn9ZjLIjnk5WV/JEY9xOXNNn/eZ3m8Lc+iqjgm52ebIomrZHsTV/h1z3FW
50
- tuParnfthFHoRKH/3/XAtCyPSTNqF5dVUtzcFvF+83AW7Y9Zdn62TcpNkR6q
51
- NN/ju64wZ+tHzDmyvmSZ9ZIfrX2SbC+sn/N9Iv5zm+//UF3g++/y4hFfHXjn
52
- Z+XTvt6J0+qUlQ2siYaeRXdxVmIttMDn9DE9rW2XFkVeyO+TUzwU6ROW24zY
53
- ZJgM/wfr7X/Id8khvsfXnNEscQTPz88XdEjpEx0STg6rKtNv+IQfrNzzs/yQ
54
- 7G9OW+jgAA9bddddz3Z82/GuXTdyF1GwpF3HSSXFWfS3t0/7WCbF6bQx6L6I
55
- scC4uEm3mF3grdzFMvaTzdLz/PA2Xi9dd+GtvSBYewtnjQH1x7s3qkw2R7ps
56
- 9ZfRgi7lBy/f+8p/3v5Tcy+9YHWRXMSP8S5OL/ZJdRmXZVKVymX9B++ndIed
57
- LPEvp19T/912A+fisL/HRLP8PqV7JS8B/oBWGPz9/Gwf7+gkGozQha12Gf9U
58
- advSqgUgzvONS1ffgee42jxg6zEHPzw/OxzLhw6KXMd2/WvHi3wXd4DOk+br
59
- LbCQeH9/lLfn1+Pty9nfz5kEsM03Yu/wXSMJgEbStvAIwHVtz6WpB0HkecYE
60
- gB+sgY0Lz8Z1PdXpcK3sqoJrTF7iNwgdHO9I/K5m/Eq6GIvf00Vl47cewMSv
61
- ctYKfofQC0JeXTtBFC4jT8hAQu9ytfaXHwBw8nuVpbdmEJZj+SB2lgRiz4s8
62
- J3KEPCH0j5bixFAWaR4WJpDsS8j20sIiirh4oT8q4g20B+uuyHeWkPhCS2mh
63
- 74+AfrPE6cDfORFdrA+LdNdZzYwwlURv7z2bE5ohTFboXIKWF9z1ADEQrKSa
64
- 5keBcyIGP1z7UF6NJfvOWLWnkSNIAao9aG0ZQbv3xOyNSEEA/Uqo9tcPifUT
65
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- ego14x5YH9bjEQ9EEgeSS2dP4Xifv3qjOfhWPv8+xnvn/FZGkYSK71CqYbBE
91
- 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
- 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
- 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
- j9aq1aXWgz+9lmdge4fB3A/ZvV+1MwffTQRxe9vpwjLxrF5yjkDWIKUIZZiA
95
- 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
- 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
- GmYmw2yhJsxnAmhqTL9j2V5zIZjQr9HAAb1y+IoY76NdYgZhKPJQIYFNYEai
98
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AyIbyf+NL9itxzEJgnKBEGiHrw/pnJj39yiyYdrv7UQn0fe7+zmk87uUJtmR
110
- 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
- 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
- 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
- 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
- 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
- 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
- loAwquXIX6Aa2HwUx6eCVREXJzSLfhVFW442WkLXC5kCwMpG63428Zev1J+4
117
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- mcgITeoRWUQiI55FEZENI4lN3bLyIsaDVoQQ0aZD5Aj7Fy7ep6L14J2aKs2s
145
- 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
- /JCC7ER66hs+P1Az6oEaIR4UALApoh3DJInumSs0oXkGOwhDpXoj7tfOauUb
147
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- epDlKgZyQS3esaM0anj8UM2q5QzyuwWgdFD8Mrp04i1rUUj421ULXK6t385f
155
- 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
- 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
- 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
- +MgapFnOG8j5oWvC8wsMjWQRxfDteIMyOgiDA76tP14tA98zVfFpAbv8m0ET
159
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
173
- AA==
174
-
175
- http_version:
176
- recorded_at: Sat, 10 Mar 2012 23:15:47 GMT
177
- recorded_with: VCR 2.0.0
@@ -1,53 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Github
4
- module Validation
5
-
6
- VALID_API_KEYS = [
7
- 'page',
8
- 'per_page',
9
- 'jsonp_callback'
10
- ]
11
-
12
- # Ensures that esential input parameters are present before request is made
13
- #
14
- def _validate_inputs(required, provided)
15
- result = required.all? do |key|
16
- provided.has_deep_key? key
17
- end
18
- if !result
19
- raise Github::Error::RequiredParams.new(provided, required)
20
- end
21
- result
22
- end
23
-
24
- # Ensures that esential arguments are present before request is made
25
- #
26
- def _validate_presence_of(*params)
27
- params.each do |param|
28
- raise ArgumentError, "parameter cannot be nil" if param.nil?
29
- end
30
- end
31
-
32
- # Check if user or repository parameters are passed
33
- #
34
- def _validate_user_repo_params(user_name, repo_name)
35
- raise ArgumentError, "[user] parameter cannot be nil" if user_name.nil?
36
- raise ArgumentError, "[repo] parameter cannot be nil" if repo_name.nil?
37
- end
38
-
39
- # Ensures that hash values contain predefined values
40
- #
41
- def _validate_params_values(permitted, params)
42
- params.each do |k, v|
43
- next unless permitted.keys.include?(k)
44
- if permitted[k].is_a?(Array) && !permitted[k].include?(params[k])
45
- raise ArgumentError, "Wrong value for #{k}, allowed: #{permitted[k].join(', ')}"
46
- elsif permitted[k].is_a?(Regexp) && !(permitted[k] =~ params[k])
47
- raise ArgumentError, "String does not match the parameter value."
48
- end
49
- end
50
- end
51
-
52
- end # Validation
53
- end # Github
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Github::Validation do
4
- let(:github) { Github.new }
5
-
6
- context '#_validate_inputs' do
7
- let(:required) { ['param_a', 'param_c'] }
8
- let(:provided) { { 'param_a' => true, 'param_c' => true } }
9
-
10
- it 'detect missing parameter' do
11
- expect {
12
- github._validate_inputs(required, provided.except('param_c')).should be_false
13
- }.to raise_error(Github::Error::RequiredParams)
14
- end
15
-
16
- it 'asserts correct required parameters' do
17
- github._validate_inputs(required, provided).should be_true
18
- end
19
- end
20
-
21
- context '#_validate_presence_of' do
22
- it 'throws error if passed param is nil' do
23
- gist_id = nil
24
- expect {
25
- github._validate_presence_of gist_id
26
- }.to raise_error(ArgumentError)
27
- end
28
- end
29
-
30
- context '#_validate_params_values' do
31
- let(:permitted) {
32
- {
33
- 'param_a' => ['a', 'b'],
34
- 'param_b' => /^github$/
35
- }
36
- }
37
-
38
- it 'fails to accept unkown value for a given parameter key' do
39
- actual = { 'param_a' => 'x' }
40
- expect {
41
- github._validate_params_values(permitted, actual)
42
- }.to raise_error(ArgumentError)
43
- end
44
-
45
- it 'accepts known value for a given parameter key' do
46
- actual = { 'param_a' => 'a'}
47
- github._validate_params_values(permitted, actual)
48
- end
49
-
50
- it 'fails to match regex value for a given parameter key' do
51
- actual = { 'param_b' => 'xgithub' }
52
- expect {
53
- github._validate_params_values(permitted, actual)
54
- }.to raise_error(ArgumentError)
55
- end
56
-
57
- it 'matches regex value for a given parameter key' do
58
- actual = { 'param_b' => 'github'}
59
- github._validate_params_values(permitted, actual)
60
- end
61
- end
62
- end # Github::Validation