octodoggy 4.6.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.
- 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
|