lingfennan-github_api 0.18.2

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 (126) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +741 -0
  4. data/lib/github_api.rb +93 -0
  5. data/lib/github_api/api.rb +398 -0
  6. data/lib/github_api/api/actions.rb +60 -0
  7. data/lib/github_api/api/arguments.rb +253 -0
  8. data/lib/github_api/api/config.rb +105 -0
  9. data/lib/github_api/api/config/property.rb +30 -0
  10. data/lib/github_api/api/config/property_set.rb +120 -0
  11. data/lib/github_api/api/factory.rb +33 -0
  12. data/lib/github_api/authorization.rb +75 -0
  13. data/lib/github_api/client.rb +77 -0
  14. data/lib/github_api/client/activity.rb +31 -0
  15. data/lib/github_api/client/activity/events.rb +233 -0
  16. data/lib/github_api/client/activity/feeds.rb +50 -0
  17. data/lib/github_api/client/activity/notifications.rb +181 -0
  18. data/lib/github_api/client/activity/starring.rb +130 -0
  19. data/lib/github_api/client/activity/watching.rb +176 -0
  20. data/lib/github_api/client/authorizations.rb +142 -0
  21. data/lib/github_api/client/authorizations/app.rb +98 -0
  22. data/lib/github_api/client/emojis.rb +19 -0
  23. data/lib/github_api/client/gists.rb +289 -0
  24. data/lib/github_api/client/gists/comments.rb +100 -0
  25. data/lib/github_api/client/git_data.rb +31 -0
  26. data/lib/github_api/client/git_data/blobs.rb +51 -0
  27. data/lib/github_api/client/git_data/commits.rb +101 -0
  28. data/lib/github_api/client/git_data/references.rb +150 -0
  29. data/lib/github_api/client/git_data/tags.rb +95 -0
  30. data/lib/github_api/client/git_data/trees.rb +113 -0
  31. data/lib/github_api/client/gitignore.rb +57 -0
  32. data/lib/github_api/client/issues.rb +248 -0
  33. data/lib/github_api/client/issues/assignees.rb +77 -0
  34. data/lib/github_api/client/issues/comments.rb +146 -0
  35. data/lib/github_api/client/issues/events.rb +50 -0
  36. data/lib/github_api/client/issues/labels.rb +189 -0
  37. data/lib/github_api/client/issues/milestones.rb +146 -0
  38. data/lib/github_api/client/markdown.rb +62 -0
  39. data/lib/github_api/client/meta.rb +19 -0
  40. data/lib/github_api/client/orgs.rb +127 -0
  41. data/lib/github_api/client/orgs/hooks.rb +182 -0
  42. data/lib/github_api/client/orgs/members.rb +142 -0
  43. data/lib/github_api/client/orgs/memberships.rb +131 -0
  44. data/lib/github_api/client/orgs/projects.rb +57 -0
  45. data/lib/github_api/client/orgs/teams.rb +407 -0
  46. data/lib/github_api/client/projects.rb +83 -0
  47. data/lib/github_api/client/projects/cards.rb +158 -0
  48. data/lib/github_api/client/projects/columns.rb +146 -0
  49. data/lib/github_api/client/pull_requests.rb +195 -0
  50. data/lib/github_api/client/pull_requests/comments.rb +140 -0
  51. data/lib/github_api/client/pull_requests/reviews.rb +158 -0
  52. data/lib/github_api/client/repos.rb +468 -0
  53. data/lib/github_api/client/repos/branches.rb +48 -0
  54. data/lib/github_api/client/repos/branches/protections.rb +75 -0
  55. data/lib/github_api/client/repos/collaborators.rb +84 -0
  56. data/lib/github_api/client/repos/comments.rb +125 -0
  57. data/lib/github_api/client/repos/commits.rb +80 -0
  58. data/lib/github_api/client/repos/contents.rb +246 -0
  59. data/lib/github_api/client/repos/deployments.rb +138 -0
  60. data/lib/github_api/client/repos/downloads.rb +62 -0
  61. data/lib/github_api/client/repos/forks.rb +48 -0
  62. data/lib/github_api/client/repos/hooks.rb +214 -0
  63. data/lib/github_api/client/repos/keys.rb +104 -0
  64. data/lib/github_api/client/repos/merging.rb +47 -0
  65. data/lib/github_api/client/repos/pages.rb +48 -0
  66. data/lib/github_api/client/repos/projects.rb +62 -0
  67. data/lib/github_api/client/repos/pub_sub_hubbub.rb +133 -0
  68. data/lib/github_api/client/repos/releases.rb +189 -0
  69. data/lib/github_api/client/repos/releases/assets.rb +136 -0
  70. data/lib/github_api/client/repos/releases/tags.rb +24 -0
  71. data/lib/github_api/client/repos/statistics.rb +89 -0
  72. data/lib/github_api/client/repos/statuses.rb +91 -0
  73. data/lib/github_api/client/say.rb +25 -0
  74. data/lib/github_api/client/scopes.rb +46 -0
  75. data/lib/github_api/client/search.rb +133 -0
  76. data/lib/github_api/client/search/legacy.rb +111 -0
  77. data/lib/github_api/client/users.rb +117 -0
  78. data/lib/github_api/client/users/emails.rb +65 -0
  79. data/lib/github_api/client/users/followers.rb +115 -0
  80. data/lib/github_api/client/users/keys.rb +104 -0
  81. data/lib/github_api/configuration.rb +70 -0
  82. data/lib/github_api/connection.rb +82 -0
  83. data/lib/github_api/constants.rb +61 -0
  84. data/lib/github_api/core_ext/array.rb +25 -0
  85. data/lib/github_api/core_ext/hash.rb +91 -0
  86. data/lib/github_api/core_ext/ordered_hash.rb +107 -0
  87. data/lib/github_api/deprecation.rb +39 -0
  88. data/lib/github_api/error.rb +32 -0
  89. data/lib/github_api/error/client_error.rb +89 -0
  90. data/lib/github_api/error/service_error.rb +223 -0
  91. data/lib/github_api/ext/faraday.rb +38 -0
  92. data/lib/github_api/mash.rb +7 -0
  93. data/lib/github_api/middleware.rb +37 -0
  94. data/lib/github_api/mime_type.rb +33 -0
  95. data/lib/github_api/normalizer.rb +23 -0
  96. data/lib/github_api/null_encoder.rb +25 -0
  97. data/lib/github_api/page_iterator.rb +138 -0
  98. data/lib/github_api/page_links.rb +63 -0
  99. data/lib/github_api/paged_request.rb +42 -0
  100. data/lib/github_api/pagination.rb +115 -0
  101. data/lib/github_api/parameter_filter.rb +35 -0
  102. data/lib/github_api/params_hash.rb +115 -0
  103. data/lib/github_api/rate_limit.rb +25 -0
  104. data/lib/github_api/request.rb +85 -0
  105. data/lib/github_api/request/basic_auth.rb +36 -0
  106. data/lib/github_api/request/jsonize.rb +54 -0
  107. data/lib/github_api/request/oauth2.rb +44 -0
  108. data/lib/github_api/request/verbs.rb +63 -0
  109. data/lib/github_api/response.rb +48 -0
  110. data/lib/github_api/response/atom_parser.rb +22 -0
  111. data/lib/github_api/response/follow_redirects.rb +140 -0
  112. data/lib/github_api/response/header.rb +87 -0
  113. data/lib/github_api/response/jsonize.rb +28 -0
  114. data/lib/github_api/response/mashify.rb +24 -0
  115. data/lib/github_api/response/raise_error.rb +22 -0
  116. data/lib/github_api/response/xmlize.rb +27 -0
  117. data/lib/github_api/response_wrapper.rb +161 -0
  118. data/lib/github_api/ssl_certs/cacerts.pem +2183 -0
  119. data/lib/github_api/utils/url.rb +63 -0
  120. data/lib/github_api/validations.rb +22 -0
  121. data/lib/github_api/validations/format.rb +26 -0
  122. data/lib/github_api/validations/presence.rb +32 -0
  123. data/lib/github_api/validations/required.rb +21 -0
  124. data/lib/github_api/validations/token.rb +41 -0
  125. data/lib/github_api/version.rb +5 -0
  126. metadata +338 -0
@@ -0,0 +1,111 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../../api'
4
+
5
+ module Github
6
+ class Client::Search::Legacy < API
7
+ include Github::Utils::Url
8
+
9
+ # Search issues
10
+ #
11
+ # Find issues by state and keyword.
12
+ #
13
+ # @param [Hash] params
14
+ # @option params [String] :state
15
+ # Indicates the state of the issues to return. Can be either open or closed.
16
+ # @option params [String] :keyword
17
+ # The search term
18
+ #
19
+ # @example
20
+ # github = Github.new
21
+ # github.search.legacy.issues 'owner', 'repo-name', 'open','api'
22
+ # github.search.legacy.issues owner: 'owner', repo: 'repo-name', state: 'open', keyword: 'api'
23
+ #
24
+ # @api public
25
+ def issues(*args)
26
+ required = %w[ owner repo state keyword ]
27
+ arguments(args, required: required)
28
+
29
+ get_request("/legacy/issues/search/#{arguments.owner}/#{arguments.repo}/#{arguments.state}/#{escape_uri(arguments.keyword)}", arguments.params)
30
+ end
31
+
32
+ # Search repositories
33
+ #
34
+ # Find repositories by keyword.
35
+ #
36
+ # @param [Hash] params
37
+ # @option params [String] :keyword
38
+ # The search term
39
+ # @option params [String] :language
40
+ # Filter results by language
41
+ # @option params [String] :start_page
42
+ # The page number to fetch
43
+ # @option params [String] :sort
44
+ # The sort field. One of stars, forks, or updated.
45
+ # Default: results are sorted by best match.
46
+ # @option params [String] :order
47
+ # The sort field. if sort param is provided.
48
+ # Can be either asc or desc.
49
+ #
50
+ # @example
51
+ # github = Github.new
52
+ # github.search.legacy.repos 'api'
53
+ # github.search.legacy.repos keyword: 'api'
54
+ #
55
+ # @api public
56
+ def repos(*args)
57
+ arguments(args, required: [:keyword])
58
+
59
+ get_request("/legacy/repos/search/#{escape_uri(arguments.keyword)}", arguments.params)
60
+ end
61
+ alias :repositories :repos
62
+
63
+ # Search users
64
+ #
65
+ # Find users by keyword.
66
+ #
67
+ # @param [Hash] params
68
+ # @option params [String] :keyword
69
+ # The search term
70
+ # @option params [String] :start_page
71
+ # The page number to fetch
72
+ # @option params [String] :sort
73
+ # The sort field. One of stars, forks, or updated.
74
+ # Default: results are sorted by best match.
75
+ # @option params [String] :order
76
+ # The sort field. if sort param is provided.
77
+ # Can be either asc or desc.
78
+ #
79
+ # @example
80
+ # github = Github.new
81
+ # github.search.legacy.users 'user'
82
+ # github.search.legacy.users keyword: 'user'
83
+ #
84
+ # @api public
85
+ def users(*args)
86
+ arguments(args, required: [:keyword])
87
+
88
+ get_request("/legacy/user/search/#{escape_uri(arguments.keyword)}", arguments.params)
89
+ end
90
+
91
+ # Search email
92
+ #
93
+ # This API call is added for compatibility reasons only. There’s no
94
+ # guarantee that full email searches will always be available.
95
+ #
96
+ # @param [Hash] params
97
+ # @option params [String] :email
98
+ # The email address
99
+ #
100
+ # @example
101
+ # github = Github.new
102
+ # github.search.email 'email-address'
103
+ # github.search.email email: 'email-address'
104
+ #
105
+ # @api public
106
+ def email(*args)
107
+ arguments(args, required: [:email])
108
+ get_request("/legacy/user/email/#{arguments.email}", arguments.params)
109
+ end
110
+ end # Search::Legacy
111
+ end # Github
@@ -0,0 +1,117 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../api'
4
+
5
+ module Github
6
+ class Client::Users < API
7
+ # Load all the modules after initializing Repos to avoid superclass mismatch
8
+ require_all 'github_api/client/users',
9
+ 'emails',
10
+ 'followers',
11
+ 'keys'
12
+
13
+ VALID_USER_PARAMS_NAMES = %w[
14
+ name
15
+ email
16
+ blog
17
+ company
18
+ location
19
+ hireable
20
+ bio
21
+ ].freeze
22
+
23
+ # Access to Users::Emails API
24
+ namespace :emails
25
+
26
+ # Access to Users::Followers API
27
+ namespace :followers
28
+
29
+ # Access to Users::Keys API
30
+ namespace :keys
31
+
32
+ # List all users.
33
+ #
34
+ # This provides a dump of every user, in the order that they signed up
35
+ # for GitHub.
36
+ #
37
+ # @param [Hash] params
38
+ # @option [Integer] :since
39
+ # The integer ID of the last User that you’ve seen.
40
+ #
41
+ # @example
42
+ # users = Github::Users.new
43
+ # users.list
44
+ #
45
+ # @api public
46
+ def list(*args)
47
+ arguments(args)
48
+
49
+ response = get_request("/users", arguments.params)
50
+ return response unless block_given?
51
+ response.each { |el| yield el }
52
+ end
53
+ alias :all :list
54
+
55
+ # Get a single unauthenticated user
56
+ #
57
+ # @example
58
+ # github = Github.new
59
+ # github.users.get user: 'user-name'
60
+ #
61
+ # Get the authenticated user
62
+ #
63
+ # @example
64
+ # github = Github.new oauth_token: '...'
65
+ # github.users.get
66
+ #
67
+ # @api public
68
+ def get(*args)
69
+ params = arguments(args).params
70
+
71
+ if user_name = params.delete('user')
72
+ get_request("/users/#{user_name}", params)
73
+ else
74
+ get_request("/user", params)
75
+ end
76
+ end
77
+ alias :find :get
78
+
79
+ # Update the authenticated user
80
+ #
81
+ # @param [Hash] params
82
+ # @option params [String] :name
83
+ # Optional string
84
+ # @option params [String] :email
85
+ # Optional string - publically visible email address
86
+ # @option params [String] :blog
87
+ # Optional string
88
+ # @option params [String] :company
89
+ # Optional string
90
+ # @option params [String] :location
91
+ # Optional string
92
+ # @option params [String] :hireable
93
+ # Optional boolean
94
+ # @option params [String] :bio
95
+ # Optional string
96
+ #
97
+ # @example
98
+ # github = Github.new oauth_token: '..'
99
+ # github.users.update
100
+ # name: "monalisa octocat",
101
+ # email: "octocat@github.com",
102
+ # blog: "https://github.com/blog",
103
+ # company: "GitHub",
104
+ # location: "San Francisco",
105
+ # hireable: true,
106
+ # bio: "There once..."
107
+ #
108
+ # @api public
109
+ def update(*args)
110
+ arguments(args) do
111
+ permit VALID_USER_PARAMS_NAMES
112
+ end
113
+
114
+ patch_request("/user", arguments.params)
115
+ end
116
+ end # Users
117
+ end # Github
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+
3
+ require 'cgi'
4
+
5
+ require_relative '../../api'
6
+
7
+ module Github
8
+ class Client::Users::Emails < API
9
+
10
+ # List email addresses for the authenticated user
11
+ #
12
+ # @example
13
+ # github = Github.new oauth_token: '...'
14
+ # github.users.emails.list
15
+ # github.users.emails.list { |email| ... }
16
+ #
17
+ # @return [Hash]
18
+ #
19
+ # @api public
20
+ def list(*args)
21
+ arguments(args)
22
+ response = get_request("/user/emails", arguments.params)
23
+ return response unless block_given?
24
+ response.each { |el| yield el }
25
+ end
26
+ alias :all :list
27
+
28
+ # Add email address(es) for the authenticated user
29
+ #
30
+ # @param [Array[String]] emails
31
+ # You can include a single email address or an array of addresses
32
+ #
33
+ # @example
34
+ # github = Github.new oauth_token: '...'
35
+ # github.users.emails.add "octocat@github.com", "support@github.com"
36
+ #
37
+ # @api public
38
+ def add(*args)
39
+ arguments(args)
40
+ params = arguments.params
41
+ params['data'] = arguments.remaining unless arguments.remaining.empty?
42
+
43
+ post_request("/user/emails", params)
44
+ end
45
+ alias :<< :add
46
+
47
+ # Delete email address(es) for the authenticated user
48
+ #
49
+ # @param [Array[String]] emails
50
+ # You can include a single email address or an array of addresses
51
+ #
52
+ # @example
53
+ # github = Github.new oauth_token: '...'
54
+ # github.users.emails.delete "octocat@github.com", "support@github.com"
55
+ #
56
+ # @api public
57
+ def delete(*args)
58
+ arguments(args)
59
+ params = arguments.params
60
+ params['data'] = arguments.remaining unless arguments.remaining.empty?
61
+
62
+ delete_request("/user/emails", params)
63
+ end
64
+ end # Users::Emails
65
+ end # Github
@@ -0,0 +1,115 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../../api'
4
+
5
+ module Github
6
+ class Client::Users::Followers < API
7
+
8
+ # List a user's followers
9
+ #
10
+ # @example
11
+ # github = Github.new
12
+ # github.users.followers.list 'user-name'
13
+ # github.users.followers.list 'user-name' { |user| ... }
14
+ #
15
+ # List the authenticated user's followers
16
+ #
17
+ # @example
18
+ # github = Github.new oauth_token: '...'
19
+ # github.users.followers
20
+ # github.users.followers { |user| ... }
21
+ #
22
+ # @api public
23
+ def list(*args)
24
+ params = arguments(args).params
25
+
26
+ response = if user_name = arguments.remaining.first
27
+ get_request("/users/#{user_name}/followers", params)
28
+ else
29
+ get_request("/user/followers", params)
30
+ end
31
+ return response unless block_given?
32
+ response.each { |el| yield el }
33
+ end
34
+ alias :all :list
35
+
36
+ # List who a user is following
37
+ #
38
+ # @example
39
+ # github = Github.new
40
+ # github.users.followers.following 'user-name'
41
+ # github.users.followers.following 'user-name' { |user| ... }
42
+ #
43
+ # List who the authenicated user is following
44
+ #
45
+ # @example
46
+ # github = Github.new oauth_token: '...'
47
+ # github.users.followers.following
48
+ #
49
+ # @api public
50
+ def following(*args)
51
+ params = arguments(args).params
52
+
53
+ response = if user_name = arguments.remaining.first
54
+ get_request("/users/#{user_name}/following", params)
55
+ else
56
+ get_request("/user/following", params)
57
+ end
58
+ return response unless block_given?
59
+ response.each { |el| yield el }
60
+ end
61
+
62
+ # Check if you are following a user
63
+ #
64
+ # @example
65
+ # github = Github.new oauth_token: '...'
66
+ # github.users.followers.following? 'user-name'
67
+ # github.users.followers.following? username: 'user-name'
68
+ #
69
+ # Check if one user follows another
70
+ #
71
+ # @example
72
+ # github = Github.new oauth_token: '...'
73
+ # github.users.followers.following? username: 'user-name',
74
+ # target_user: 'target-user-name'
75
+ #
76
+ # @api public
77
+ def following?(*args)
78
+ arguments(args, required: [:username])
79
+ params = arguments.params
80
+ if target_user = params.delete('target_user')
81
+ get_request("/users/#{arguments.username}/following/#{target_user}", params)
82
+ else
83
+ get_request("/user/following/#{arguments.username}", params)
84
+ end
85
+ true
86
+ rescue Github::Error::NotFound
87
+ false
88
+ end
89
+
90
+ # Follow a user
91
+ #
92
+ # @example
93
+ # github = Github.new oauth_token: '...'
94
+ # github.users.followers.follow 'user-name'
95
+ # github.users.followers.follow username: 'user-name'
96
+ #
97
+ # @api public
98
+ def follow(*args)
99
+ arguments(args, required: [:username])
100
+ put_request("/user/following/#{arguments.username}", arguments.params)
101
+ end
102
+
103
+ # Unfollow a user
104
+ #
105
+ # @example
106
+ # github = Github.new oauth_token: '...'
107
+ # github.users.followers.unfollow 'user-name'
108
+ # github.users.followers.unfollow username: 'user-name'
109
+ #
110
+ def unfollow(*args)
111
+ arguments(args, required: [:username])
112
+ delete_request("/user/following/#{arguments.username}", arguments.params)
113
+ end
114
+ end # Users::Followers
115
+ end # Github
@@ -0,0 +1,104 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../../api'
4
+
5
+ module Github
6
+ class Client::Users::Keys < API
7
+
8
+ VALID_KEY_PARAM_NAMES = %w[ title key ].freeze
9
+
10
+ # List public keys for the authenticated user
11
+ #
12
+ # @example
13
+ # github = Github.new oauth_token: '...'
14
+ # github.users.keys.list
15
+ # github.users.keys.list { |key| ... }
16
+ #
17
+ # List public keys for the specified user
18
+ #
19
+ # @example
20
+ # github.users.keys.list user: 'user-name'
21
+ # github.users.keys.list user: 'user-name' { |key| ... }
22
+ #
23
+ # @return [Hash]
24
+ #
25
+ # @api public
26
+ def list(*args)
27
+ params = arguments(args).params
28
+ response = if (user = params.delete('user'))
29
+ get_request("/users/#{user}/keys", params)
30
+ else
31
+ get_request("/user/keys", params)
32
+ end
33
+ return response unless block_given?
34
+ response.each { |el| yield el }
35
+ end
36
+ alias :all :list
37
+
38
+ # Get a single pulic key for the authenticated user
39
+ #
40
+ # @example
41
+ # github = Github.new oauth_token: '...'
42
+ # github.users.keys.get 'key-id'
43
+ #
44
+ # @api public
45
+ def get(*args)
46
+ arguments(args, required: [:id])
47
+ get_request("/user/keys/#{arguments.id}", arguments.params)
48
+ end
49
+ alias :find :get
50
+
51
+ # Create a public key for the authenticated user
52
+ #
53
+ # @param [Hash] params
54
+ # @option [String] :title
55
+ # Required string
56
+ # @option [String] :key
57
+ # Required string. sha key
58
+ #
59
+ # @example
60
+ # github = Github.new oauth_token: '...'
61
+ # github.users.keys.create "title": "octocat@octomac", "key": "ssh-rsa AAA..."
62
+ #
63
+ # @api public
64
+ def create(*args)
65
+ arguments(args) do
66
+ permit VALID_KEY_PARAM_NAMES
67
+ end
68
+ post_request("/user/keys", arguments.params)
69
+ end
70
+
71
+ # Update a public key for the authenticated user
72
+ #
73
+ # @param [Hash] params
74
+ # @option [String] :title
75
+ # Required string
76
+ # @option [String] :key
77
+ # Required string. sha key
78
+ #
79
+ # @example
80
+ # github = Github.new oauth_token: '...'
81
+ # github.users.keys.update 'key-id', "title": "octocat@octomac",
82
+ # "key": "ssh-rsa AAA..."
83
+ #
84
+ # @api public
85
+ def update(*args)
86
+ arguments(args, required: [:id]) do
87
+ permit VALID_KEY_PARAM_NAMES
88
+ end
89
+ patch_request("/user/keys/#{arguments.id}", arguments.params)
90
+ end
91
+
92
+ # Delete a public key for the authenticated user
93
+ #
94
+ # @example
95
+ # github = Github.new oauth_token: '...'
96
+ # github.users.keys.delete 'key-id'
97
+ #
98
+ # @api public
99
+ def delete(*args)
100
+ arguments(args, required: [:id])
101
+ delete_request("/user/keys/#{arguments.id}", arguments.params)
102
+ end
103
+ end # Users::Keys
104
+ end # Github