fcoury-octopi 0.0.2 → 0.0.3
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.
- data/README.rdoc +13 -9
- data/VERSION.yml +1 -1
- data/lib/octopi.rb +80 -19
- metadata +3 -12
data/README.rdoc
CHANGED
@@ -4,8 +4,6 @@ Octopi is a Ruby interface to GitHub API v2 (http://develop.github.com). It's un
|
|
4
4
|
|
5
5
|
== Example
|
6
6
|
|
7
|
-
require 'octopi'
|
8
|
-
|
9
7
|
include Octopi
|
10
8
|
|
11
9
|
# user information
|
@@ -27,9 +25,19 @@ Octopi is a Ruby interface to GitHub API v2 (http://develop.github.com). It's un
|
|
27
25
|
end
|
28
26
|
|
29
27
|
# repository information
|
30
|
-
|
28
|
+
# to get all repos for user: user.repositories
|
29
|
+
repo = user.repository("octopi") # same as: Repository.find("fcoury", "octopi")
|
31
30
|
puts "Repository: #{repo.name} - #{repo.description} (by #{repo.owner}) - #{repo.url}"
|
32
31
|
|
32
|
+
# commits of a the repository
|
33
|
+
first_commit = repo.commits.first
|
34
|
+
puts "First commit: #{first_commit.id} - #{first_commit.message} - by #{first_commit.author['name']}"
|
35
|
+
|
36
|
+
# single commit information
|
37
|
+
# details is the same as: Commit.find(commit)
|
38
|
+
puts "Diff:"
|
39
|
+
first_commit.details.modified.each {|m| puts "#{m['filename']} DIFF: #{m['diff']}" }
|
40
|
+
|
33
41
|
# repository search
|
34
42
|
repos = Repository.find_all("ruby", "git")
|
35
43
|
puts "#{repos.size} repository(ies) with 'ruby' and 'git':"
|
@@ -37,17 +45,13 @@ Octopi is a Ruby interface to GitHub API v2 (http://develop.github.com). It's un
|
|
37
45
|
puts " - #{r.name}"
|
38
46
|
end
|
39
47
|
|
40
|
-
# connect "user", "<<token>>" do |github|
|
41
|
-
# puts github.user.name
|
42
|
-
# end
|
43
|
-
|
44
48
|
== Author
|
45
49
|
|
46
|
-
Felipe Coury - http://felipecoury.com
|
50
|
+
Felipe Coury - http://felipecoury.com<br/>
|
47
51
|
HasMany.info blog - http://hasmany.info
|
48
52
|
|
49
53
|
== Copyright
|
50
54
|
|
51
|
-
DISCLAIMER: The name of this library is pronounced
|
55
|
+
DISCLAIMER: The name of this library is pronounced <i>octo-pie</i> but no Octocats were harmed during its creation. It's not really an Octo Pie, but a contraction of the words Octocat and API.
|
52
56
|
|
53
57
|
Copyright (c) 2009 Felipe Coury. See LICENSE for details.
|
data/VERSION.yml
CHANGED
data/lib/octopi.rb
CHANGED
@@ -44,7 +44,7 @@ module Octopi
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def find_all(path, result_key, query)
|
47
|
-
get(path, { :query => query })[result_key]
|
47
|
+
get(path, { :query => query, :id => query })[result_key]
|
48
48
|
end
|
49
49
|
|
50
50
|
private
|
@@ -53,7 +53,7 @@ module Octopi
|
|
53
53
|
path = path.gsub(":#{k.to_s}", v)
|
54
54
|
end
|
55
55
|
# puts "GET: /#{format}#{path}"
|
56
|
-
self.class.get("/#{format}#{path}")
|
56
|
+
self.class.get("/#{format}#{path}")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -130,14 +130,18 @@ module Octopi
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def find_all(s)
|
133
|
+
find_plural(s, :find)
|
134
|
+
end
|
135
|
+
|
136
|
+
def find_plural(s,path)
|
133
137
|
all = []
|
134
|
-
result = ANONYMOUS_API.find_all(path_for(
|
138
|
+
result = ANONYMOUS_API.find_all(path_for(path), @resource_name[:plural], s)
|
135
139
|
result.each do |item|
|
136
140
|
all << new(ANONYMOUS_API, item)
|
137
141
|
end
|
138
142
|
all
|
139
143
|
end
|
140
|
-
|
144
|
+
|
141
145
|
def path_for(type)
|
142
146
|
@path_spec[type]
|
143
147
|
end
|
@@ -150,15 +154,12 @@ module Octopi
|
|
150
154
|
find_path "/user/search/:query"
|
151
155
|
resource_path "/user/show/:id"
|
152
156
|
|
153
|
-
def
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
users
|
157
|
+
def repositories
|
158
|
+
Repository.find_by_user(login)
|
159
|
+
end
|
160
|
+
|
161
|
+
def repository(name)
|
162
|
+
Repository.find(login, name)
|
162
163
|
end
|
163
164
|
|
164
165
|
# takes one param, deep that indicates if returns
|
@@ -171,21 +172,81 @@ module Octopi
|
|
171
172
|
user_property(method, true)
|
172
173
|
end
|
173
174
|
end
|
175
|
+
|
176
|
+
def user_property(property, deep)
|
177
|
+
users = []
|
178
|
+
property(property, login).each_pair do |k,v|
|
179
|
+
return v unless deep
|
180
|
+
|
181
|
+
v.each { |u| users << User.find(u) }
|
182
|
+
end
|
183
|
+
|
184
|
+
users
|
185
|
+
end
|
174
186
|
end
|
175
187
|
|
176
188
|
class Repository < Base
|
177
189
|
include Resource
|
178
190
|
set_resource_name "repository", "repositories"
|
179
|
-
|
191
|
+
|
192
|
+
find_path "/repos/search/:query"
|
193
|
+
resource_path "/repos/show/:id"
|
194
|
+
|
195
|
+
def self.find_by_user(user)
|
196
|
+
find_plural(user, :resource)
|
197
|
+
end
|
198
|
+
|
180
199
|
def self.find(user, name)
|
181
200
|
super "#{user}/#{name}"
|
182
201
|
end
|
183
|
-
|
202
|
+
|
184
203
|
def self.find_all(*args)
|
185
204
|
super args.join("+")
|
186
205
|
end
|
187
|
-
|
188
|
-
|
189
|
-
|
206
|
+
|
207
|
+
def commits(branch = "master")
|
208
|
+
Commit.find_all(owner, name, branch, self)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
class Commit < Base
|
213
|
+
include Resource
|
214
|
+
find_path "/commits/list/:query"
|
215
|
+
resource_path "/commits/show/:id"
|
216
|
+
|
217
|
+
attr_accessor :repository
|
218
|
+
|
219
|
+
def self.find_all(user, name, branch = "master", repo = nil)
|
220
|
+
commits = super("#{user}/#{name}/#{branch}")
|
221
|
+
commits.each { |c| c.repository = repo } if repo
|
222
|
+
commits
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.find(*args)
|
226
|
+
if args.last.is_a?(Commit)
|
227
|
+
commit = args.pop
|
228
|
+
super "#{commit.repo_identifier}"
|
229
|
+
else
|
230
|
+
user, name, sha = *args
|
231
|
+
super "#{user}/#{name}/#{sha}"
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
def details
|
236
|
+
self.class.find(self)
|
237
|
+
end
|
238
|
+
|
239
|
+
def repo_identifier
|
240
|
+
url_parts = url.split('/')
|
241
|
+
if @repository
|
242
|
+
parts = [@repository.owner, @repository.name, url_parts[6]]
|
243
|
+
else
|
244
|
+
parts = [url_parts[3], url_parts[4], url_parts[6]]
|
245
|
+
end
|
246
|
+
|
247
|
+
puts parts.join('/')
|
248
|
+
parts.join('/')
|
249
|
+
end
|
190
250
|
end
|
191
|
-
end
|
251
|
+
class APIError < StandardError; end
|
252
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fcoury-octopi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felipe Coury
|
@@ -11,17 +11,8 @@ cert_chain: []
|
|
11
11
|
|
12
12
|
date: 2009-04-19 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
name: httparty
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.4.2
|
24
|
-
version:
|
14
|
+
dependencies: []
|
15
|
+
|
25
16
|
description:
|
26
17
|
email: felipe.coury@gmail.com
|
27
18
|
executables: []
|