ruby-trello 1.0.1 → 1.0.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/README.md +4 -0
- data/lib/trello.rb +6 -2
- data/lib/trello/authorization.rb +4 -0
- data/lib/trello/card.rb +5 -5
- data/lib/trello/checklist.rb +2 -2
- data/lib/trello/item.rb +6 -4
- data/lib/trello/member.rb +2 -1
- data/spec/card_spec.rb +2 -2
- data/spec/checklist_spec.rb +21 -0
- data/spec/item_spec.rb +11 -1
- data/spec/member_spec.rb +4 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/trello_spec.rb +10 -0
- metadata +39 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f46b5d3c7a3289b56568b9be4ccff37cdb218806
|
4
|
+
data.tar.gz: b67d2acd6cbd716a7bf013efc961c78c9bd117d0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 33d759205434832b33b63ce91b052cbe0e8f621bd4783eb159f704bfe6be9ca7fd3271bdd34ea896bcf581c8d8b0ed51bdf40f43dcc649cc438252f8a7829c91
|
7
|
+
data.tar.gz: 2ad17d8f86890622fbf9503abda767bec8a1afcce6ce5151eac9b0c1a7f6feff85b2c80b43bf26ec38d5208dcd752ff9f39b2ff0d1f3dcbd9c40499adc58278c
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Ruby Trello API
|
2
2
|
|
3
|
+
[](http://waffle.io/jeremytregunna/ruby-trello)
|
3
4
|
[](http://travis-ci.org/jeremytregunna/ruby-trello) [](https://gemnasium.com/jeremytregunna/ruby-trello.png)
|
4
5
|
|
5
6
|
This library implements the [Trello](http://www.trello.com/) [API](http://trello.com/api).
|
@@ -16,6 +17,9 @@ Seriously, [check it out](http://www.trello.com/).
|
|
16
17
|
Full Disclosure: This library is mostly complete, if you do find anything missing or not functioning as you expect it
|
17
18
|
to, please [let us know](https://trello.com/card/spot-a-bug-report-it/4f092b2ee23cb6fe6d1aaabd/17).
|
18
19
|
|
20
|
+
While this library still does function on ruby 1.8 as of version 1.0.2 with activemodel < 4.0, this notice services to
|
21
|
+
illustrate that future versions may include ruby 1.9+ specific features.
|
22
|
+
|
19
23
|
## Configuration
|
20
24
|
|
21
25
|
Basic authorization
|
data/lib/trello.rb
CHANGED
@@ -71,9 +71,13 @@ module Trello
|
|
71
71
|
API_VERSION = 1
|
72
72
|
|
73
73
|
# Raise this when we hit a Trello error.
|
74
|
-
|
74
|
+
Error = Class.new(StandardError)
|
75
|
+
|
75
76
|
# This specific error is thrown when your access token is invalid. You should get a new one.
|
76
|
-
|
77
|
+
InvalidAccessToken = Class.new(Error)
|
78
|
+
|
79
|
+
# This error is thrown when your client has not been configured
|
80
|
+
ConfigurationError = Class.new(Error)
|
77
81
|
|
78
82
|
def self.logger
|
79
83
|
@logger ||= Logger.new(STDOUT)
|
data/lib/trello/authorization.rb
CHANGED
data/lib/trello/card.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Trello
|
2
2
|
# A Card is a container that can house checklists and comments; it resides inside a List.
|
3
3
|
class Card < BasicData
|
4
|
-
register_attributes :id, :short_id, :name, :
|
4
|
+
register_attributes :id, :short_id, :name, :desc, :due, :closed, :url, :board_id, :member_ids, :list_id, :pos, :last_activity_date,
|
5
5
|
:readonly => [ :id, :short_id, :url, :board_id, :member_ids, :last_activity_date ]
|
6
6
|
validates_presence_of :id, :name, :list_id
|
7
7
|
validates_length_of :name, :in => 1..16384
|
8
|
-
validates_length_of :
|
8
|
+
validates_length_of :desc, :in => 0..16384
|
9
9
|
|
10
10
|
include HasActions
|
11
11
|
|
@@ -20,7 +20,7 @@ module Trello
|
|
20
20
|
client.create(:card,
|
21
21
|
'name' => options[:name],
|
22
22
|
'idList' => options[:list_id],
|
23
|
-
'desc' => options[:
|
23
|
+
'desc' => options[:desc])
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -32,7 +32,7 @@ module Trello
|
|
32
32
|
attributes[:id] = fields['id']
|
33
33
|
attributes[:short_id] = fields['idShort']
|
34
34
|
attributes[:name] = fields['name']
|
35
|
-
attributes[:
|
35
|
+
attributes[:desc] = fields['desc']
|
36
36
|
attributes[:due] = Time.iso8601(fields['due']) rescue nil
|
37
37
|
attributes[:closed] = fields['closed']
|
38
38
|
attributes[:url] = fields['url']
|
@@ -78,7 +78,7 @@ module Trello
|
|
78
78
|
|
79
79
|
client.post("/cards", {
|
80
80
|
:name => name,
|
81
|
-
:desc =>
|
81
|
+
:desc => desc,
|
82
82
|
:idList => list_id
|
83
83
|
}).json_into(self)
|
84
84
|
end
|
data/lib/trello/checklist.rb
CHANGED
@@ -77,8 +77,8 @@ module Trello
|
|
77
77
|
end
|
78
78
|
|
79
79
|
# Add an item to the checklist
|
80
|
-
def add_item(name)
|
81
|
-
client.post("/checklists/#{id}/checkItems", {:name => name})
|
80
|
+
def add_item(name, checked=false, position='bottom')
|
81
|
+
client.post("/checklists/#{id}/checkItems", {:name => name, :checked => checked, :pos => position})
|
82
82
|
end
|
83
83
|
|
84
84
|
# Delete a checklist item
|
data/lib/trello/item.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Trello
|
2
2
|
# An Item is a basic task that can be checked off and marked as completed.
|
3
3
|
class Item < BasicData
|
4
|
-
register_attributes :id, :name, :type, :readonly => [ :id, :name, :type ]
|
4
|
+
register_attributes :id, :name, :type, :state, :pos, :readonly => [ :id, :name, :type, :state, :pos ]
|
5
5
|
validates_presence_of :id, :type
|
6
6
|
|
7
7
|
# Updates the fields of an item.
|
@@ -9,9 +9,11 @@ module Trello
|
|
9
9
|
# Supply a hash of string keyed data retrieved from the Trello API representing
|
10
10
|
# an item.
|
11
11
|
def update_fields(fields)
|
12
|
-
attributes[:id]
|
13
|
-
attributes[:name]
|
14
|
-
attributes[:type]
|
12
|
+
attributes[:id] = fields['id']
|
13
|
+
attributes[:name] = fields['name']
|
14
|
+
attributes[:type] = fields['type']
|
15
|
+
attributes[:state] = fields['state']
|
16
|
+
attributes[:pos] = fields['pos']
|
15
17
|
self
|
16
18
|
end
|
17
19
|
end
|
data/lib/trello/member.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Trello
|
2
2
|
# A Member is a user of the Trello service.
|
3
3
|
class Member < BasicData
|
4
|
-
register_attributes :id, :username, :email, :full_name, :avatar_id, :bio, :url, :readonly => [ :id, :username, :avatar_id, :url ]
|
4
|
+
register_attributes :id, :username, :email, :full_name, :initials, :avatar_id, :bio, :url, :readonly => [ :id, :username, :avatar_id, :url ]
|
5
5
|
validates_presence_of :id, :username
|
6
6
|
validates_length_of :full_name, :minimum => 4
|
7
7
|
validates_length_of :bio, :maximum => 16384
|
@@ -26,6 +26,7 @@ module Trello
|
|
26
26
|
attributes[:full_name] = fields['fullName']
|
27
27
|
attributes[:email] = fields['email']
|
28
28
|
attributes[:username] = fields['username']
|
29
|
+
attributes[:initials] = fields['initials']
|
29
30
|
attributes[:avatar_id] = fields['avatarHash']
|
30
31
|
attributes[:bio] = fields['bio']
|
31
32
|
attributes[:url] = fields['url']
|
data/spec/card_spec.rb
CHANGED
@@ -46,7 +46,7 @@ module Trello
|
|
46
46
|
it 'creates a new record and saves it on Trello', :refactor => true do
|
47
47
|
payload = {
|
48
48
|
:name => 'Test Card',
|
49
|
-
:desc =>
|
49
|
+
:desc => nil,
|
50
50
|
}
|
51
51
|
|
52
52
|
result = JSON.generate(cards_details.first.merge(payload.merge(:idList => lists_details.first['id'])))
|
@@ -97,7 +97,7 @@ module Trello
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it "gets its description" do
|
100
|
-
card.
|
100
|
+
card.desc.should_not be_nil
|
101
101
|
end
|
102
102
|
|
103
103
|
it "knows if it is open or closed" do
|
data/spec/checklist_spec.rb
CHANGED
@@ -75,6 +75,27 @@ module Trello
|
|
75
75
|
checklist.name = expected_new_name
|
76
76
|
checklist.save
|
77
77
|
end
|
78
|
+
|
79
|
+
it "adds an item" do
|
80
|
+
expected_item_name = "item1"
|
81
|
+
expected_checked = true
|
82
|
+
expected_pos = 9999
|
83
|
+
expected_resource = "/checklists/abcdef123456789123456789"
|
84
|
+
payload = {
|
85
|
+
:name => expected_item_name,
|
86
|
+
:checked => expected_checked,
|
87
|
+
:pos => expected_pos
|
88
|
+
}
|
89
|
+
result_hash = {
|
90
|
+
:name => expected_item_name,
|
91
|
+
:state => expected_checked ? 'complete' : 'incomplete',
|
92
|
+
:pos => expected_pos
|
93
|
+
}
|
94
|
+
result = JSON.generate(result_hash)
|
95
|
+
client.should_receive(:post).once.with("/checklists/abcdef123456789123456789/checkItems", payload).and_return result
|
96
|
+
|
97
|
+
checklist.add_item(expected_item_name, expected_checked, expected_pos)
|
98
|
+
end
|
78
99
|
end
|
79
100
|
|
80
101
|
context "board" do
|
data/spec/item_spec.rb
CHANGED
@@ -6,7 +6,9 @@ module Trello
|
|
6
6
|
@detail = {
|
7
7
|
'id' => "abcdef123456789123456789",
|
8
8
|
'name' => "test item",
|
9
|
-
'type' => "check"
|
9
|
+
'type' => "check",
|
10
|
+
'state' => "complete",
|
11
|
+
'pos' => 0
|
10
12
|
}
|
11
13
|
|
12
14
|
@item = Item.new(@detail)
|
@@ -23,5 +25,13 @@ module Trello
|
|
23
25
|
it "knows its type" do
|
24
26
|
@item.type.should == @detail['type']
|
25
27
|
end
|
28
|
+
|
29
|
+
it "knows its state" do
|
30
|
+
@item.state.should == @detail['state']
|
31
|
+
end
|
32
|
+
|
33
|
+
it "knows its pos" do
|
34
|
+
@item.pos.should == @detail['pos']
|
35
|
+
end
|
26
36
|
end
|
27
37
|
end
|
data/spec/member_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/trello_spec.rb
CHANGED
@@ -69,5 +69,15 @@ describe Trello do
|
|
69
69
|
auth_policy.oauth_token_secret.should be_nil
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
73
|
+
context "not configured" do
|
74
|
+
before do
|
75
|
+
Trello.configure
|
76
|
+
end
|
77
|
+
|
78
|
+
it { Trello.auth_policy.should be_a(AuthPolicy) }
|
79
|
+
it { expect { Trello.client.get(:member) }.to raise_error(Trello::ConfigurationError) }
|
80
|
+
end
|
81
|
+
|
72
82
|
end
|
73
83
|
end
|
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-trello
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jeremy Tregunna
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activemodel
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: addressable
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ~>
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '2.3'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.3'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: json
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: oauth
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: 0.4.5
|
55
62
|
type: :runtime
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.4.5
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rest-client
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
73
|
- - ~>
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: 1.6.7
|
66
76
|
type: :runtime
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.6.7
|
69
83
|
description: A wrapper around the trello.com API.
|
70
84
|
email: jeremy@tregunna.ca
|
71
85
|
executables: []
|
@@ -122,28 +136,27 @@ files:
|
|
122
136
|
- spec/trello_spec.rb
|
123
137
|
homepage: https://github.com/jeremytregunna/ruby-trello
|
124
138
|
licenses: []
|
139
|
+
metadata: {}
|
125
140
|
post_install_message:
|
126
141
|
rdoc_options:
|
127
142
|
- --charset=UTF-8
|
128
143
|
require_paths:
|
129
144
|
- lib
|
130
145
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
146
|
requirements:
|
133
|
-
- -
|
147
|
+
- - '>='
|
134
148
|
- !ruby/object:Gem::Version
|
135
149
|
version: '0'
|
136
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
151
|
requirements:
|
139
|
-
- -
|
152
|
+
- - '>='
|
140
153
|
- !ruby/object:Gem::Version
|
141
154
|
version: 1.3.6
|
142
155
|
requirements: []
|
143
156
|
rubyforge_project: ruby-trello
|
144
|
-
rubygems_version:
|
157
|
+
rubygems_version: 2.0.3
|
145
158
|
signing_key:
|
146
|
-
specification_version:
|
159
|
+
specification_version: 4
|
147
160
|
summary: A wrapper around the trello.com API.
|
148
161
|
test_files:
|
149
162
|
- spec/action_spec.rb
|