ruby-trello 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -0
- data/lib/trello.rb +11 -11
- data/lib/trello/authorization.rb +5 -2
- data/lib/trello/board.rb +16 -6
- data/lib/trello/card.rb +12 -0
- data/lib/trello/checklist.rb +3 -2
- data/lib/trello/client.rb +22 -27
- data/lib/trello/list.rb +4 -0
- data/lib/trello/notification.rb +41 -4
- data/lib/trello/string.rb +2 -0
- data/spec/board_spec.rb +7 -6
- data/spec/notification_spec.rb +82 -0
- data/spec/oauth_policy_spec.rb +0 -1
- data/spec/spec_helper.rb +25 -0
- metadata +61 -102
data/README.md
CHANGED
@@ -22,6 +22,10 @@ of refactoring and functionality to be deserving of a beer and this special than
|
|
22
22
|
|
23
23
|
## Contributing
|
24
24
|
|
25
|
+
Several ways you can contribute. Documentation, code, tests, feature requests, bug reports.
|
26
|
+
|
27
|
+
We develop ruby-trello using [Trello itself](https://trello.com/board/ruby-trello/4f092b2ee23cb6fe6d1aaabd).
|
28
|
+
|
25
29
|
Pick up an editor, fix a test! (If you want to, of course.) Send a pull
|
26
30
|
request, and I'll look at it. I only ask a few things:
|
27
31
|
|
data/lib/trello.rb
CHANGED
@@ -40,25 +40,25 @@ module Trello
|
|
40
40
|
autoload :Request, 'trello/net'
|
41
41
|
autoload :TInternet, 'trello/net'
|
42
42
|
|
43
|
+
module Authorization
|
44
|
+
autoload :AuthPolicy, 'trello/authorization'
|
45
|
+
autoload :BasicAuthPolicy, 'trello/authorization'
|
46
|
+
autoload :OAuthPolicy, 'trello/authorization'
|
47
|
+
end
|
48
|
+
|
43
49
|
# Version of the Trello API that we use by default.
|
44
50
|
API_VERSION = 1
|
45
51
|
|
46
52
|
# Raise this when we hit a Trello error.
|
47
53
|
class Error < StandardError; end
|
54
|
+
# This specific error is thrown when your access token is invalid. You should get a new one.
|
55
|
+
class InvalidAccessToken < StandardError; end
|
48
56
|
|
49
57
|
def self.logger
|
50
|
-
|
58
|
+
@logger ||= Logger.new(STDOUT)
|
51
59
|
end
|
52
60
|
|
53
61
|
def self.logger=(logger)
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
module Trello
|
59
|
-
module Authorization
|
60
|
-
autoload :AuthPolicy, 'trello/authorization'
|
61
|
-
autoload :BasicAuthPolicy, 'trello/authorization'
|
62
|
-
autoload :OAuthPolicy, 'trello/authorization'
|
62
|
+
@logger = logger
|
63
63
|
end
|
64
|
-
end
|
64
|
+
end
|
data/lib/trello/authorization.rb
CHANGED
@@ -37,7 +37,10 @@ module Trello
|
|
37
37
|
attr_accessor :consumer_credential, :token
|
38
38
|
|
39
39
|
def authorize(request)
|
40
|
-
|
40
|
+
unless consumer_credential
|
41
|
+
Trello.logger.error "The consumer_credential has not been supplied."
|
42
|
+
fail "The consumer_credential has not been supplied."
|
43
|
+
end
|
41
44
|
|
42
45
|
request.headers = {"Authorization" => get_auth_header(request.uri, :get)}
|
43
46
|
request
|
@@ -48,7 +51,7 @@ module Trello
|
|
48
51
|
def get_auth_header(url, verb)
|
49
52
|
require "oauth"
|
50
53
|
|
51
|
-
self.token ||= OAuthCredential.new
|
54
|
+
self.token ||= OAuthCredential.new
|
52
55
|
|
53
56
|
consumer = OAuth::Consumer.new(
|
54
57
|
consumer_credential.key,
|
data/lib/trello/board.rb
CHANGED
@@ -10,19 +10,29 @@ module Trello
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def create(attributes)
|
13
|
-
|
13
|
+
new('name' => attributes[:name],
|
14
|
+
'desc' => attributes[:description],
|
15
|
+
'closed' => attributes[:closed] || false).save!
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
17
19
|
def save!
|
20
|
+
return update! if id
|
21
|
+
|
22
|
+
attributes = { :name => name }
|
23
|
+
attributes.merge!(:desc => description) if description
|
24
|
+
attributes.merge!(:idOrganization => organization_id) if organization_id
|
25
|
+
|
26
|
+
Client.post("/boards", attributes).json_into(self)
|
27
|
+
end
|
28
|
+
|
29
|
+
def update!
|
18
30
|
fail "Cannot save new instance." unless self.id
|
19
31
|
|
20
32
|
Client.put("/boards/#{self.id}/", {
|
21
|
-
:name
|
22
|
-
:description
|
23
|
-
:closed
|
24
|
-
:url => @url,
|
25
|
-
:organisation_id => @organisation_id
|
33
|
+
:name => @name,
|
34
|
+
:description => @description,
|
35
|
+
:closed => @closed
|
26
36
|
}).json_into(self)
|
27
37
|
end
|
28
38
|
|
data/lib/trello/card.rb
CHANGED
@@ -132,5 +132,17 @@ module Trello
|
|
132
132
|
:value => checklist.id
|
133
133
|
})
|
134
134
|
end
|
135
|
+
|
136
|
+
# Add a label
|
137
|
+
def add_label(colour)
|
138
|
+
return logger.warn "The label colour '#{colour}' does not exist." unless %w{green yellow orange red purple blue}.include? colour
|
139
|
+
Client.post("/cards/#{id}/labels", { :value => colour })
|
140
|
+
end
|
141
|
+
|
142
|
+
# Remove a label
|
143
|
+
def remove_label(colour)
|
144
|
+
return logger.warn "The label colour '#{colour}' does not exist." unless %w{green yellow orange red purple blue}.include? colour
|
145
|
+
Client.delete("/cards/#{id}/labels/#{colour}")
|
146
|
+
end
|
135
147
|
end
|
136
148
|
end
|
data/lib/trello/checklist.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Trello
|
2
|
-
# A Checklist holds items which are like a "
|
2
|
+
# A Checklist holds items which are like a "task" list. Checklists are linked to a card.
|
3
3
|
class Checklist < BasicData
|
4
4
|
attr_reader :id, :name, :description, :closed, :url, :check_items, :board_id, :list_id, :member_ids
|
5
5
|
|
@@ -43,10 +43,11 @@ module Trello
|
|
43
43
|
Client.post("/checklists", {
|
44
44
|
:name => @name,
|
45
45
|
:idBoard => @board_id
|
46
|
-
})
|
46
|
+
}).json_into(self)
|
47
47
|
end
|
48
48
|
|
49
49
|
def update!
|
50
|
+
Client.put("/checklists", { :name => @name }).json_into(self)
|
50
51
|
end
|
51
52
|
|
52
53
|
# Return a list of items on the checklist.
|
data/lib/trello/client.rb
CHANGED
@@ -6,44 +6,39 @@ module Trello
|
|
6
6
|
|
7
7
|
class << self
|
8
8
|
def get(path, params = {})
|
9
|
-
|
10
|
-
|
11
|
-
uri = Addressable::URI.parse("https://api.trello.com/#{api_version}#{path}")
|
9
|
+
uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
|
12
10
|
uri.query_values = params unless params.empty?
|
13
|
-
|
14
|
-
request = Request.new :get, uri, {}
|
15
|
-
|
16
|
-
response = TInternet.execute AuthPolicy.authorize(request)
|
17
|
-
|
18
|
-
raise Error, response.body unless response.code.to_i == 200
|
19
|
-
|
20
|
-
response.body
|
11
|
+
invoke_verb(:get, uri)
|
21
12
|
end
|
22
13
|
|
23
14
|
def post(path, body = {})
|
24
|
-
|
25
|
-
|
26
|
-
uri = Addressable::URI.parse("https://api.trello.com/#{api_version}#{path}")
|
27
|
-
|
28
|
-
request = Request.new :post, uri, {}, body
|
29
|
-
|
30
|
-
response = TInternet.execute AuthPolicy.authorize(request)
|
31
|
-
|
32
|
-
raise Error, response.body unless response.code.to_i == 200
|
33
|
-
|
34
|
-
response.body
|
15
|
+
uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
|
16
|
+
invoke_verb(:post, uri, body)
|
35
17
|
end
|
36
18
|
|
37
19
|
def put(path, body = {})
|
38
|
-
|
39
|
-
|
40
|
-
|
20
|
+
uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
|
21
|
+
invoke_verb(:put, uri, body)
|
22
|
+
end
|
41
23
|
|
42
|
-
|
24
|
+
def delete(path)
|
25
|
+
uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
|
26
|
+
invoke_verb(:delete, uri)
|
27
|
+
end
|
43
28
|
|
29
|
+
def invoke_verb(name, uri, body = nil)
|
30
|
+
request = Request.new name, uri, {}, body
|
44
31
|
response = TInternet.execute AuthPolicy.authorize(request)
|
45
32
|
|
46
|
-
|
33
|
+
if response.code.to_i == 401 && response.body =~ /expired token/
|
34
|
+
Trello.logger.error("[401 #{name.to_s.upcase} #{uri}]: Your access token has expired.")
|
35
|
+
raise InvalidAccessToken, response.body
|
36
|
+
end
|
37
|
+
|
38
|
+
unless response.code.to_i == 200
|
39
|
+
Trello.logger.error("[#{response.code.to_i} #{name.to_s.upcase} #{uri}]: #{response.body}")
|
40
|
+
raise Error, response.body
|
41
|
+
end
|
47
42
|
|
48
43
|
response.body
|
49
44
|
end
|
data/lib/trello/list.rb
CHANGED
data/lib/trello/notification.rb
CHANGED
@@ -1,11 +1,48 @@
|
|
1
1
|
module Trello
|
2
|
-
# Notifications for members
|
3
|
-
#
|
4
|
-
# This class is not yet implemented as the feature set is not known yet.
|
5
2
|
class Notification < BasicData
|
3
|
+
attr_reader :id, :unread, :type, :date, :data, :member_creator_id
|
4
|
+
|
5
|
+
class << self
|
6
|
+
# Locate a notification by its id
|
7
|
+
def find(id)
|
8
|
+
super(:notifications, id)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
6
12
|
def update_fields(fields)
|
7
|
-
@id
|
13
|
+
@id = fields['id']
|
14
|
+
@unread = fields['unread']
|
15
|
+
@type = fields['type']
|
16
|
+
@date = fields['date']
|
17
|
+
@data = fields['data']
|
18
|
+
@member_creator_id = fields['idMemberCreator']
|
8
19
|
self
|
9
20
|
end
|
21
|
+
|
22
|
+
alias :unread? :unread
|
23
|
+
|
24
|
+
def member_creator
|
25
|
+
Member.find(member_creator_id)
|
26
|
+
end
|
27
|
+
|
28
|
+
def board
|
29
|
+
Client.get("/notifications/#{id}/board").json_into(Board)
|
30
|
+
end
|
31
|
+
|
32
|
+
def list
|
33
|
+
Client.get("/notifications/#{id}/list").json_into(List)
|
34
|
+
end
|
35
|
+
|
36
|
+
def card
|
37
|
+
Client.get("/notifications/#{id}/card").json_into(Card)
|
38
|
+
end
|
39
|
+
|
40
|
+
def member
|
41
|
+
Client.get("/notifications/#{id}/member").json_into(Member)
|
42
|
+
end
|
43
|
+
|
44
|
+
def organization
|
45
|
+
Client.get("/notifications/#{id}/organization").json_into(Organization)
|
46
|
+
end
|
10
47
|
end
|
11
48
|
end
|
data/lib/trello/string.rb
CHANGED
@@ -25,8 +25,10 @@ class String
|
|
25
25
|
end
|
26
26
|
rescue JSON::ParserError => json_error
|
27
27
|
if json_error.message =~ /model not found/
|
28
|
+
logger.error "Could not find that record."
|
28
29
|
raise Trello::Error, "Request could not be found."
|
29
30
|
else
|
31
|
+
logger.error "Unknown error."
|
30
32
|
raise
|
31
33
|
end
|
32
34
|
end
|
data/spec/board_spec.rb
CHANGED
@@ -122,11 +122,11 @@ module Trello
|
|
122
122
|
Client.should_not_receive :put
|
123
123
|
|
124
124
|
the_new_board = Board.new
|
125
|
-
lambda{the_new_board.save!}.should raise_error
|
125
|
+
lambda{the_new_board.save!}.should raise_error
|
126
126
|
end
|
127
127
|
|
128
128
|
it "puts all fields except id" do
|
129
|
-
expected_fields = %w{name description closed
|
129
|
+
expected_fields = %w{name description closed}.map{|s| s.to_sym}
|
130
130
|
|
131
131
|
Client.should_receive(:put) do |anything, body|
|
132
132
|
body.keys.should =~ expected_fields
|
@@ -171,20 +171,21 @@ module Trello
|
|
171
171
|
|
172
172
|
it "creates a new board with whatever attributes are supplied " do
|
173
173
|
expected_attributes = { :name => "Any new board name", :description => "Any new board desription" }
|
174
|
-
|
175
|
-
|
174
|
+
sent_attributes = { :name => expected_attributes[:name], :desc => expected_attributes[:description] }
|
175
|
+
|
176
|
+
Client.should_receive(:post).with("/boards", sent_attributes).and_return any_board_json
|
176
177
|
|
177
178
|
Board.create expected_attributes
|
178
179
|
end
|
179
180
|
|
180
181
|
it "posts to the boards collection" do
|
181
|
-
Client.should_receive(:post).with("/boards
|
182
|
+
Client.should_receive(:post).with("/boards", anything).and_return any_board_json
|
182
183
|
|
183
184
|
Board.create :xxx => ""
|
184
185
|
end
|
185
186
|
|
186
187
|
it "returns a board" do
|
187
|
-
Client.stub(:post).with("/boards
|
188
|
+
Client.stub(:post).with("/boards", anything).and_return any_board_json
|
188
189
|
|
189
190
|
the_new_board = Board.create :xxx => ""
|
190
191
|
the_new_board.should be_a Board
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Trello
|
4
|
+
describe Notification do
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
Client.stub(:get).with("/members/me").and_return user_payload
|
9
|
+
Client.stub(:get).with("/members/me/notifications").and_return "[" << notification_payload << "]"
|
10
|
+
@notification = Member.find("me").notifications.first
|
11
|
+
end
|
12
|
+
|
13
|
+
context "finding" do
|
14
|
+
it "can find a specific notification" do
|
15
|
+
Client.stub(:get).with("/notifications/#{notification_details['id']}").and_return notification_payload
|
16
|
+
Notification.find(notification_details['id']).should == @notification
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "boards" do
|
21
|
+
it "can retrieve the board" do
|
22
|
+
Client.stub(:get).with("/notifications/#{notification_details['id']}/board").and_return JSON.generate(boards_details.first)
|
23
|
+
@notification.board.id.should == boards_details.first['id']
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "lists" do
|
28
|
+
it "can retrieve the list" do
|
29
|
+
Client.stub(:get).with("/notifications/#{notification_details['id']}/list").and_return JSON.generate(lists_details.first)
|
30
|
+
@notification.list.id.should == lists_details.first['id']
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "cards" do
|
35
|
+
it "can retrieve the card" do
|
36
|
+
Client.stub(:get).with("/notifications/#{notification_details['id']}/card").and_return JSON.generate(cards_details.first)
|
37
|
+
@notification.card.id.should == cards_details.first['id']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "members" do
|
42
|
+
it "can retrieve the member" do
|
43
|
+
Client.stub(:get).with("/notifications/#{notification_details['id']}/member").and_return user_payload
|
44
|
+
@notification.member.id.should == user_details['id']
|
45
|
+
end
|
46
|
+
|
47
|
+
it "can retrieve the member creator" do
|
48
|
+
Client.stub(:get).with("/members/#{user_details['id']}").and_return user_payload
|
49
|
+
@notification.member_creator.id.should == user_details['id']
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "organization" do
|
54
|
+
it "can retrieve the organization" do
|
55
|
+
Client.stub(:get).with("/notifications/#{notification_details['id']}/organization").and_return JSON.generate(orgs_details.first)
|
56
|
+
@notification.organization.id.should == orgs_details.first['id']
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "local" do
|
61
|
+
it "gets the read status" do
|
62
|
+
@notification.unread?.should == notification_details['unread']
|
63
|
+
end
|
64
|
+
|
65
|
+
it "gets the type" do
|
66
|
+
@notification.type.should == notification_details['type']
|
67
|
+
end
|
68
|
+
|
69
|
+
it "gets the date" do
|
70
|
+
@notification.date.should == notification_details['date']
|
71
|
+
end
|
72
|
+
|
73
|
+
it "gets the data" do
|
74
|
+
@notification.data.should == notification_details['data']
|
75
|
+
end
|
76
|
+
|
77
|
+
it "gets the member creator id" do
|
78
|
+
@notification.member_creator_id.should == notification_details['idMemberCreator']
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/spec/oauth_policy_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -142,4 +142,29 @@ module Helpers
|
|
142
142
|
def actions_payload
|
143
143
|
JSON.generate(actions_details)
|
144
144
|
end
|
145
|
+
|
146
|
+
def notification_details
|
147
|
+
{
|
148
|
+
"id" => "4f30d084d5b0f7ab453bee51",
|
149
|
+
"unread" => false,
|
150
|
+
"type" => "commentCard",
|
151
|
+
"date" => "2012-02-07T07:19:32.393Z",
|
152
|
+
"data" => {
|
153
|
+
"board" => {
|
154
|
+
"id" => "abcdef123456789123456789",
|
155
|
+
"name" => "Test"
|
156
|
+
},
|
157
|
+
"card"=>{
|
158
|
+
"id" => "abcdef123456789123456789",
|
159
|
+
"name" => "Do something awesome"
|
160
|
+
},
|
161
|
+
"text" => "test"
|
162
|
+
},
|
163
|
+
"idMemberCreator" => "abcdef123456789012345678"
|
164
|
+
}
|
165
|
+
end
|
166
|
+
|
167
|
+
def notification_payload
|
168
|
+
JSON.generate(notification_details)
|
169
|
+
end
|
145
170
|
end
|
metadata
CHANGED
@@ -1,112 +1,78 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-trello
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 1
|
10
|
-
version: 0.3.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Jeremy Tregunna
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-01-07 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: yajl-ruby
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70172866550100 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3461773182973075480
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 1
|
32
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 1.1.0
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: oauth
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: *70172866550100
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: oauth
|
27
|
+
requirement: &70172866549140 !ruby/object:Gem::Requirement
|
40
28
|
none: false
|
41
|
-
requirements:
|
29
|
+
requirements:
|
42
30
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 3072838298281563226
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
- 4
|
48
|
-
- 5
|
31
|
+
- !ruby/object:Gem::Version
|
49
32
|
version: 0.4.5
|
50
33
|
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: addressable
|
54
34
|
prerelease: false
|
55
|
-
|
35
|
+
version_requirements: *70172866549140
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: addressable
|
38
|
+
requirement: &70172866548200 !ruby/object:Gem::Requirement
|
56
39
|
none: false
|
57
|
-
requirements:
|
40
|
+
requirements:
|
58
41
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 1690824680571537449
|
61
|
-
segments:
|
62
|
-
- 2
|
63
|
-
- 2
|
64
|
-
- 6
|
42
|
+
- !ruby/object:Gem::Version
|
65
43
|
version: 2.2.6
|
66
44
|
type: :runtime
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: rest-client
|
70
45
|
prerelease: false
|
71
|
-
|
46
|
+
version_requirements: *70172866548200
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rest-client
|
49
|
+
requirement: &70172866546920 !ruby/object:Gem::Requirement
|
72
50
|
none: false
|
73
|
-
requirements:
|
51
|
+
requirements:
|
74
52
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 4554157976602492668
|
77
|
-
segments:
|
78
|
-
- 1
|
79
|
-
- 6
|
80
|
-
- 7
|
53
|
+
- !ruby/object:Gem::Version
|
81
54
|
version: 1.6.7
|
82
55
|
type: :runtime
|
83
|
-
version_requirements: *id004
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: bundler
|
86
56
|
prerelease: false
|
87
|
-
|
57
|
+
version_requirements: *70172866546920
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: bundler
|
60
|
+
requirement: &70172866545720 !ruby/object:Gem::Requirement
|
88
61
|
none: false
|
89
|
-
requirements:
|
62
|
+
requirements:
|
90
63
|
- - ~>
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
hash: 2387456872237229630
|
93
|
-
segments:
|
94
|
-
- 1
|
95
|
-
- 0
|
96
|
-
- 0
|
64
|
+
- !ruby/object:Gem::Version
|
97
65
|
version: 1.0.0
|
98
66
|
type: :development
|
99
|
-
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70172866545720
|
100
69
|
description: A wrapper around the trello.com API.
|
101
70
|
email: jeremy@tregunna.ca
|
102
71
|
executables: []
|
103
|
-
|
104
72
|
extensions: []
|
105
|
-
|
106
|
-
extra_rdoc_files:
|
73
|
+
extra_rdoc_files:
|
107
74
|
- README.md
|
108
|
-
files:
|
109
|
-
- lib/trello.rb
|
75
|
+
files:
|
110
76
|
- lib/trello/action.rb
|
111
77
|
- lib/trello/authorization.rb
|
112
78
|
- lib/trello/basic_data.rb
|
@@ -122,6 +88,7 @@ files:
|
|
122
88
|
- lib/trello/notification.rb
|
123
89
|
- lib/trello/organization.rb
|
124
90
|
- lib/trello/string.rb
|
91
|
+
- lib/trello.rb
|
125
92
|
- README.md
|
126
93
|
- spec/action_spec.rb
|
127
94
|
- spec/basic_auth_policy_spec.rb
|
@@ -129,67 +96,59 @@ files:
|
|
129
96
|
- spec/card_spec.rb
|
130
97
|
- spec/checklist_spec.rb
|
131
98
|
- spec/client_spec.rb
|
99
|
+
- spec/integration/how_to_authorize_spec.rb
|
100
|
+
- spec/integration/how_to_use_boards_spec.rb
|
101
|
+
- spec/integration/integration_test.rb
|
132
102
|
- spec/item_spec.rb
|
133
103
|
- spec/item_state_spec.rb
|
134
104
|
- spec/list_spec.rb
|
135
105
|
- spec/member_spec.rb
|
106
|
+
- spec/notification_spec.rb
|
136
107
|
- spec/oauth_policy_spec.rb
|
137
108
|
- spec/organization_spec.rb
|
138
109
|
- spec/spec_helper.rb
|
139
110
|
- spec/string_spec.rb
|
140
|
-
- spec/integration/how_to_authorize_spec.rb
|
141
|
-
- spec/integration/how_to_use_boards_spec.rb
|
142
|
-
- spec/integration/integration_test.rb
|
143
111
|
homepage: https://github.com/jeremytregunna/ruby-trello
|
144
112
|
licenses: []
|
145
|
-
|
146
113
|
post_install_message:
|
147
|
-
rdoc_options:
|
114
|
+
rdoc_options:
|
148
115
|
- --charset=UTF-8
|
149
|
-
require_paths:
|
116
|
+
require_paths:
|
150
117
|
- lib
|
151
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
119
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
|
158
|
-
- 0
|
159
|
-
version: "0"
|
160
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
125
|
none: false
|
162
|
-
requirements:
|
163
|
-
- -
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
hash: 2387630629434237851
|
166
|
-
segments:
|
167
|
-
- 1
|
168
|
-
- 3
|
169
|
-
- 6
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
170
129
|
version: 1.3.6
|
171
130
|
requirements: []
|
172
|
-
|
173
131
|
rubyforge_project: ruby-trello
|
174
|
-
rubygems_version: 1.8.
|
132
|
+
rubygems_version: 1.8.10
|
175
133
|
signing_key:
|
176
134
|
specification_version: 3
|
177
135
|
summary: A wrapper around the trello.com API.
|
178
|
-
test_files:
|
136
|
+
test_files:
|
179
137
|
- spec/action_spec.rb
|
180
138
|
- spec/basic_auth_policy_spec.rb
|
181
139
|
- spec/board_spec.rb
|
182
140
|
- spec/card_spec.rb
|
183
141
|
- spec/checklist_spec.rb
|
184
142
|
- spec/client_spec.rb
|
143
|
+
- spec/integration/how_to_authorize_spec.rb
|
144
|
+
- spec/integration/how_to_use_boards_spec.rb
|
145
|
+
- spec/integration/integration_test.rb
|
185
146
|
- spec/item_spec.rb
|
186
147
|
- spec/item_state_spec.rb
|
187
148
|
- spec/list_spec.rb
|
188
149
|
- spec/member_spec.rb
|
150
|
+
- spec/notification_spec.rb
|
189
151
|
- spec/oauth_policy_spec.rb
|
190
152
|
- spec/organization_spec.rb
|
191
153
|
- spec/spec_helper.rb
|
192
154
|
- spec/string_spec.rb
|
193
|
-
- spec/integration/how_to_authorize_spec.rb
|
194
|
-
- spec/integration/how_to_use_boards_spec.rb
|
195
|
-
- spec/integration/integration_test.rb
|