ruby-trello 1.0.3 → 1.0.4
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/lib/trello.rb +1 -0
- data/lib/trello/association.rb +3 -0
- data/lib/trello/token.rb +4 -3
- data/lib/trello/webhook.rb +63 -0
- data/spec/association_spec.rb +22 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/token_spec.rb +2 -2
- data/spec/webhook_spec.rb +80 -0
- metadata +28 -11
- checksums.yaml +0 -7
data/lib/trello.rb
CHANGED
data/lib/trello/association.rb
CHANGED
data/lib/trello/token.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Trello
|
2
2
|
class Token < BasicData
|
3
|
-
register_attributes :id, :member_id, :created_at, :permissions,
|
4
|
-
:readonly => [ :id, :member_id, :created_at, :permissions ]
|
3
|
+
register_attributes :id, :member_id, :created_at, :permissions, :webhooks,
|
4
|
+
:readonly => [ :id, :member_id, :created_at, :permissions, :webhooks ]
|
5
5
|
|
6
6
|
class << self
|
7
7
|
# Finds a token
|
8
|
-
def find(token, params = {})
|
8
|
+
def find(token, params = {webhooks: true})
|
9
9
|
client.find(:token, token, params)
|
10
10
|
end
|
11
11
|
end
|
@@ -16,6 +16,7 @@ module Trello
|
|
16
16
|
attributes[:member_id] = fields['idMember']
|
17
17
|
attributes[:created_at] = Time.iso8601(fields['dateCreated'])
|
18
18
|
attributes[:permissions] = fields['permissions'] || {}
|
19
|
+
attributes[:webhooks] = fields['webhooks']
|
19
20
|
end
|
20
21
|
|
21
22
|
# Returns a reference to the user who authorized the token.
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Trello
|
2
|
+
# A webhook is an url called each time a specified idModel is updated
|
3
|
+
class Webhook < BasicData
|
4
|
+
register_attributes :id, :description, :id_model, :callback_url, :active,
|
5
|
+
:readonly => [ :id ]
|
6
|
+
validates_presence_of :id, :id_model, :callback_url
|
7
|
+
validates_length_of :description, :in => 1..16384
|
8
|
+
|
9
|
+
class << self
|
10
|
+
# Find a specific webhook by its id.
|
11
|
+
def find(id, params = {})
|
12
|
+
client.find(:webhook, id, params)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Create a new webhook and save it on Trello.
|
16
|
+
def create(options)
|
17
|
+
client.create(:webhook,
|
18
|
+
'description' => options[:description],
|
19
|
+
'idModel' => options[:id_model],
|
20
|
+
'callbackURL' => options[:callback_url])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def update_fields(fields)
|
25
|
+
attributes[:id] = fields['id']
|
26
|
+
attributes[:description] = fields['description']
|
27
|
+
attributes[:id_model] = fields['idModel']
|
28
|
+
attributes[:callback_url] = fields['callbackURL']
|
29
|
+
attributes[:active] = fields['active']
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def save
|
34
|
+
# If we have an id, just update our fields.
|
35
|
+
return update! if id
|
36
|
+
|
37
|
+
client.post("/webhooks", {
|
38
|
+
:description => description,
|
39
|
+
:idModel => id_model,
|
40
|
+
:callbackURL => callback_url
|
41
|
+
}).json_into(self)
|
42
|
+
end
|
43
|
+
|
44
|
+
def update!
|
45
|
+
client.put("/webhooks/#{id}", {
|
46
|
+
:description => description,
|
47
|
+
:idModel => id_model,
|
48
|
+
:callbackURL => callback_url,
|
49
|
+
:active => active
|
50
|
+
})
|
51
|
+
end
|
52
|
+
|
53
|
+
# Delete this webhook
|
54
|
+
def delete
|
55
|
+
client.delete("/webhooks/#{id}")
|
56
|
+
end
|
57
|
+
|
58
|
+
# Check if the webhook is activated
|
59
|
+
def activated?
|
60
|
+
active
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Trello
|
4
|
+
describe Association do
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
let(:organization) { client.find(:organization, "4ee7e59ae582acdec8000291") }
|
8
|
+
let(:client) { Client.new(:consumer_key => "xxx") }
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
client.stub(:get).with("/organizations/4ee7e59ae582acdec8000291", {}).
|
12
|
+
and_return organization_payload
|
13
|
+
client.stub(:get).with("/organizations/4ee7e59ae582acdec8000291/boards/all").
|
14
|
+
and_return boards_payload
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should set the proper client for all associated boards of the organization" do
|
18
|
+
organization.boards.first.client.consumer_key.should == "xxx"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -295,4 +295,24 @@ module Helpers
|
|
295
295
|
def label_name_payload
|
296
296
|
JSON.generate(label_name_details)
|
297
297
|
end
|
298
|
+
|
299
|
+
def webhooks_details
|
300
|
+
[
|
301
|
+
{
|
302
|
+
"id" => "webhookid",
|
303
|
+
"description" => "Test webhook",
|
304
|
+
"idModel" => "1234",
|
305
|
+
"callbackURL" => "http://example.org/webhook",
|
306
|
+
"active" => true
|
307
|
+
}
|
308
|
+
]
|
309
|
+
end
|
310
|
+
|
311
|
+
def webhooks_payload
|
312
|
+
JSON.generate(webhooks_details)
|
313
|
+
end
|
314
|
+
|
315
|
+
def webhook_payload
|
316
|
+
JSON.generate(webhooks_details.first)
|
317
|
+
end
|
298
318
|
end
|
data/spec/token_spec.rb
CHANGED
@@ -15,12 +15,12 @@ module Trello
|
|
15
15
|
let(:client) { Trello.client }
|
16
16
|
|
17
17
|
it "delegates to Trello.client#find" do
|
18
|
-
client.should_receive(:find).with(:token, '1234', {})
|
18
|
+
client.should_receive(:find).with(:token, '1234', {:webhooks => true})
|
19
19
|
Token.find('1234')
|
20
20
|
end
|
21
21
|
|
22
22
|
it "is equivalent to client#find" do
|
23
|
-
Token.find('1234').should eq(token)
|
23
|
+
Token.find('1234', {}).should eq(token)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Trello
|
4
|
+
describe Webhook do
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
let(:webhook) { client.find(:webhook, "1234") }
|
8
|
+
let(:client) { Client.new }
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
client.stub(:get).with("/webhooks/1234", {}).and_return webhook_payload
|
12
|
+
end
|
13
|
+
|
14
|
+
context "finding" do
|
15
|
+
let(:client) { Trello.client }
|
16
|
+
|
17
|
+
it "delegates to Trello.client#find" do
|
18
|
+
client.should_receive(:find).with(:webhook, '1234', {})
|
19
|
+
Webhook.find('1234')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "is equivalent to client#find" do
|
23
|
+
Webhook.find('1234').should eq(webhook)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "creating" do
|
28
|
+
let(:client) { Trello.client }
|
29
|
+
|
30
|
+
it "creates a new webhook" do
|
31
|
+
webhook = Webhook.new(webhooks_details.first)
|
32
|
+
webhook.should be_valid
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'creates a new webhook and saves it on Trello', :refactor => true do
|
36
|
+
payload = {
|
37
|
+
:name => 'Test Card',
|
38
|
+
:desc => nil,
|
39
|
+
}
|
40
|
+
|
41
|
+
webhook = webhooks_details.first
|
42
|
+
result = JSON.generate(webhook)
|
43
|
+
|
44
|
+
expected_payload = {:description => webhook[:description], :idModel => webhook[:idModel], :callbackURL => webhook[:callbackURL]}
|
45
|
+
|
46
|
+
client.should_receive(:post).with("/webhooks", expected_payload).and_return result
|
47
|
+
|
48
|
+
webhook = Webhook.create(webhooks_details.first)
|
49
|
+
|
50
|
+
webhook.class.should be Webhook
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "updating" do
|
55
|
+
it "updating description does a put on the correct resource with the correct value" do
|
56
|
+
expected_new_description = "xxx"
|
57
|
+
|
58
|
+
expected_payload = {:description => expected_new_description, :idModel => webhook.id_model, :callbackURL => webhook.callback_url, :active => webhook.active}
|
59
|
+
|
60
|
+
client.should_receive(:put).once.with("/webhooks/#{webhook.id}", expected_payload)
|
61
|
+
|
62
|
+
webhook.description = expected_new_description
|
63
|
+
webhook.save
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "deleting" do
|
68
|
+
it "deletes the webhook" do
|
69
|
+
client.should_receive(:delete).with("/webhooks/#{webhook.id}")
|
70
|
+
webhook.delete
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "activated?" do
|
75
|
+
it "returns the active attribute" do
|
76
|
+
webhook.activated?.should be_true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
CHANGED
@@ -1,32 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-trello
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Jeremy Tregunna
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-06 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activemodel
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: addressable
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,20 +46,23 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: json
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: oauth
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: rest-client
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -111,9 +122,11 @@ files:
|
|
111
122
|
- lib/trello/organization.rb
|
112
123
|
- lib/trello/string.rb
|
113
124
|
- lib/trello/token.rb
|
125
|
+
- lib/trello/webhook.rb
|
114
126
|
- lib/trello.rb
|
115
127
|
- README.md
|
116
128
|
- spec/action_spec.rb
|
129
|
+
- spec/association_spec.rb
|
117
130
|
- spec/basic_auth_policy_spec.rb
|
118
131
|
- spec/board_spec.rb
|
119
132
|
- spec/card_spec.rb
|
@@ -134,33 +147,36 @@ files:
|
|
134
147
|
- spec/string_spec.rb
|
135
148
|
- spec/token_spec.rb
|
136
149
|
- spec/trello_spec.rb
|
150
|
+
- spec/webhook_spec.rb
|
137
151
|
homepage: https://github.com/jeremytregunna/ruby-trello
|
138
152
|
licenses:
|
139
153
|
- MIT
|
140
|
-
metadata: {}
|
141
154
|
post_install_message:
|
142
155
|
rdoc_options:
|
143
156
|
- --charset=UTF-8
|
144
157
|
require_paths:
|
145
158
|
- lib
|
146
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
147
161
|
requirements:
|
148
|
-
- - '>='
|
162
|
+
- - ! '>='
|
149
163
|
- !ruby/object:Gem::Version
|
150
164
|
version: '0'
|
151
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
152
167
|
requirements:
|
153
|
-
- - '>='
|
168
|
+
- - ! '>='
|
154
169
|
- !ruby/object:Gem::Version
|
155
170
|
version: 1.3.6
|
156
171
|
requirements: []
|
157
172
|
rubyforge_project: ruby-trello
|
158
|
-
rubygems_version:
|
173
|
+
rubygems_version: 1.8.25
|
159
174
|
signing_key:
|
160
|
-
specification_version:
|
175
|
+
specification_version: 3
|
161
176
|
summary: A wrapper around the trello.com API.
|
162
177
|
test_files:
|
163
178
|
- spec/action_spec.rb
|
179
|
+
- spec/association_spec.rb
|
164
180
|
- spec/basic_auth_policy_spec.rb
|
165
181
|
- spec/board_spec.rb
|
166
182
|
- spec/card_spec.rb
|
@@ -181,3 +197,4 @@ test_files:
|
|
181
197
|
- spec/string_spec.rb
|
182
198
|
- spec/token_spec.rb
|
183
199
|
- spec/trello_spec.rb
|
200
|
+
- spec/webhook_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 09926829a9c5e626cd0ab3796ab1a57af77c294a
|
4
|
-
data.tar.gz: 9694ed068bacd16f153e35384a5f6641378cb6e6
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 5802afb500a67024cc96f203a239c39ef1844102d3278e7398a7c6142edea202fbe74f6965932ac7efd9e3b12dd9906e5ef614218567ec060cf487888753f4b8
|
7
|
-
data.tar.gz: 7f6208ed5447fa1ae89e4a5d43dab717c8b986e2548c5577407e89b4d5ac5e63b2e8248cecf1606dde8eec2f3a102145dd5c5fa8548e596d19cbd8f6ae244aac
|