ruby-trello 0.3.1 → 0.3.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.
- 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
|