podio 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +1 -4
- data/README.md +82 -67
- data/lib/podio.rb +15 -2
- data/lib/podio/client.rb +11 -7
- data/lib/podio/middleware/error_response.rb +3 -1
- data/lib/podio/middleware/json_response.rb +6 -1
- data/lib/podio/middleware/logger.rb +4 -3
- data/lib/podio/middleware/oauth2.rb +5 -5
- data/lib/podio/models/answer.rb +8 -0
- data/lib/podio/models/app_store_category.rb +2 -2
- data/lib/podio/models/app_store_share.rb +1 -0
- data/lib/podio/models/application.rb +12 -4
- data/lib/podio/models/application_field.rb +10 -0
- data/lib/podio/models/batch.rb +1 -0
- data/lib/podio/models/calendar_event.rb +6 -5
- data/lib/podio/models/campaign.rb +88 -0
- data/lib/podio/models/category.rb +1 -1
- data/lib/podio/models/contract.rb +18 -20
- data/lib/podio/models/contract_attribution.rb +24 -0
- data/lib/podio/models/contract_period.rb +22 -0
- data/lib/podio/models/contract_price.rb +37 -26
- data/lib/podio/models/device.rb +22 -0
- data/lib/podio/models/email_subscription_setting.rb +8 -0
- data/lib/podio/models/embed.rb +5 -2
- data/lib/podio/models/experiment.rb +26 -3
- data/lib/podio/models/extension.rb +90 -0
- data/lib/podio/models/external_file.rb +3 -3
- data/lib/podio/models/file_attachment.rb +25 -2
- data/lib/podio/models/form.rb +2 -1
- data/lib/podio/models/grant.rb +1 -0
- data/lib/podio/models/invoice.rb +13 -0
- data/lib/podio/models/item.rb +24 -11
- data/lib/podio/models/item_field.rb +6 -0
- data/lib/podio/models/item_transaction.rb +34 -0
- data/lib/podio/models/live.rb +1 -17
- data/lib/podio/models/notification.rb +5 -0
- data/lib/podio/models/o_auth.rb +9 -2
- data/lib/podio/models/o_auth_client.rb +5 -3
- data/lib/podio/models/o_auth_scope.rb +11 -0
- data/lib/podio/models/organization.rb +26 -8
- data/lib/podio/models/organization_member.rb +6 -0
- data/lib/podio/models/organization_membership.rb +15 -0
- data/lib/podio/models/profile.rb +2 -0
- data/lib/podio/models/promotion.rb +6 -8
- data/lib/podio/models/promotion_group.rb +51 -0
- data/lib/podio/models/promotion_group_member.rb +32 -0
- data/lib/podio/models/rating.rb +4 -2
- data/lib/podio/models/reference.rb +2 -1
- data/lib/podio/models/space.rb +11 -5
- data/lib/podio/models/tag.rb +36 -0
- data/lib/podio/models/view.rb +5 -0
- data/lib/podio/models/vote.rb +8 -0
- data/lib/podio/models/voting.rb +9 -0
- data/lib/podio/models/voucher.rb +68 -0
- data/lib/podio/version.rb +1 -1
- data/podio.gemspec +10 -3
- data/test/client_test.rb +14 -0
- metadata +31 -13
- data/lib/podio/models/contract_price_v2.rb +0 -31
- data/lib/podio/models/date_election.rb +0 -35
@@ -0,0 +1,22 @@
|
|
1
|
+
# @see https://developers.podio.com/doc/actions
|
2
|
+
class Podio::Device < ActivePodio::Base
|
3
|
+
property :app, :string
|
4
|
+
property :type, :string
|
5
|
+
property :token, :string
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def find_all_for_user(user_id)
|
9
|
+
list Podio.connection.get("/mobile/user/#{user_id}").body
|
10
|
+
end
|
11
|
+
|
12
|
+
def send_test(user_id, attributes)
|
13
|
+
response = Podio.connection.post do |req|
|
14
|
+
req.url "/mobile/user/#{user_id}/test"
|
15
|
+
req.body = attributes
|
16
|
+
end
|
17
|
+
|
18
|
+
response.body['pushed']
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -11,6 +11,8 @@ class Podio::EmailSubscriptionSetting < ActivePodio::Base
|
|
11
11
|
property :push_notification, :boolean
|
12
12
|
property :push_notification_sound, :boolean
|
13
13
|
property :push_notification_browser, :boolean
|
14
|
+
property :user, :boolean
|
15
|
+
property :bulletin, :boolean
|
14
16
|
|
15
17
|
def self.find_for_current_user
|
16
18
|
self.get_groups
|
@@ -27,6 +29,12 @@ class Podio::EmailSubscriptionSetting < ActivePodio::Base
|
|
27
29
|
req.url("/email/group/", {})
|
28
30
|
}.body
|
29
31
|
end
|
32
|
+
|
33
|
+
def find_for_user(user_id, client_type)
|
34
|
+
member Podio.connection.get { |req|
|
35
|
+
req.url("/user/#{user_id}/setting/#{client_type}/", {})
|
36
|
+
}.body
|
37
|
+
end
|
30
38
|
|
31
39
|
# @see https://developers.podio.com/doc/email/update-groups-333981
|
32
40
|
def update_groups(options)
|
data/lib/podio/models/embed.rb
CHANGED
@@ -18,10 +18,11 @@ class Podio::Embed < ActivePodio::Base
|
|
18
18
|
class << self
|
19
19
|
|
20
20
|
# @see https://developers.podio.com/doc/embeds/add-an-embed-726483
|
21
|
-
|
21
|
+
# mode: immediate or delayed
|
22
|
+
def create(url, mode = 'immediate')
|
22
23
|
response = Podio.connection.post do |req|
|
23
24
|
req.url '/embed/'
|
24
|
-
req.body = {:url => url }
|
25
|
+
req.body = {:url => url, :mode => mode }
|
25
26
|
end
|
26
27
|
member response.body
|
27
28
|
end
|
@@ -32,3 +33,5 @@ class Podio::Embed < ActivePodio::Base
|
|
32
33
|
|
33
34
|
end
|
34
35
|
end
|
36
|
+
|
37
|
+
|
@@ -1,4 +1,12 @@
|
|
1
1
|
class Podio::Experiment < ActivePodio::Base
|
2
|
+
class Podio::Variation < ActivePodio::Base
|
3
|
+
property :name, :string
|
4
|
+
property :weight, :integer
|
5
|
+
property :active, :boolean
|
6
|
+
end
|
7
|
+
|
8
|
+
property :name, :string
|
9
|
+
has_many :variations, :class => 'Variation'
|
2
10
|
|
3
11
|
class << self
|
4
12
|
|
@@ -31,7 +39,11 @@ class Podio::Experiment < ActivePodio::Base
|
|
31
39
|
end
|
32
40
|
|
33
41
|
def find_all
|
34
|
-
Podio.connection.get('/experiment/').body
|
42
|
+
list Podio.connection.get('/experiment/').body
|
43
|
+
end
|
44
|
+
|
45
|
+
def find(experiment)
|
46
|
+
member Podio.connection.get("/experiment/#{experiment}").body
|
35
47
|
end
|
36
48
|
|
37
49
|
def create_variation(experiment, variation)
|
@@ -46,6 +58,17 @@ class Podio::Experiment < ActivePodio::Base
|
|
46
58
|
Podio.connection.post("/experiment/#{experiment}/variation/#{variation}/deactivate")
|
47
59
|
end
|
48
60
|
|
61
|
+
def delete_variation(experiment, variation)
|
62
|
+
Podio.connection.delete("/experiment/#{experiment}/variation/#{variation}")
|
63
|
+
end
|
64
|
+
|
65
|
+
def update_variation_weight(experiment, variation, weight)
|
66
|
+
Podio.connection.post do |req|
|
67
|
+
req.url "/experiment/#{experiment}/variation/#{variation}/weight"
|
68
|
+
req.body = { "weight" => weight }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
49
72
|
def assign_variation(experiment, variation, attributes)
|
50
73
|
Podio.connection.post do |req|
|
51
74
|
req.url "/experiment/#{experiment}/variation/#{variation}/assign"
|
@@ -56,9 +79,9 @@ class Podio::Experiment < ActivePodio::Base
|
|
56
79
|
def combined(supported_variations_map, identifier=nil, attributes={})
|
57
80
|
connection = Podio.client.oauth_token ? Podio.client.connection : Podio.client.trusted_connection
|
58
81
|
|
59
|
-
body = {
|
82
|
+
body = attributes.merge({
|
60
83
|
"experiments" => supported_variations_map
|
61
|
-
}
|
84
|
+
})
|
62
85
|
|
63
86
|
body["identifier"] = identifier if identifier.present?
|
64
87
|
|
@@ -0,0 +1,90 @@
|
|
1
|
+
class Podio::Extension < ActivePodio::Base
|
2
|
+
property :extension_id, :integer
|
3
|
+
property :name, :string
|
4
|
+
property :installation_url, :string
|
5
|
+
property :status, :string
|
6
|
+
property :created_on, :datetime
|
7
|
+
property :ratings, :hash
|
8
|
+
property :description, :string
|
9
|
+
property :url_label, :string
|
10
|
+
|
11
|
+
# Publisher
|
12
|
+
property :publisher_name, :string
|
13
|
+
property :publisher_url, :string
|
14
|
+
property :publisher_mail, :string
|
15
|
+
|
16
|
+
# Price
|
17
|
+
property :price_model, :string
|
18
|
+
property :price_from, :integer
|
19
|
+
property :price_to, :integer
|
20
|
+
property :price_desc, :string
|
21
|
+
|
22
|
+
# Writing
|
23
|
+
property :main_screenshot_id, :integer
|
24
|
+
property :logo_id, :integer
|
25
|
+
# Reading
|
26
|
+
has_one :main_screenshot, :class => 'FileAttachment'
|
27
|
+
has_one :logo, :class => 'FileAttachment'
|
28
|
+
|
29
|
+
has_one :user, :class => 'User'
|
30
|
+
has_many :other_screenshots, :class => 'FileAttachment'
|
31
|
+
|
32
|
+
|
33
|
+
class << self
|
34
|
+
def create(attributes, options={})
|
35
|
+
response = Podio.connection.post do |req|
|
36
|
+
req.url("/extension/", options)
|
37
|
+
req.body = attributes
|
38
|
+
end
|
39
|
+
|
40
|
+
response.body
|
41
|
+
end
|
42
|
+
|
43
|
+
def find_all(options = {})
|
44
|
+
list Podio.connection.get { |req|
|
45
|
+
req.url("/extension/", options)
|
46
|
+
}.body
|
47
|
+
end
|
48
|
+
|
49
|
+
def find_all_by_status(status, options = {})
|
50
|
+
list Podio.connection.get { |req|
|
51
|
+
req.url("/extension/status/#{status}", options)
|
52
|
+
}.body
|
53
|
+
end
|
54
|
+
|
55
|
+
def find_overview(options = {})
|
56
|
+
response = Podio.connection.get { |req|
|
57
|
+
req.url("/extension/overview", options)
|
58
|
+
}.body
|
59
|
+
|
60
|
+
response['popular'] = list(response['popular'])
|
61
|
+
response['staffpicks'] = list(response['staffpicks'])
|
62
|
+
response['recent'] = list(response['recent'])
|
63
|
+
|
64
|
+
response
|
65
|
+
end
|
66
|
+
|
67
|
+
def find_all_for_current_user(options = {})
|
68
|
+
list Podio.connection.get { |req|
|
69
|
+
req.url("/extension/user/", options)
|
70
|
+
}.body
|
71
|
+
end
|
72
|
+
|
73
|
+
def find(id)
|
74
|
+
member Podio.connection.get("/extension/#{id}").body
|
75
|
+
end
|
76
|
+
|
77
|
+
def update(id, attributes, options={})
|
78
|
+
response = Podio.connection.put do |req|
|
79
|
+
req.url("/extension/#{id}", options)
|
80
|
+
req.body = attributes
|
81
|
+
end
|
82
|
+
response.status
|
83
|
+
end
|
84
|
+
|
85
|
+
def delete(id)
|
86
|
+
Podio.connection.delete("/extension/#{id}").body
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
@@ -18,10 +18,10 @@ class Podio::ExternalFile < ActivePodio::Base
|
|
18
18
|
}.body
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
def create_from_external_file_id(linked_account_id, external_file_id, preserve_permissions=false)
|
21
|
+
# DEPRECATED please use FileAttachment.create_from_external_id
|
22
|
+
def create_from_external_file_id(linked_account_id, external_file_id, preserve_permissions=false, options={})
|
23
23
|
response = Podio.client.connection.post do |req|
|
24
|
-
req.url
|
24
|
+
req.url("/file/linked_account/#{linked_account_id}/", options)
|
25
25
|
req.body = {
|
26
26
|
:external_file_id => external_file_id,
|
27
27
|
:preserve_permissions => preserve_permissions
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# @see https://developers.podio.com/doc/files
|
2
2
|
class Podio::FileAttachment < ActivePodio::Base
|
3
3
|
property :file_id, :integer
|
4
|
+
property :external_file_id, :string
|
4
5
|
property :link, :string
|
5
6
|
property :link_target, :string
|
6
7
|
property :perma_link, :string
|
@@ -37,8 +38,11 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
37
38
|
'file'
|
38
39
|
end
|
39
40
|
|
40
|
-
|
41
|
-
|
41
|
+
# Returns the raw bytes of a file
|
42
|
+
# for images pass the size used by podio in its urls e.g. https://files.podio.com/:file/medium
|
43
|
+
def raw_data(size=nil)
|
44
|
+
link = size ? "#{self.link}/#{size}" : self.link
|
45
|
+
Podio.connection.get(link).body
|
42
46
|
end
|
43
47
|
|
44
48
|
class << self
|
@@ -64,6 +68,18 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
64
68
|
member response.body
|
65
69
|
end
|
66
70
|
|
71
|
+
def create_from_external_file_id(linked_account_id, external_file_id, preserve_permissions=false, options={})
|
72
|
+
response = Podio.client.connection.post do |req|
|
73
|
+
req.url("/file/linked_account/#{linked_account_id}/", options)
|
74
|
+
req.body = {
|
75
|
+
:external_file_id => external_file_id,
|
76
|
+
:preserve_permissions => preserve_permissions
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
member response.body
|
81
|
+
end
|
82
|
+
|
67
83
|
# Attach a file to an existing reference
|
68
84
|
# @see https://developers.podio.com/doc/files/attach-file-22518
|
69
85
|
def attach(id, ref_type, ref_id)
|
@@ -93,6 +109,13 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
93
109
|
Podio.client.connection.get("/file/#{id}/raw").body
|
94
110
|
end
|
95
111
|
|
112
|
+
# @see https://developers.podio.com/doc/files/get-files-4497983
|
113
|
+
def find_all(options={})
|
114
|
+
list Podio.connection.get { |req|
|
115
|
+
req.url("/file/", options)
|
116
|
+
}.body
|
117
|
+
end
|
118
|
+
|
96
119
|
# @see https://developers.podio.com/doc/files/get-files-on-app-22472
|
97
120
|
def find_for_app(app_id, options={})
|
98
121
|
list Podio.connection.get { |req|
|
data/lib/podio/models/form.rb
CHANGED
@@ -8,12 +8,13 @@ class Podio::Form < ActivePodio::Base
|
|
8
8
|
property :fields, :array
|
9
9
|
property :attachments, :boolean
|
10
10
|
property :status, :string
|
11
|
+
property :item_capacity, :boolean
|
11
12
|
|
12
13
|
# Deprecated
|
13
14
|
property :field_ids, :array
|
14
15
|
|
15
16
|
alias_method :id, :form_id
|
16
|
-
delegate_to_hash :settings, :captcha, :text, :theme, :css, :setter => true
|
17
|
+
delegate_to_hash :settings, :captcha, :text, :theme, :css, :success_page, :setter => true
|
17
18
|
delegate_to_hash :text, :submit, :success, :heading, :description, :setter => true
|
18
19
|
|
19
20
|
class << self
|
data/lib/podio/models/grant.rb
CHANGED
data/lib/podio/models/invoice.rb
CHANGED
@@ -22,6 +22,19 @@ class Podio::Invoice < ActivePodio::Base
|
|
22
22
|
def find_by_contract(contract_id)
|
23
23
|
list Podio.connection.get("/invoice/contract/#{contract_id}/").body
|
24
24
|
end
|
25
|
+
|
26
|
+
def invoice_contract(contract_id, attributes)
|
27
|
+
response = Podio.connection.post do |req|
|
28
|
+
req.url "/invoice/contract/#{contract_id}/invoice"
|
29
|
+
req.body = attributes
|
30
|
+
end
|
31
|
+
|
32
|
+
if response.status == 200
|
33
|
+
member response.body
|
34
|
+
else
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
end
|
25
38
|
|
26
39
|
def pay(invoice_id)
|
27
40
|
Podio.connection.post("/invoice/#{invoice_id}/pay").status
|
data/lib/podio/models/item.rb
CHANGED
@@ -16,7 +16,6 @@ class Podio::Item < ActivePodio::Base
|
|
16
16
|
|
17
17
|
has_one :created_by, :class => 'ByLine'
|
18
18
|
has_one :created_via, :class => 'Via'
|
19
|
-
has_one :date_election, :class => 'DateElection'
|
20
19
|
|
21
20
|
# Also included in the full Get item
|
22
21
|
property :ratings, :hash
|
@@ -25,6 +24,7 @@ class Podio::Item < ActivePodio::Base
|
|
25
24
|
property :references, :array
|
26
25
|
property :refs, :array
|
27
26
|
property :tags, :array
|
27
|
+
property :votes, :hash
|
28
28
|
property :subscribed, :boolean
|
29
29
|
property :pinned, :boolean
|
30
30
|
property :user_ratings, :hash
|
@@ -49,10 +49,12 @@ class Podio::Item < ActivePodio::Base
|
|
49
49
|
has_many :files, :class => 'FileAttachment'
|
50
50
|
has_many :comments, :class => 'Comment'
|
51
51
|
has_many :shares, :class => 'AppStoreShare'
|
52
|
+
has_one :current_revision, :class => 'ItemRevision'
|
52
53
|
has_one :reminder, :class => 'Reminder'
|
53
54
|
has_one :recurrence, :class => 'Recurrence'
|
54
55
|
has_one :linked_account_data, :class => 'LinkedAccountData'
|
55
56
|
has_one :application, :class => 'Application', :property => :app
|
57
|
+
has_one :grant, :class => 'Grant'
|
56
58
|
|
57
59
|
# For inserting/updating
|
58
60
|
property :file_ids, :array
|
@@ -88,8 +90,10 @@ class Podio::Item < ActivePodio::Base
|
|
88
90
|
|
89
91
|
class << self
|
90
92
|
# @see https://developers.podio.com/doc/items/get-item-22360
|
91
|
-
def find(id)
|
92
|
-
member Podio.connection.get
|
93
|
+
def find(id, options = {})
|
94
|
+
member Podio.connection.get { |req|
|
95
|
+
req.url("/item/#{id}", options)
|
96
|
+
}.body
|
93
97
|
end
|
94
98
|
|
95
99
|
def find_by_app_item_id(app_id, app_item_id)
|
@@ -127,18 +131,18 @@ class Podio::Item < ActivePodio::Base
|
|
127
131
|
end
|
128
132
|
|
129
133
|
# @see https://developers.podio.com/doc/items/filter-items-by-view-4540284
|
130
|
-
def find_by_filter_id(app_id, filter_id, attributes)
|
134
|
+
def find_by_filter_id(app_id, filter_id, attributes, options={})
|
131
135
|
collection Podio.connection.post { |req|
|
132
|
-
req.url
|
136
|
+
req.url("/item/app/#{app_id}/filter/#{filter_id}/", options)
|
133
137
|
req.body = attributes
|
134
138
|
}.body
|
135
139
|
end
|
136
140
|
|
137
141
|
# @see https://developers.podio.com/doc/items/filter-items-4496747
|
138
|
-
def find_by_filter_values(app_id, filter_values, attributes={})
|
142
|
+
def find_by_filter_values(app_id, filter_values, attributes={}, options={})
|
139
143
|
attributes[:filters] = filter_values
|
140
144
|
collection Podio.connection.post { |req|
|
141
|
-
req.url
|
145
|
+
req.url("/item/app/#{app_id}/filter/", options)
|
142
146
|
req.body = attributes
|
143
147
|
}.body
|
144
148
|
end
|
@@ -182,6 +186,11 @@ class Podio::Item < ActivePodio::Base
|
|
182
186
|
}.body
|
183
187
|
end
|
184
188
|
|
189
|
+
# @see https://developers.podio.com/doc/items/get-item-count-34819997
|
190
|
+
def item_count(app_id)
|
191
|
+
Podio.connection.get("/item/app/#{app_id}/count/").body
|
192
|
+
end
|
193
|
+
|
185
194
|
# @see https://developers.podio.com/doc/items/get-items-as-xlsx-63233
|
186
195
|
def xlsx(app_id, options={})
|
187
196
|
response = Podio.connection.get { |req|
|
@@ -235,8 +244,12 @@ class Podio::Item < ActivePodio::Base
|
|
235
244
|
end
|
236
245
|
|
237
246
|
# @see https://developers.podio.com/doc/items/delete-item-22364
|
238
|
-
def delete(id)
|
239
|
-
Podio.connection.delete
|
247
|
+
def delete(id, options={})
|
248
|
+
response = Podio.connection.delete do |req|
|
249
|
+
req.url("/item/#{id}", options)
|
250
|
+
end
|
251
|
+
|
252
|
+
response.body
|
240
253
|
end
|
241
254
|
|
242
255
|
# @see https://developers.podio.com/doc/items/delete-item-reference-7302326
|
@@ -266,9 +279,9 @@ class Podio::Item < ActivePodio::Base
|
|
266
279
|
Podio.connection.post("/item/app/#{app_id}/cleanup_field_values").body
|
267
280
|
end
|
268
281
|
|
269
|
-
def rearrange(id, attributes)
|
282
|
+
def rearrange(id, attributes, options = {})
|
270
283
|
response = Podio.connection.post do |req|
|
271
|
-
req.url
|
284
|
+
req.url("/item/#{id}/rearrange", options)
|
272
285
|
req.body = attributes
|
273
286
|
end
|
274
287
|
|
@@ -10,6 +10,12 @@ class Podio::ItemField < ActivePodio::Base
|
|
10
10
|
alias_method :id, :field_id
|
11
11
|
|
12
12
|
class << self
|
13
|
+
|
14
|
+
# @see https://developers.podio.com/doc/items/get-item-field-values-22368
|
15
|
+
def find_values(item_id, field_id)
|
16
|
+
Podio.connection.get("/item/#{item_id}/value/#{field_id}").body
|
17
|
+
end
|
18
|
+
|
13
19
|
# @see https://developers.podio.com/doc/items/update-item-field-values-22367
|
14
20
|
def update(item_id, field_id, values, options = {})
|
15
21
|
response = Podio.connection.put do |req|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class Podio::ItemTransaction < ActivePodio::Base
|
2
|
+
property :item_transaction_id, :integer
|
3
|
+
property :state, :string
|
4
|
+
property :reason, :string
|
5
|
+
property :amount, :integer
|
6
|
+
|
7
|
+
property :text, :string
|
8
|
+
|
9
|
+
property :created_on, :datetime
|
10
|
+
|
11
|
+
property :ratings, :hash
|
12
|
+
property :created_on, :datetime
|
13
|
+
property :rights, :array
|
14
|
+
property :is_liked, :boolean
|
15
|
+
property :like_count, :integer
|
16
|
+
|
17
|
+
has_one :created_by, :class => 'ByLine'
|
18
|
+
has_one :created_via, :class => 'Via'
|
19
|
+
|
20
|
+
has_many :comments, :class => 'Comment'
|
21
|
+
has_many :tasks, :class => 'Task'
|
22
|
+
|
23
|
+
alias_method :id, :item_transaction_id
|
24
|
+
|
25
|
+
class << self
|
26
|
+
|
27
|
+
def find(id)
|
28
|
+
member Podio.connection.get { |req|
|
29
|
+
req.url("/item_accounting/transaction/#{id}")
|
30
|
+
}.body
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|