podio 0.8.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +9 -2
- data/README.md +1 -4
- data/examples/oauth_web_flow/Gemfile +4 -0
- data/examples/{sinatra.rb → oauth_web_flow/sinatra.rb} +7 -6
- data/lib/podio.rb +18 -3
- data/lib/podio/active_podio/base.rb +107 -62
- data/lib/podio/client.rb +30 -5
- data/lib/podio/error.rb +22 -10
- data/lib/podio/middleware/error_response.rb +23 -16
- data/lib/podio/middleware/json_response.rb +1 -1
- data/lib/podio/middleware/logger.rb +3 -0
- data/lib/podio/middleware/oauth2.rb +3 -0
- data/lib/podio/models/account_provider.rb +1 -0
- data/lib/podio/models/action.rb +19 -2
- data/lib/podio/models/activation_status.rb +8 -2
- data/lib/podio/models/app_store_category.rb +4 -1
- data/lib/podio/models/app_store_share.rb +29 -16
- data/lib/podio/models/application.rb +57 -2
- data/lib/podio/models/application_email.rb +5 -2
- data/lib/podio/models/application_field.rb +5 -2
- data/lib/podio/models/batch.rb +8 -0
- data/lib/podio/models/by_line.rb +2 -1
- data/lib/podio/models/calendar_event.rb +63 -3
- data/lib/podio/models/calendar_mute.rb +6 -1
- data/lib/podio/models/category.rb +1 -0
- data/lib/podio/models/comment.rb +29 -8
- data/lib/podio/models/condition.rb +8 -0
- data/lib/podio/models/condition_set.rb +40 -0
- data/lib/podio/models/contact.rb +13 -2
- data/lib/podio/models/contract.rb +85 -1
- data/lib/podio/models/contract_event.rb +17 -0
- data/lib/podio/models/contract_price.rb +3 -7
- data/lib/podio/models/contract_price_v2.rb +31 -0
- data/lib/podio/models/contract_user.rb +4 -0
- data/lib/podio/models/conversation.rb +114 -13
- data/lib/podio/models/conversation_event.rb +51 -0
- data/lib/podio/models/conversation_message.rb +2 -1
- data/lib/podio/models/conversation_participant.rb +3 -2
- data/lib/podio/models/date_election.rb +35 -0
- data/lib/podio/models/email_contact.rb +46 -0
- data/lib/podio/models/email_subscription_setting.rb +4 -23
- data/lib/podio/models/embed.rb +4 -4
- data/lib/podio/models/experiment.rb +71 -0
- data/lib/podio/models/external_file.rb +7 -2
- data/lib/podio/models/file_attachment.rb +23 -0
- data/lib/podio/models/form.rb +7 -0
- data/lib/podio/models/friend.rb +12 -0
- data/lib/podio/models/grant.rb +73 -0
- data/lib/podio/models/hook.rb +13 -6
- data/lib/podio/models/importer.rb +3 -0
- data/lib/podio/models/integration.rb +17 -6
- data/lib/podio/models/invoice.rb +30 -0
- data/lib/podio/models/item.rb +81 -14
- data/lib/podio/models/item_diff.rb +9 -5
- data/lib/podio/models/item_field.rb +11 -2
- data/lib/podio/models/item_revision.rb +5 -2
- data/lib/podio/models/linked_account.rb +1 -0
- data/lib/podio/models/live.rb +61 -0
- data/lib/podio/models/net_promoter_score.rb +28 -0
- data/lib/podio/models/notification.rb +9 -4
- data/lib/podio/models/notification_group.rb +5 -2
- data/lib/podio/models/o_auth.rb +4 -2
- data/lib/podio/models/o_auth_client.rb +1 -2
- data/lib/podio/models/organization.rb +22 -10
- data/lib/podio/models/organization_contact.rb +2 -1
- data/lib/podio/models/organization_member.rb +17 -3
- data/lib/podio/models/organization_profile.rb +8 -2
- data/lib/podio/models/pin.rb +27 -0
- data/lib/podio/models/profile.rb +19 -50
- data/lib/podio/models/promotion.rb +91 -0
- data/lib/podio/models/rating.rb +23 -5
- data/lib/podio/models/recurrence.rb +6 -3
- data/lib/podio/models/reference.rb +17 -1
- data/lib/podio/models/reminder.rb +8 -3
- data/lib/podio/models/search.rb +7 -1
- data/lib/podio/models/space.rb +41 -2
- data/lib/podio/models/space_contact.rb +1 -2
- data/lib/podio/models/space_invitation.rb +4 -5
- data/lib/podio/models/space_member.rb +37 -4
- data/lib/podio/models/status.rb +20 -8
- data/lib/podio/models/stream_activity_group.rb +40 -0
- data/lib/podio/models/stream_mute.rb +7 -8
- data/lib/podio/models/stream_object.rb +19 -11
- data/lib/podio/models/subscription.rb +7 -1
- data/lib/podio/models/tag.rb +6 -1
- data/lib/podio/models/tag_search.rb +2 -1
- data/lib/podio/models/task.rb +74 -18
- data/lib/podio/models/task_label.rb +10 -2
- data/lib/podio/models/user.rb +50 -6
- data/lib/podio/models/user_mail.rb +4 -0
- data/lib/podio/models/user_status.rb +7 -0
- data/lib/podio/models/view.rb +27 -7
- data/lib/podio/models/widget.rb +25 -3
- data/lib/podio/version.rb +1 -1
- data/podio.gemspec +13 -10
- data/script/config.example.rb +6 -0
- data/script/referenceGenerator.rb +87 -0
- data/test/active_podio_test.rb +44 -34
- data/test/client_test.rb +13 -2
- metadata +89 -36
- data/lib/podio/middleware/date_conversion.rb +0 -37
- data/lib/podio/models/bulletin.rb +0 -60
- data/lib/podio/models/connection.rb +0 -53
- data/lib/podio/models/news.rb +0 -85
data/test/active_podio_test.rb
CHANGED
@@ -30,22 +30,31 @@ class ActivePodioTest < Test::Unit::TestCase
|
|
30
30
|
delegate_to_hash :prefixed_hash_property, :key3, :prefix => true
|
31
31
|
delegate_to_hash :hash_property_with_setter, :key4, :setter => true
|
32
32
|
delegate_to_hash :prefixed_hash_property_with_setter, :key5, :setter => true, :prefix => true
|
33
|
-
|
34
|
-
|
35
|
-
def save(exception_class = nil)
|
36
|
-
if exception_class
|
37
|
-
raise exception_class.new({
|
38
|
-
'error' => 'test status',
|
39
|
-
'error_description' => 'test desc',
|
40
|
-
'error_parameters' => 'test parms'
|
41
|
-
}, 500, 'http://api.podio.dev')
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
handle_api_errors_for :save
|
46
33
|
end
|
47
|
-
|
48
|
-
|
34
|
+
|
35
|
+
class TestInheritedModel < TestModel
|
36
|
+
property :subclass_string, :string
|
37
|
+
|
38
|
+
has_one :subclass_assoc, :class => 'ActivePodioTest::TestAssociationModel'
|
39
|
+
end
|
40
|
+
|
41
|
+
test 'inherited models should not pollute the superclass attributes' do
|
42
|
+
super_attributes = TestModel.valid_attributes.dup
|
43
|
+
subclass_attributes = TestInheritedModel.valid_attributes
|
44
|
+
|
45
|
+
assert_equal [:subclass_string], subclass_attributes - super_attributes
|
46
|
+
assert_equal super_attributes, TestModel.valid_attributes
|
47
|
+
end
|
48
|
+
|
49
|
+
test 'inherited models should not pollute the superclass associations' do
|
50
|
+
super_associations = TestModel._associations.dup
|
51
|
+
subclass_associations = TestInheritedModel._associations
|
52
|
+
|
53
|
+
assert_equal [[:subclass_assoc, :has_one]], subclass_associations.to_a - super_associations.to_a
|
54
|
+
assert_equal super_associations, TestModel._associations
|
55
|
+
end
|
56
|
+
|
57
|
+
test 'should instantiate model' do
|
49
58
|
@test = TestModel.new
|
50
59
|
assert_not_nil @test
|
51
60
|
end
|
@@ -130,7 +139,7 @@ class ActivePodioTest < Test::Unit::TestCase
|
|
130
139
|
@test = TestModel.new(:array => ['foo', 'bar'])
|
131
140
|
assert_equal 'foo', @test.default_array
|
132
141
|
end
|
133
|
-
|
142
|
+
|
134
143
|
test 'should expose has one association' do
|
135
144
|
@test = TestModel.new(:association => { :string => 'association string' })
|
136
145
|
assert_equal 'association string', @test.association.string
|
@@ -198,22 +207,24 @@ class ActivePodioTest < Test::Unit::TestCase
|
|
198
207
|
@test.key4 = 'new'
|
199
208
|
assert_equal 'new', @test.key4
|
200
209
|
end
|
201
|
-
|
202
|
-
test 'should
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
210
|
+
|
211
|
+
test 'should instantiate exception properly' do
|
212
|
+
exc = Podio::BadRequestError.new(
|
213
|
+
{
|
214
|
+
"error" => "forbidden",
|
215
|
+
"error_detail" => nil,
|
216
|
+
"error_description" => "Only available for clients with a trust level of 4 or higher. To get your API client upgraded to a higher trust level contact support at support@podio.com.",
|
217
|
+
"error_parameters" => {"foo" => "bar"},
|
218
|
+
"error_propagate" => false
|
219
|
+
}, 400, "https://api.podio.com/foo/bar")
|
220
|
+
|
221
|
+
assert_equal exc.code, "forbidden"
|
222
|
+
assert_equal exc.sub_code, nil
|
223
|
+
assert_equal exc.message, "Only available for clients with a trust level of 4 or higher. To get your API client upgraded to a higher trust level contact support at support@podio.com."
|
224
|
+
assert_equal exc.propagate, false
|
225
|
+
assert_equal exc.parameters["foo"], "bar"
|
226
|
+
end
|
227
|
+
|
217
228
|
test 'should return instance from member' do
|
218
229
|
assert TestModel.member(:string => 'string').instance_of?(TestModel)
|
219
230
|
end
|
@@ -289,5 +300,4 @@ class ActivePodioTest < Test::Unit::TestCase
|
|
289
300
|
@test = TestModel.new(:test_id => 42)
|
290
301
|
assert_equal({:id=> 42, :string=>nil, :test_id=>42, :hash_property=>nil, :prefixed_hash_property=>nil, :hash_property_with_setter=>nil, :prefixed_hash_property_with_setter=>nil, :datetime=>nil, :date=>nil, :integer=>nil, :boolean=>nil, :array=>nil}, @test.as_json)
|
291
302
|
end
|
292
|
-
|
293
|
-
end
|
303
|
+
end
|
data/test/client_test.rb
CHANGED
@@ -7,17 +7,28 @@ class ClientTest < Test::Unit::TestCase
|
|
7
7
|
assert_equal Podio::Client, Podio.client.class
|
8
8
|
assert_equal 'client_id', Podio.client.api_key
|
9
9
|
assert_equal 'client_secret', Podio.client.api_secret
|
10
|
+
|
11
|
+
assert_equal 'Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=', Podio.client.connection.headers['authorization']
|
10
12
|
end
|
11
|
-
|
13
|
+
|
12
14
|
test 'should initialize client' do
|
15
|
+
podio = Podio::Client.new()
|
16
|
+
|
17
|
+
assert_equal 'https://api.podio.com', podio.api_url
|
18
|
+
assert_nil podio.connection.headers['authorization']
|
19
|
+
end
|
20
|
+
|
21
|
+
test 'should initialize client with key and secret' do
|
13
22
|
podio = Podio::Client.new(:api_url => 'https://new.podio.com', :api_key => 'new_client_id', :api_secret => 'new_client_secret')
|
14
23
|
|
15
24
|
assert_equal 'https://new.podio.com', podio.api_url
|
16
25
|
assert_equal 'new_client_id', podio.api_key
|
17
26
|
assert_equal 'new_client_secret', podio.api_secret
|
27
|
+
|
28
|
+
assert_equal 'Basic bmV3X2NsaWVudF9pZDpuZXdfY2xpZW50X3NlY3JldA==', podio.connection.headers['authorization']
|
18
29
|
end
|
19
30
|
|
20
|
-
test 'should setup connection' do
|
31
|
+
test 'should setup connection with existing token' do
|
21
32
|
token = Podio::OAuthToken.new('access_token' => 'access', 'refresh_token' => 'refresh')
|
22
33
|
podio = Podio::Client.new(:oauth_token => token)
|
23
34
|
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: podio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Florian Munz
|
@@ -10,57 +9,95 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: faraday
|
17
|
-
requirement:
|
18
|
-
none: false
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
requirements:
|
20
18
|
- - ~>
|
21
19
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
20
|
+
version: 0.8.0
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
|
-
version_requirements:
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 0.8.0
|
26
28
|
- !ruby/object:Gem::Dependency
|
27
29
|
name: activesupport
|
28
|
-
requirement:
|
29
|
-
none: false
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
|
-
- -
|
32
|
+
- - '>='
|
32
33
|
- !ruby/object:Gem::Version
|
33
34
|
version: '3.0'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '3.0'
|
37
42
|
- !ruby/object:Gem::Dependency
|
38
43
|
name: activemodel
|
39
|
-
requirement:
|
40
|
-
none: false
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
41
45
|
requirements:
|
42
|
-
- -
|
46
|
+
- - '>='
|
43
47
|
- !ruby/object:Gem::Version
|
44
48
|
version: '3.0'
|
45
49
|
type: :runtime
|
46
50
|
prerelease: false
|
47
|
-
version_requirements:
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3.0'
|
48
56
|
- !ruby/object:Gem::Dependency
|
49
57
|
name: multi_json
|
50
|
-
requirement:
|
51
|
-
none: false
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
52
59
|
requirements:
|
53
|
-
- -
|
60
|
+
- - '>='
|
54
61
|
- !ruby/object:Gem::Version
|
55
62
|
version: '0'
|
56
63
|
type: :runtime
|
57
64
|
prerelease: false
|
58
|
-
version_requirements:
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
'
|
63
|
-
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: yard
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
description: The official Ruby wrapper for the Podio API used and maintained by the
|
99
|
+
Podio team
|
100
|
+
email: munz@podio.com
|
64
101
|
executables: []
|
65
102
|
extensions: []
|
66
103
|
extra_rdoc_files: []
|
@@ -71,13 +108,13 @@ files:
|
|
71
108
|
- LICENSE
|
72
109
|
- README.md
|
73
110
|
- Rakefile
|
74
|
-
- examples/
|
111
|
+
- examples/oauth_web_flow/Gemfile
|
112
|
+
- examples/oauth_web_flow/sinatra.rb
|
75
113
|
- lib/podio.rb
|
76
114
|
- lib/podio/active_podio/base.rb
|
77
115
|
- lib/podio/active_podio/updatable.rb
|
78
116
|
- lib/podio/client.rb
|
79
117
|
- lib/podio/error.rb
|
80
|
-
- lib/podio/middleware/date_conversion.rb
|
81
118
|
- lib/podio/middleware/error_response.rb
|
82
119
|
- lib/podio/middleware/json_request.rb
|
83
120
|
- lib/podio/middleware/json_response.rb
|
@@ -93,36 +130,47 @@ files:
|
|
93
130
|
- lib/podio/models/application_email.rb
|
94
131
|
- lib/podio/models/application_field.rb
|
95
132
|
- lib/podio/models/batch.rb
|
96
|
-
- lib/podio/models/bulletin.rb
|
97
133
|
- lib/podio/models/by_line.rb
|
98
134
|
- lib/podio/models/calendar_event.rb
|
99
135
|
- lib/podio/models/calendar_mute.rb
|
100
136
|
- lib/podio/models/category.rb
|
101
137
|
- lib/podio/models/comment.rb
|
102
|
-
- lib/podio/models/
|
138
|
+
- lib/podio/models/condition.rb
|
139
|
+
- lib/podio/models/condition_set.rb
|
103
140
|
- lib/podio/models/contact.rb
|
104
141
|
- lib/podio/models/contract.rb
|
105
142
|
- lib/podio/models/contract_accounting.rb
|
143
|
+
- lib/podio/models/contract_event.rb
|
106
144
|
- lib/podio/models/contract_price.rb
|
145
|
+
- lib/podio/models/contract_price_v2.rb
|
146
|
+
- lib/podio/models/contract_user.rb
|
107
147
|
- lib/podio/models/conversation.rb
|
148
|
+
- lib/podio/models/conversation_event.rb
|
108
149
|
- lib/podio/models/conversation_message.rb
|
109
150
|
- lib/podio/models/conversation_participant.rb
|
151
|
+
- lib/podio/models/date_election.rb
|
152
|
+
- lib/podio/models/email_contact.rb
|
110
153
|
- lib/podio/models/email_subscription_setting.rb
|
111
154
|
- lib/podio/models/embed.rb
|
155
|
+
- lib/podio/models/experiment.rb
|
112
156
|
- lib/podio/models/external_file.rb
|
113
157
|
- lib/podio/models/file_attachment.rb
|
114
158
|
- lib/podio/models/filter.rb
|
115
159
|
- lib/podio/models/form.rb
|
160
|
+
- lib/podio/models/friend.rb
|
161
|
+
- lib/podio/models/grant.rb
|
116
162
|
- lib/podio/models/hook.rb
|
117
163
|
- lib/podio/models/importer.rb
|
118
164
|
- lib/podio/models/integration.rb
|
165
|
+
- lib/podio/models/invoice.rb
|
119
166
|
- lib/podio/models/item.rb
|
120
167
|
- lib/podio/models/item_diff.rb
|
121
168
|
- lib/podio/models/item_field.rb
|
122
169
|
- lib/podio/models/item_revision.rb
|
123
170
|
- lib/podio/models/linked_account.rb
|
124
171
|
- lib/podio/models/linked_account_data.rb
|
125
|
-
- lib/podio/models/
|
172
|
+
- lib/podio/models/live.rb
|
173
|
+
- lib/podio/models/net_promoter_score.rb
|
126
174
|
- lib/podio/models/notification.rb
|
127
175
|
- lib/podio/models/notification_group.rb
|
128
176
|
- lib/podio/models/o_auth.rb
|
@@ -131,7 +179,9 @@ files:
|
|
131
179
|
- lib/podio/models/organization_contact.rb
|
132
180
|
- lib/podio/models/organization_member.rb
|
133
181
|
- lib/podio/models/organization_profile.rb
|
182
|
+
- lib/podio/models/pin.rb
|
134
183
|
- lib/podio/models/profile.rb
|
184
|
+
- lib/podio/models/promotion.rb
|
135
185
|
- lib/podio/models/question.rb
|
136
186
|
- lib/podio/models/question_answer.rb
|
137
187
|
- lib/podio/models/question_option.rb
|
@@ -146,6 +196,7 @@ files:
|
|
146
196
|
- lib/podio/models/space_invitation.rb
|
147
197
|
- lib/podio/models/space_member.rb
|
148
198
|
- lib/podio/models/status.rb
|
199
|
+
- lib/podio/models/stream_activity_group.rb
|
149
200
|
- lib/podio/models/stream_mute.rb
|
150
201
|
- lib/podio/models/stream_object.rb
|
151
202
|
- lib/podio/models/subscription.rb
|
@@ -162,34 +213,36 @@ files:
|
|
162
213
|
- lib/podio/response_wrapper.rb
|
163
214
|
- lib/podio/version.rb
|
164
215
|
- podio.gemspec
|
216
|
+
- script/config.example.rb
|
217
|
+
- script/referenceGenerator.rb
|
165
218
|
- test/active_podio_test.rb
|
166
219
|
- test/client_test.rb
|
167
220
|
- test/fixtures/fixtures.yaml
|
168
221
|
- test/models_sanity_test.rb
|
169
222
|
- test/test_helper.rb
|
170
223
|
homepage: https://github.com/podio/podio-rb
|
171
|
-
licenses:
|
224
|
+
licenses:
|
225
|
+
- MIT
|
226
|
+
metadata: {}
|
172
227
|
post_install_message:
|
173
228
|
rdoc_options: []
|
174
229
|
require_paths:
|
175
230
|
- lib
|
176
231
|
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
232
|
requirements:
|
179
|
-
- -
|
233
|
+
- - '>='
|
180
234
|
- !ruby/object:Gem::Version
|
181
235
|
version: '0'
|
182
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
-
none: false
|
184
237
|
requirements:
|
185
|
-
- -
|
238
|
+
- - '>='
|
186
239
|
- !ruby/object:Gem::Version
|
187
240
|
version: '0'
|
188
241
|
requirements: []
|
189
242
|
rubyforge_project:
|
190
|
-
rubygems_version:
|
243
|
+
rubygems_version: 2.0.14
|
191
244
|
signing_key:
|
192
|
-
specification_version:
|
245
|
+
specification_version: 4
|
193
246
|
summary: Ruby wrapper for the Podio API
|
194
247
|
test_files:
|
195
248
|
- test/active_podio_test.rb
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Podio
|
2
|
-
module Middleware
|
3
|
-
class DateConversion < Faraday::Response::Middleware
|
4
|
-
def on_complete(env)
|
5
|
-
convert_dates(env[:body]) if env[:body].is_a?(Hash)
|
6
|
-
end
|
7
|
-
|
8
|
-
# Converts all attributes ending with "_on" to datetime and ending with "date" to date
|
9
|
-
def convert_dates(body)
|
10
|
-
[body].flatten.compact.each do |hash|
|
11
|
-
hash.each do |key, value|
|
12
|
-
if value.is_a?(Hash)
|
13
|
-
convert_dates(value)
|
14
|
-
elsif value.is_a?(Array)
|
15
|
-
value.each_with_index { |item, index| hash[key][index] = convert_field(key, item) }
|
16
|
-
else
|
17
|
-
hash[key] = convert_field(key, value)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def convert_field(key, value)
|
26
|
-
if key.present?
|
27
|
-
if key[-3..-1] == "_on"
|
28
|
-
return value.try(:to_s).try(:to_datetime)
|
29
|
-
elsif key[-4..-1] == "date"
|
30
|
-
return value.try(:to_s).try(:to_date)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
value
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
class Podio::Bulletin < ActivePodio::Base
|
2
|
-
property :bulletin_id, :integer
|
3
|
-
property :title, :string
|
4
|
-
property :summary, :string
|
5
|
-
property :text, :string
|
6
|
-
property :locale, :string
|
7
|
-
property :target_group, :string
|
8
|
-
property :created_on, :datetime
|
9
|
-
property :sent_on, :datetime
|
10
|
-
|
11
|
-
has_one :created_by, :class => 'ByLine'
|
12
|
-
has_one :sent_by, :class => 'ByLine'
|
13
|
-
|
14
|
-
alias_method :id, :bulletin_id
|
15
|
-
|
16
|
-
class << self
|
17
|
-
def create(attributes)
|
18
|
-
response = Podio.connection.post do |req|
|
19
|
-
req.url "/bulletin/"
|
20
|
-
req.body = attributes
|
21
|
-
end
|
22
|
-
|
23
|
-
response.body['bulletin_id']
|
24
|
-
end
|
25
|
-
|
26
|
-
def update(id, attributes)
|
27
|
-
response = Podio.connection.put do |req|
|
28
|
-
req.url "/bulletin/#{id}"
|
29
|
-
req.body = attributes
|
30
|
-
end
|
31
|
-
|
32
|
-
response.status
|
33
|
-
end
|
34
|
-
|
35
|
-
def find(id, options={})
|
36
|
-
member Podio.connection.get("/bulletin/#{id}").body
|
37
|
-
end
|
38
|
-
|
39
|
-
def find_visible
|
40
|
-
list Podio.connection.get("/bulletin/").body
|
41
|
-
end
|
42
|
-
|
43
|
-
def find_all
|
44
|
-
list Podio.connection.get("/bulletin/?show_drafts=1").body
|
45
|
-
end
|
46
|
-
|
47
|
-
def find_all_by_locale(locale)
|
48
|
-
list Podio.connection.get("/bulletin/?locale=locale").body
|
49
|
-
end
|
50
|
-
|
51
|
-
def preview!(id)
|
52
|
-
Podio.connection.post("/bulletin/#{id}/preview").body
|
53
|
-
end
|
54
|
-
|
55
|
-
def send!(id)
|
56
|
-
Podio.connection.post("/bulletin/#{id}/send").body
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
|
-
end
|