octodoggy 4.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/CONTRIBUTING.md +22 -0
- data/LICENSE.md +20 -0
- data/README.md +714 -0
- data/Rakefile +22 -0
- data/lib/ext/sawyer/relation.rb +10 -0
- data/lib/octokit.rb +59 -0
- data/lib/octokit/arguments.rb +14 -0
- data/lib/octokit/authentication.rb +82 -0
- data/lib/octokit/client.rb +238 -0
- data/lib/octokit/client/authorizations.rb +244 -0
- data/lib/octokit/client/commit_comments.rb +95 -0
- data/lib/octokit/client/commits.rb +239 -0
- data/lib/octokit/client/contents.rb +162 -0
- data/lib/octokit/client/deployments.rb +62 -0
- data/lib/octokit/client/downloads.rb +50 -0
- data/lib/octokit/client/emojis.rb +18 -0
- data/lib/octokit/client/events.rb +151 -0
- data/lib/octokit/client/feeds.rb +33 -0
- data/lib/octokit/client/gists.rb +233 -0
- data/lib/octokit/client/gitignore.rb +43 -0
- data/lib/octokit/client/hooks.rb +297 -0
- data/lib/octokit/client/integrations.rb +77 -0
- data/lib/octokit/client/issues.rb +321 -0
- data/lib/octokit/client/labels.rb +156 -0
- data/lib/octokit/client/legacy_search.rb +42 -0
- data/lib/octokit/client/licenses.rb +45 -0
- data/lib/octokit/client/markdown.rb +27 -0
- data/lib/octokit/client/meta.rb +21 -0
- data/lib/octokit/client/milestones.rb +87 -0
- data/lib/octokit/client/notifications.rb +171 -0
- data/lib/octokit/client/objects.rb +141 -0
- data/lib/octokit/client/organizations.rb +768 -0
- data/lib/octokit/client/pages.rb +63 -0
- data/lib/octokit/client/projects.rb +314 -0
- data/lib/octokit/client/pub_sub_hubbub.rb +111 -0
- data/lib/octokit/client/pull_requests.rb +301 -0
- data/lib/octokit/client/rate_limit.rb +54 -0
- data/lib/octokit/client/reactions.rb +158 -0
- data/lib/octokit/client/refs.rb +118 -0
- data/lib/octokit/client/releases.rb +163 -0
- data/lib/octokit/client/repositories.rb +654 -0
- data/lib/octokit/client/repository_invitations.rb +103 -0
- data/lib/octokit/client/reviews.rb +174 -0
- data/lib/octokit/client/say.rb +19 -0
- data/lib/octokit/client/search.rb +76 -0
- data/lib/octokit/client/service_status.rb +38 -0
- data/lib/octokit/client/source_import.rb +161 -0
- data/lib/octokit/client/stats.rb +105 -0
- data/lib/octokit/client/statuses.rb +47 -0
- data/lib/octokit/client/traffic.rb +69 -0
- data/lib/octokit/client/users.rb +354 -0
- data/lib/octokit/configurable.rb +147 -0
- data/lib/octokit/connection.rb +199 -0
- data/lib/octokit/default.rb +166 -0
- data/lib/octokit/enterprise_admin_client.rb +40 -0
- data/lib/octokit/enterprise_admin_client/admin_stats.rb +120 -0
- data/lib/octokit/enterprise_admin_client/license.rb +18 -0
- data/lib/octokit/enterprise_admin_client/orgs.rb +27 -0
- data/lib/octokit/enterprise_admin_client/search_indexing.rb +83 -0
- data/lib/octokit/enterprise_admin_client/users.rb +128 -0
- data/lib/octokit/enterprise_management_console_client.rb +50 -0
- data/lib/octokit/enterprise_management_console_client/management_console.rb +176 -0
- data/lib/octokit/error.rb +286 -0
- data/lib/octokit/gist.rb +36 -0
- data/lib/octokit/middleware/follow_redirects.rb +131 -0
- data/lib/octokit/organization.rb +17 -0
- data/lib/octokit/preview.rb +38 -0
- data/lib/octokit/rate_limit.rb +33 -0
- data/lib/octokit/repo_arguments.rb +19 -0
- data/lib/octokit/repository.rb +93 -0
- data/lib/octokit/response/feed_parser.rb +21 -0
- data/lib/octokit/response/raise_error.rb +21 -0
- data/lib/octokit/user.rb +19 -0
- data/lib/octokit/version.rb +17 -0
- data/lib/octokit/warnable.rb +17 -0
- data/octokit.gemspec +22 -0
- metadata +160 -0
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
3
|
+
module Octokit
|
4
|
+
class Client
|
5
|
+
|
6
|
+
# Methods for the Issue Labels API
|
7
|
+
#
|
8
|
+
# @see https://developer.github.com/v3/issues/labels/
|
9
|
+
module Labels
|
10
|
+
|
11
|
+
# List available labels for a repository
|
12
|
+
#
|
13
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
14
|
+
# @return [Array<Sawyer::Resource>] A list of the labels across the repository
|
15
|
+
# @see https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository
|
16
|
+
# @example List labels for octokit/octokit.rb
|
17
|
+
# Octokit.labels("octokit/octokit.rb")
|
18
|
+
def labels(repo, options = {})
|
19
|
+
paginate "#{Repository.path repo}/labels", options
|
20
|
+
end
|
21
|
+
|
22
|
+
# Get single label for a repository
|
23
|
+
#
|
24
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
25
|
+
# @param name [String] Name of the label
|
26
|
+
# @return [Sawyer::Resource] A single label from the repository
|
27
|
+
# @see https://developer.github.com/v3/issues/labels/#get-a-single-label
|
28
|
+
# @example Get the "V3 Addition" label from octokit/octokit.rb
|
29
|
+
# Octokit.labels("octokit/octokit.rb", "V3 Addition")
|
30
|
+
def label(repo, name, options = {})
|
31
|
+
get "#{Repository.path repo}/labels/#{name}", options
|
32
|
+
end
|
33
|
+
|
34
|
+
# Add a label to a repository
|
35
|
+
#
|
36
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
37
|
+
# @param label [String] A new label
|
38
|
+
# @param color [String] A color, in hex, without the leading #
|
39
|
+
# @return [Sawyer::Resource] The new label
|
40
|
+
# @see https://developer.github.com/v3/issues/labels/#create-a-label
|
41
|
+
# @example Add a new label "Version 1.0" with color "#cccccc"
|
42
|
+
# Octokit.add_label("octokit/octokit.rb", "Version 1.0", "cccccc")
|
43
|
+
def add_label(repo, label, color="ffffff", options = {})
|
44
|
+
post "#{Repository.path repo}/labels", options.merge({:name => label, :color => color})
|
45
|
+
end
|
46
|
+
|
47
|
+
# Update a label
|
48
|
+
#
|
49
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
50
|
+
# @param label [String] The name of the label which will be updated
|
51
|
+
# @param options [Hash] A customizable set of options.
|
52
|
+
# @option options [String] :name An updated label name
|
53
|
+
# @option options [String] :color An updated color value, in hex, without leading #
|
54
|
+
# @return [Sawyer::Resource] The updated label
|
55
|
+
# @see https://developer.github.com/v3/issues/labels/#update-a-label
|
56
|
+
# @example Update the label "Version 1.0" with new color "#cceeaa"
|
57
|
+
# Octokit.update_label("octokit/octokit.rb", "Version 1.0", {:color => "cceeaa"})
|
58
|
+
def update_label(repo, label, options = {})
|
59
|
+
patch "#{Repository.path repo}/labels/#{label}", options
|
60
|
+
end
|
61
|
+
|
62
|
+
# Delete a label from a repository.
|
63
|
+
#
|
64
|
+
# This deletes the label from the repository, and removes it from all issues.
|
65
|
+
#
|
66
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
67
|
+
# @param label [String] String name of the label
|
68
|
+
# @return [Boolean] Success
|
69
|
+
# @see https://developer.github.com/v3/issues/labels/#delete-a-label
|
70
|
+
# @example Delete the label "Version 1.0" from the repository.
|
71
|
+
# Octokit.delete_label!("octokit/octokit.rb", "Version 1.0")
|
72
|
+
def delete_label!(repo, label, options = {})
|
73
|
+
boolean_from_response :delete, "#{Repository.path repo}/labels/#{label}", options
|
74
|
+
end
|
75
|
+
|
76
|
+
# Remove a label from an Issue
|
77
|
+
#
|
78
|
+
# This removes the label from the Issue
|
79
|
+
#
|
80
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
81
|
+
# @param number [Integer] Number ID of the issue
|
82
|
+
# @param label [String] String name of the label
|
83
|
+
# @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
|
84
|
+
# @see https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue
|
85
|
+
# @example Remove the label "Version 1.0" from the repository.
|
86
|
+
# Octokit.remove_label("octokit/octokit.rb", 23, "Version 1.0")
|
87
|
+
def remove_label(repo, number, label, options = {})
|
88
|
+
delete "#{Repository.path repo}/issues/#{number}/labels/#{label}", options
|
89
|
+
end
|
90
|
+
|
91
|
+
# Remove all label from an Issue
|
92
|
+
#
|
93
|
+
# This removes the label from the Issue
|
94
|
+
#
|
95
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
96
|
+
# @param number [Integer] Number ID of the issue
|
97
|
+
# @return [Boolean] Success of operation
|
98
|
+
# @see https://developer.github.com/v3/issues/labels/#remove-all-labels-from-an-issue
|
99
|
+
# @example Remove all labels from Issue #23
|
100
|
+
# Octokit.remove_all_labels("octokit/octokit.rb", 23)
|
101
|
+
def remove_all_labels(repo, number, options = {})
|
102
|
+
boolean_from_response :delete, "#{Repository.path repo}/issues/#{number}/labels", options
|
103
|
+
end
|
104
|
+
|
105
|
+
# List labels for a given issue
|
106
|
+
#
|
107
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
108
|
+
# @param number [Integer] Number ID of the issue
|
109
|
+
# @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
|
110
|
+
# @see https://developer.github.com/v3/issues/labels/#list-labels-on-an-issue
|
111
|
+
# @example List labels for octokit/octokit.rb, issue # 1
|
112
|
+
# Octokit.labels_for_issue("octokit/octokit.rb", 1)
|
113
|
+
def labels_for_issue(repo, number, options = {})
|
114
|
+
paginate "#{Repository.path repo}/issues/#{number}/labels", options
|
115
|
+
end
|
116
|
+
|
117
|
+
# Add label(s) to an Issue
|
118
|
+
#
|
119
|
+
# @param repo [Integer, String, Repository, Hash] A Github repository
|
120
|
+
# @param number [Integer] Number ID of the issue
|
121
|
+
# @param labels [Array] An array of labels to apply to this Issue
|
122
|
+
# @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
|
123
|
+
# @see https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue
|
124
|
+
# @example Add two labels for octokit/octokit.rb
|
125
|
+
# Octokit.add_labels_to_an_issue("octokit/octokit.rb", 10, ['V3 Transition', 'Improvement'])
|
126
|
+
def add_labels_to_an_issue(repo, number, labels)
|
127
|
+
post "#{Repository.path repo}/issues/#{number}/labels", labels
|
128
|
+
end
|
129
|
+
|
130
|
+
# Replace all labels on an Issue
|
131
|
+
#
|
132
|
+
# @param repo [Integer, String, Repository, Hash] A Github repository
|
133
|
+
# @param number [Integer] Number ID of the issue
|
134
|
+
# @param labels [Array] An array of labels to use as replacement
|
135
|
+
# @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
|
136
|
+
# @see https://developer.github.com/v3/issues/labels/#replace-all-labels-for-an-issue
|
137
|
+
# @example Replace labels for octokit/octokit.rb Issue #10
|
138
|
+
# Octokit.replace_all_labels("octokit/octokit.rb", 10, ['V3 Transition', 'Improvement'])
|
139
|
+
def replace_all_labels(repo, number, labels, options = {})
|
140
|
+
put "#{Repository.path repo}/issues/#{number}/labels", labels
|
141
|
+
end
|
142
|
+
|
143
|
+
# Get labels for every issue in a milestone
|
144
|
+
#
|
145
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
146
|
+
# @param number [Integer] Number ID of the milestone
|
147
|
+
# @return [Array<Sawyer::Resource>] A list of the labels across the milestone
|
148
|
+
# @see http://developer.github.com/v3/issues/labels/#get-labels-for-every-issue-in-a-milestone
|
149
|
+
# @example List all labels for milestone #2 on octokit/octokit.rb
|
150
|
+
# Octokit.labels_for_milestone("octokit/octokit.rb", 2)
|
151
|
+
def labels_for_milestone(repo, number, options = {})
|
152
|
+
paginate "#{Repository.path repo}/milestones/#{number}/labels", options
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Legacy Search API
|
5
|
+
#
|
6
|
+
# @see https://developer.github.com/v3/search/
|
7
|
+
module LegacySearch
|
8
|
+
|
9
|
+
# Legacy repository search
|
10
|
+
#
|
11
|
+
# @see https://developer.github.com/v3/search/#search-repositories
|
12
|
+
# @param q [String] Search keyword
|
13
|
+
# @return [Array<Sawyer::Resource>] List of repositories found
|
14
|
+
def legacy_search_repositories(q, options = {})
|
15
|
+
get("legacy/repos/search/#{q}", options)['repositories']
|
16
|
+
end
|
17
|
+
|
18
|
+
# Legacy search issues within a repository
|
19
|
+
#
|
20
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
21
|
+
# @param search_term [String] The term to search for
|
22
|
+
# @param state [String] :state (open) <tt>open</tt> or <tt>closed</tt>.
|
23
|
+
# @return [Array<Sawyer::Resource>] A list of issues matching the search term and state
|
24
|
+
# @example Search for 'test' in the open issues for sferik/rails_admin
|
25
|
+
# Octokit.search_issues("sferik/rails_admin", 'test', 'open')
|
26
|
+
def legacy_search_issues(repo, search_term, state='open', options = {})
|
27
|
+
get("legacy/issues/search/#{Repository.new(repo)}/#{state}/#{search_term}", options)['issues']
|
28
|
+
end
|
29
|
+
|
30
|
+
# Search for user.
|
31
|
+
#
|
32
|
+
# @param search [String] User to search for.
|
33
|
+
# @return [Array<Sawyer::Resource>] Array of hashes representing users.
|
34
|
+
# @see https://developer.github.com/v3/search/#search-users
|
35
|
+
# @example
|
36
|
+
# Octokit.search_users('pengwynn')
|
37
|
+
def legacy_search_users(search, options = {})
|
38
|
+
get("legacy/user/search/#{search}", options)['users']
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for licenses API
|
5
|
+
#
|
6
|
+
module Licenses
|
7
|
+
|
8
|
+
# List all licenses
|
9
|
+
#
|
10
|
+
# @see https://developer.github.com/v3/licenses/#list-all-licenses
|
11
|
+
# @return [Array<Sawyer::Resource>] A list of licenses
|
12
|
+
# @example
|
13
|
+
# Octokit.licenses
|
14
|
+
def licenses(options = {})
|
15
|
+
options = ensure_api_media_type(:licenses, options)
|
16
|
+
paginate "licenses", options
|
17
|
+
end
|
18
|
+
|
19
|
+
# List an individual license
|
20
|
+
#
|
21
|
+
# @see https://developer.github.com/v3/licenses/#get-an-individual-license
|
22
|
+
# @param license_name [String] The license name
|
23
|
+
# @return <Sawyer::Resource> An individual license
|
24
|
+
# @example
|
25
|
+
# Octokit.license 'mit'
|
26
|
+
def license(license_name, options = {})
|
27
|
+
options = ensure_api_media_type(:licenses, options)
|
28
|
+
get "licenses/#{license_name}", options
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns the contents of the repository’s license file, if one is detected.
|
32
|
+
#
|
33
|
+
# @see https://developer.github.com/v3/licenses/#get-the-contents-of-a-repositorys-license
|
34
|
+
# @param repo [Integer, String, Repository, Hash] A GitHub repository
|
35
|
+
# @option options [String] :ref name of the Commit/Branch/Tag. Defaults to 'master'.
|
36
|
+
# @return [Sawyer::Resource] The detail of the license file
|
37
|
+
# @example
|
38
|
+
# Octokit.license_contents 'benbalter/licensee'
|
39
|
+
def repository_license_contents(repo, options = {})
|
40
|
+
options = ensure_api_media_type(:licenses, options)
|
41
|
+
get "#{Repository.path repo}/license", options
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Markdown API
|
5
|
+
#
|
6
|
+
# @see https://developer.github.com/v3/markdown/
|
7
|
+
module Markdown
|
8
|
+
|
9
|
+
# Render an arbitrary Markdown document
|
10
|
+
#
|
11
|
+
# @param text [String] Markdown source
|
12
|
+
# @option options [String] (optional) :mode (`markdown` or `gfm`)
|
13
|
+
# @option options [String] (optional) :context Repo context
|
14
|
+
# @return [String] HTML renderization
|
15
|
+
# @see https://developer.github.com/v3/markdown/#render-an-arbitrary-markdown-document
|
16
|
+
# @example Render some GFM
|
17
|
+
# Octokit.markdown('Fixed in #111', :mode => "gfm", :context => "octokit/octokit.rb")
|
18
|
+
def markdown(text, options = {})
|
19
|
+
options[:text] = text
|
20
|
+
options[:repo] = Repository.new(options[:repo]) if options[:repo]
|
21
|
+
options[:accept] = 'application/vnd.github.raw'
|
22
|
+
|
23
|
+
post "markdown", options
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Meta API
|
5
|
+
#
|
6
|
+
# @see https://developer.github.com/v3/meta/
|
7
|
+
module Meta
|
8
|
+
|
9
|
+
# Get meta information about GitHub.com, the service.
|
10
|
+
# @see https://developer.github.com/v3/meta/#meta
|
11
|
+
# @return [Sawyer::Resource] Hash with meta information.
|
12
|
+
# @example Get GitHub meta information
|
13
|
+
# @client.github_meta
|
14
|
+
def meta(options = {})
|
15
|
+
get "meta", options
|
16
|
+
end
|
17
|
+
alias :github_meta :meta
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Issues Milestones API
|
5
|
+
#
|
6
|
+
# @see https://developer.github.com/v3/issues/milestones/
|
7
|
+
module Milestones
|
8
|
+
|
9
|
+
# List milestones for a repository
|
10
|
+
#
|
11
|
+
# @param repository [Integer, String, Repository, Hash] A GitHub repository
|
12
|
+
# @param options [Hash] A customizable set of options.
|
13
|
+
# @option options [Integer] :milestone Milestone number.
|
14
|
+
# @option options [String] :state (open) State: <tt>open</tt>, <tt>closed</tt>, or <tt>all</tt>.
|
15
|
+
# @option options [String] :sort (created) Sort: <tt>created</tt>, <tt>updated</tt>, or <tt>comments</tt>.
|
16
|
+
# @option options [String] :direction (desc) Direction: <tt>asc</tt> or <tt>desc</tt>.
|
17
|
+
# @return [Array<Sawyer::Resource>] A list of milestones for a repository.
|
18
|
+
# @see https://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository
|
19
|
+
# @example List milestones for a repository
|
20
|
+
# Octokit.list_milestones("octokit/octokit.rb")
|
21
|
+
def list_milestones(repository, options = {})
|
22
|
+
paginate "#{Repository.path repository}/milestones", options
|
23
|
+
end
|
24
|
+
alias :milestones :list_milestones
|
25
|
+
|
26
|
+
# Get a single milestone for a repository
|
27
|
+
#
|
28
|
+
# @param repository [Integer, String, Repository, Hash] A GitHub repository
|
29
|
+
# @param options [Hash] A customizable set of options.
|
30
|
+
# @option options [Integer] :milestone Milestone number.
|
31
|
+
# @return [Sawyer::Resource] A single milestone from a repository.
|
32
|
+
# @see https://developer.github.com/v3/issues/milestones/#get-a-single-milestone
|
33
|
+
# @example Get a single milestone for a repository
|
34
|
+
# Octokit.milestone("octokit/octokit.rb", 1)
|
35
|
+
def milestone(repository, number, options = {})
|
36
|
+
get "#{Repository.path repository}/milestones/#{number}", options
|
37
|
+
end
|
38
|
+
|
39
|
+
# Create a milestone for a repository
|
40
|
+
#
|
41
|
+
# @param repository [Integer, String, Repository, Hash] A GitHub repository
|
42
|
+
# @param title [String] A unique title.
|
43
|
+
# @param options [Hash] A customizable set of options.
|
44
|
+
# @option options [String] :state (open) State: <tt>open</tt> or <tt>closed</tt>.
|
45
|
+
# @option options [String] :description A meaningful description
|
46
|
+
# @option options [Time] :due_on Set if the milestone has a due date
|
47
|
+
# @return [Sawyer::Resource] A single milestone object
|
48
|
+
# @see https://developer.github.com/v3/issues/milestones/#create-a-milestone
|
49
|
+
# @example Create a milestone for a repository
|
50
|
+
# Octokit.create_milestone("octokit/octokit.rb", "0.7.0", {:description => 'Add support for v3 of Github API'})
|
51
|
+
def create_milestone(repository, title, options = {})
|
52
|
+
post "#{Repository.path repository}/milestones", options.merge({:title => title})
|
53
|
+
end
|
54
|
+
|
55
|
+
# Update a milestone for a repository
|
56
|
+
#
|
57
|
+
# @param repository [Integer, String, Repository, Hash] A GitHub repository
|
58
|
+
# @param number [String, Integer] ID of the milestone
|
59
|
+
# @param options [Hash] A customizable set of options.
|
60
|
+
# @option options [String] :title A unique title.
|
61
|
+
# @option options [String] :state (open) State: <tt>open</tt> or <tt>closed</tt>.
|
62
|
+
# @option options [String] :description A meaningful description
|
63
|
+
# @option options [Time] :due_on Set if the milestone has a due date
|
64
|
+
# @return [Sawyer::Resource] A single milestone object
|
65
|
+
# @see https://developer.github.com/v3/issues/milestones/#update-a-milestone
|
66
|
+
# @example Update a milestone for a repository
|
67
|
+
# Octokit.update_milestone("octokit/octokit.rb", 1, {:description => 'Add support for v3 of Github API'})
|
68
|
+
def update_milestone(repository, number, options = {})
|
69
|
+
patch "#{Repository.path repository}/milestones/#{number}", options
|
70
|
+
end
|
71
|
+
alias :edit_milestone :update_milestone
|
72
|
+
|
73
|
+
# Delete a single milestone for a repository
|
74
|
+
#
|
75
|
+
# @param repository [Integer, String, Repository, Hash] A GitHub repository
|
76
|
+
# @param options [Hash] A customizable set of options.
|
77
|
+
# @option options [Integer] :milestone Milestone number.
|
78
|
+
# @return [Boolean] Success
|
79
|
+
# @see https://developer.github.com/v3/issues/milestones/#delete-a-milestone
|
80
|
+
# @example Delete a single milestone from a repository
|
81
|
+
# Octokit.delete_milestone("octokit/octokit.rb", 1)
|
82
|
+
def delete_milestone(repository, number, options = {})
|
83
|
+
boolean_from_response :delete, "#{Repository.path repository}/milestones/#{number}", options
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,171 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Notifications API
|
5
|
+
#
|
6
|
+
# @see https://developer.github.com/v3/activity/notifications/
|
7
|
+
module Notifications
|
8
|
+
|
9
|
+
# List your notifications
|
10
|
+
#
|
11
|
+
# @param options [Hash] Optional parameters
|
12
|
+
# @option options [Boolean] :all 'true' to show notifications marked as
|
13
|
+
# read.
|
14
|
+
# @option options [Boolean] :participating 'true' to show only
|
15
|
+
# notifications in which the user is directly participating or
|
16
|
+
# mentioned.
|
17
|
+
# @option options [String] :since Time filters out any notifications
|
18
|
+
# updated before the given time. The time should be passed in as UTC in
|
19
|
+
# the ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z'
|
20
|
+
# @return [Array<Sawyer::Resource>] Array of notifications.
|
21
|
+
# @see https://developer.github.com/v3/activity/notifications/#list-your-notifications
|
22
|
+
# @example Get users notifications
|
23
|
+
# @client.notifications
|
24
|
+
# @example Get all notifications since a certain time.
|
25
|
+
# @client.notifications({all: true, since: '2012-10-09T23:39:01Z'})
|
26
|
+
def notifications(options = {})
|
27
|
+
paginate "notifications", options
|
28
|
+
end
|
29
|
+
|
30
|
+
# List your notifications in a repository
|
31
|
+
#
|
32
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
33
|
+
# @param options [Hash] Optional parameters
|
34
|
+
# @option options [Boolean] :all 'true' to show notifications marked as
|
35
|
+
# read.
|
36
|
+
# @option options [Boolean] :participating 'true' to show only
|
37
|
+
# notifications in which the user is directly participating or
|
38
|
+
# mentioned.
|
39
|
+
# @option options [String] :since Time filters out any notifications
|
40
|
+
# updated before the given time. The time should be passed in as UTC in
|
41
|
+
# the ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z'
|
42
|
+
# @return [Array<Sawyer::Resource>] Array of notifications.
|
43
|
+
# @see https://developer.github.com/v3/activity/notifications/#list-your-notifications-in-a-repository
|
44
|
+
# @example Get your notifications for octokit/octokit.rb
|
45
|
+
# @client.repository_notifications('octokit/octokit.rb')
|
46
|
+
# @example Get your notifications for octokit/octokit.rb since a time.
|
47
|
+
# @client.repository_notifications({since: '2012-10-09T23:39:01Z'})
|
48
|
+
def repository_notifications(repo, options = {})
|
49
|
+
paginate "#{Repository.path repo}/notifications", options
|
50
|
+
end
|
51
|
+
alias :repo_notifications :repository_notifications
|
52
|
+
|
53
|
+
# Mark notifications as read
|
54
|
+
#
|
55
|
+
# @param options [Hash] Optional parameters
|
56
|
+
# @option options [Boolean] :unread Changes the unread status of the
|
57
|
+
# threads.
|
58
|
+
# @option options [Boolean] :read Inverse of 'unread'.
|
59
|
+
# @option options [String] :last_read_at ('Now') Describes the last point
|
60
|
+
# that notifications were checked. Anything updated since this time
|
61
|
+
# will not be updated. The time should be passed in as UTC in the
|
62
|
+
# ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z'
|
63
|
+
# @return [Boolean] True if marked as read, false otherwise
|
64
|
+
# @see https://developer.github.com/v3/activity/notifications/#mark-as-read
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# @client.mark_notifications_as_read
|
68
|
+
def mark_notifications_as_read(options = {})
|
69
|
+
request :put, "notifications", options
|
70
|
+
|
71
|
+
last_response.status == 205
|
72
|
+
end
|
73
|
+
|
74
|
+
# Mark notifications from a specific repository as read
|
75
|
+
#
|
76
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
77
|
+
# @param options [Hash] Optional parameters
|
78
|
+
# @option options [Boolean] :unread Changes the unread status of the
|
79
|
+
# threads.
|
80
|
+
# @option options [Boolean] :read Inverse of 'unread'.
|
81
|
+
# @option options [String] :last_read_at ('Now') Describes the last point
|
82
|
+
# that notifications were checked. Anything updated since this time
|
83
|
+
# will not be updated. The time should be passed in as UTC in the
|
84
|
+
# ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z'
|
85
|
+
# @return [Boolean] True if marked as read, false otherwise
|
86
|
+
# @see https://developer.github.com/v3/activity/notifications/#mark-notifications-as-read-in-a-repository
|
87
|
+
# @example
|
88
|
+
# @client.mark_notifications_as_read("octokit/octokit.rb")
|
89
|
+
def mark_repository_notifications_as_read(repo, options = {})
|
90
|
+
request :put, "#{Repository.path repo}/notifications", options
|
91
|
+
|
92
|
+
last_response.status == 205
|
93
|
+
end
|
94
|
+
alias :mark_repo_notifications_as_read :mark_repository_notifications_as_read
|
95
|
+
|
96
|
+
# List notifications for a specific thread
|
97
|
+
#
|
98
|
+
# @param thread_id [Integer] Id of the thread.
|
99
|
+
# @return [Array<Sawyer::Resource>] Array of notifications.
|
100
|
+
# @see https://developer.github.com/v3/activity/notifications/#view-a-single-thread
|
101
|
+
#
|
102
|
+
# @example
|
103
|
+
# @client.notification_thread(1000)
|
104
|
+
def thread_notifications(thread_id, options = {})
|
105
|
+
get "notifications/threads/#{thread_id}", options
|
106
|
+
end
|
107
|
+
|
108
|
+
# Mark thread as read
|
109
|
+
#
|
110
|
+
# @param thread_id [Integer] Id of the thread to update.
|
111
|
+
# @param options [Hash] Optional parameters.
|
112
|
+
# @option options [Boolean] :unread Changes the unread status of the
|
113
|
+
# threads.
|
114
|
+
# @option options [Boolean] :read Inverse of 'unread'.
|
115
|
+
# @return [Boolean] True if updated, false otherwise.
|
116
|
+
# @see https://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read
|
117
|
+
# @example
|
118
|
+
# @client.mark_thread_as_read(1, :read => false)
|
119
|
+
def mark_thread_as_read(thread_id, options = {})
|
120
|
+
request :patch, "notifications/threads/#{thread_id}", options
|
121
|
+
|
122
|
+
last_response.status == 205
|
123
|
+
end
|
124
|
+
|
125
|
+
# Get thread subscription
|
126
|
+
#
|
127
|
+
# @param thread_id [Integer] Id of the thread.
|
128
|
+
# @return [Sawyer::Resource] Subscription.
|
129
|
+
# @see https://developer.github.com/v3/activity/notifications/#get-a-thread-subscription
|
130
|
+
# @example
|
131
|
+
# @client.thread_subscription(1)
|
132
|
+
def thread_subscription(thread_id, options = {})
|
133
|
+
get "notifications/threads/#{thread_id}/subscription", options
|
134
|
+
end
|
135
|
+
|
136
|
+
# Update thread subscription
|
137
|
+
#
|
138
|
+
# This lets you subscribe to a thread, or ignore it. Subscribing to a
|
139
|
+
# thread is unnecessary if the user is already subscribed to the
|
140
|
+
# repository. Ignoring a thread will mute all future notifications (until
|
141
|
+
# you comment or get @mentioned).
|
142
|
+
#
|
143
|
+
# @param thread_id [Integer] Id of the thread.
|
144
|
+
# @param options
|
145
|
+
# @option options [Boolean] :subscribed Determines if notifications
|
146
|
+
# should be received from this repository.
|
147
|
+
# @option options [Boolean] :ignored Deterimines if all notifications
|
148
|
+
# should be blocked from this repository.
|
149
|
+
# @return [Sawyer::Resource] Updated subscription.
|
150
|
+
# @see https://developer.github.com/v3/activity/notifications/#set-a-thread-subscription
|
151
|
+
# @example Subscribe to notifications
|
152
|
+
# @client.update_thread_subscription(1, :subscribed => true)
|
153
|
+
# @example Ignore notifications from a repo
|
154
|
+
# @client.update_thread_subscription(1, :ignored => true)
|
155
|
+
def update_thread_subscription(thread_id, options = {})
|
156
|
+
put "notifications/threads/#{thread_id}/subscription", options
|
157
|
+
end
|
158
|
+
|
159
|
+
# Delete a thread subscription
|
160
|
+
#
|
161
|
+
# @param thread_id [Integer] Id of the thread.
|
162
|
+
# @return [Boolean] True if delete successful, false otherwise.
|
163
|
+
# @see https://developer.github.com/v3/activity/notifications/#delete-a-thread-subscription
|
164
|
+
# @example
|
165
|
+
# @client.delete_thread_subscription(1)
|
166
|
+
def delete_thread_subscription(thread_id, options = {})
|
167
|
+
boolean_from_response :delete, "notifications/threads/#{thread_id}/subscription", options
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|