ruby-trello 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Stories in Ready](http://badge.waffle.io/jeremytregunna/ruby-trello.png)](http://waffle.io/jeremytregunna/ruby-trello)
|
3
4
|
[![Build Status](https://secure.travis-ci.org/jeremytregunna/ruby-trello.png)](http://travis-ci.org/jeremytregunna/ruby-trello) [![Dependency Status](https://gemnasium.com/jeremytregunna/ruby-trello.png)](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
|