github_api 0.4.11 → 0.5.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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
- H4sIAAAAAAAAA+1da4/bSHb9K1wFm+wCZjdfepBBkLXXs96ZjCfOWMmHBEGD
47
- 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
- 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
- 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
- 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
- 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
- gvswKfCt9B2n+CE+f/shj7/i45t/xzvbqcacyfxGPdnrJEsjjU+sxXfZPjqE
53
- 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
- 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
- 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
- 8RY30U34EO7D+CaNytuwKKKy4Db2752/xHtMZIH/OP8a/9+m7Vk3h3Q7+b83
57
- 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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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
- hD+xIRllmDxwJ7gkhNtxXRvG3amWhHJXSOkA1/DsR5hrpBPbHSMH9fb5Fu6w
79
- 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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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
- gvUUGRHz0YZ4jThdDyBS6qAnwzn9fc+hRQ5YqfAcmoKe2cymQKxOpG4TwWNR
98
- thmYlLYGgM9PxbtTFrrwYAPpmws/7g9JtMfp3yD9Y/ZbnCThPxXGpzBH4Slx
99
- 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
- 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
- UHxS5bUpkuBMF64/Bd1aP5Kw2ZvhJjygdF69tIaT1dYRxEJAWsKnSD4V+OuT
102
- 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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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
- ArLVuRtqkxGZ5b4iNqirkK68vvYAcwm2D7IO6HHkXaI93hrvGOmiKtILN5vC
110
- eL+kQRpnPfsGPH8WYEfxHrp5VN3DWO3eEk0/PlJrL2UTYzANV1YrwmWSNDmE
111
- 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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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
- aXb62WaITWuwE2s5fXSztkVES0JhBv4MQgPy6P5QDcGIES400iw1V0m2Zr0C
123
- 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
- DJ9bpSens76ljv/9HUudOWRj9aFS9WGLCjnQN7vqmUghnepACkp7plDDXAWD
125
- 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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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
- UQc4hLRhTYkE3FQMf8JnHSav0SZMkpBLg61VwRUj7NwUSkK4nXMhcF26rnlE
140
- 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
- 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
- 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
- O3XkVnLawCUqP8aDihdqiH/J7RdIfP34/gc00ykOuL8Kd1o/Gr+CdWr8W5yg
144
- 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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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
- 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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
- tH/raxVvHi+s6/gxsZ4f4qpR+P/RypL4SfnDvtrvj1EP6vVOxxDK0ej88Lra
66
- 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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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
- nQJu/50lU4tJrb9PkU1A+cOxRasByA8Z1PuiBbXLVO+VdUlkSwr7rDTi3v4P
90
- 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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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
- 7DeKds4Ms9WrkeL5c4Ns9FO6Bo6tlHE0j98HB4ELZAui9nVufzk+kH66vyy5
115
- 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
- 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
- vj++te0cJhuP7dOt5mC7/uz72FaOvcW21vKOYsqiaZwrMkr8xqvmrrwVJSub
118
- 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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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
- 5AHJVzMpaYC6Vt4msmZPeBzgWKAu9vAmWOCpe9TmqG2quVkCpE5pGzIhiQye
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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
- 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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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
- W1EtIWgU6l+sH8UyZC9O/MfukGbqu3Xc+oGh5UxFAsNnodOBPLH6wLrP1lK+
158
- +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
- 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
- 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
- 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
- uzNTE2gkE/kU1wjJ40flAydrxqzXQDNp6imC/X043lq2bd0dqyPSA4skS+Iy
163
- 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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