ruby-trello 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|