podio 0.6.0 → 0.7.0
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/.travis.yml +4 -0
- data/LICENSE +1 -1
- data/lib/podio.rb +7 -3
- data/lib/podio/active_podio/base.rb +121 -54
- data/lib/podio/client.rb +15 -2
- data/lib/podio/error.rb +1 -0
- data/lib/podio/middleware/error_response.rb +2 -0
- data/lib/podio/models/app_store_share.rb +8 -4
- data/lib/podio/models/application.rb +4 -0
- data/lib/podio/models/{calendar.rb → calendar_event.rb} +13 -1
- data/lib/podio/models/contact.rb +1 -0
- data/lib/podio/models/contract.rb +17 -1
- data/lib/podio/models/email_subscription_setting.rb +1 -0
- data/lib/podio/models/external_file.rb +30 -0
- data/lib/podio/models/file_attachment.rb +30 -12
- data/lib/podio/models/filter.rb +33 -2
- data/lib/podio/models/item.rb +23 -0
- data/lib/podio/models/item_field.rb +1 -1
- data/lib/podio/models/linked_account.rb +32 -0
- data/lib/podio/models/meeting.rb +55 -30
- data/lib/podio/models/meeting_participiant.rb +10 -4
- data/lib/podio/models/notification_group.rb +3 -4
- data/lib/podio/models/organization.rb +11 -9
- data/lib/podio/models/organization_member.rb +2 -1
- data/lib/podio/models/organization_profile.rb +1 -0
- data/lib/podio/models/question_answer.rb +3 -2
- data/lib/podio/models/referral.rb +25 -0
- data/lib/podio/models/reminder.rb +2 -2
- data/lib/podio/models/search.rb +34 -5
- data/lib/podio/models/space_invitation.rb +9 -4
- data/lib/podio/models/space_member.rb +8 -0
- data/lib/podio/models/subscription.rb +7 -3
- data/lib/podio/models/user_status.rb +2 -1
- data/lib/podio/models/widget.rb +2 -0
- data/lib/podio/version.rb +1 -1
- data/test/active_podio_test.rb +2 -2
- metadata +14 -11
data/lib/podio/client.rb
CHANGED
@@ -72,10 +72,23 @@ module Podio
|
|
72
72
|
@oauth_token
|
73
73
|
end
|
74
74
|
|
75
|
+
# Sign in with SSO
|
76
|
+
def authenticate_with_sso(attributes)
|
77
|
+
response = @oauth_connection.post do |req|
|
78
|
+
req.url '/oauth/token', :grant_type => 'sso', :client_id => api_key, :client_secret => api_secret
|
79
|
+
req.body = attributes
|
80
|
+
end
|
81
|
+
|
82
|
+
@oauth_token = OAuthToken.new(response.body)
|
83
|
+
configure_oauth
|
84
|
+
|
85
|
+
[@oauth_token, response['new_user_created']]
|
86
|
+
end
|
87
|
+
|
75
88
|
# Sign in with an OpenID, only available for Podio
|
76
|
-
def authenticate_with_openid(identifier)
|
89
|
+
def authenticate_with_openid(identifier, type)
|
77
90
|
response = @oauth_connection.post do |req|
|
78
|
-
req.url '/oauth/token_by_openid', :grant_type =>
|
91
|
+
req.url '/oauth/token_by_openid', :grant_type => type, :client_id => api_key, :client_secret => api_secret, :identifier => identifier
|
79
92
|
end
|
80
93
|
|
81
94
|
@oauth_token = OAuthToken.new(response.body)
|
data/lib/podio/error.rb
CHANGED
@@ -27,6 +27,8 @@ module Podio
|
|
27
27
|
raise ConflictError.new(env[:body], env[:status], env[:url])
|
28
28
|
when 410
|
29
29
|
raise GoneError.new(env[:body], env[:status], env[:url])
|
30
|
+
when 420
|
31
|
+
raise RateLimitError.new(env[:body], env[:status], env[:url])
|
30
32
|
when 500
|
31
33
|
raise ServerError.new(env[:body], env[:status], env[:url])
|
32
34
|
when 502, 503
|
@@ -21,11 +21,11 @@ class Podio::AppStoreShare < ActivePodio::Base
|
|
21
21
|
property :ratings, :hash
|
22
22
|
property :user_rating, :array
|
23
23
|
property :screenshots, :array
|
24
|
-
property :
|
25
|
-
|
24
|
+
property :video, :string
|
25
|
+
|
26
26
|
has_many :children, :class => 'AppStoreShare'
|
27
27
|
has_one :author, :class => 'ByLine'
|
28
|
-
|
28
|
+
|
29
29
|
alias_method :id, :share_id
|
30
30
|
|
31
31
|
def create
|
@@ -37,7 +37,11 @@ class Podio::AppStoreShare < ActivePodio::Base
|
|
37
37
|
end
|
38
38
|
|
39
39
|
handle_api_errors_for :create, :install # Call must be made after the methods to handle have been defined
|
40
|
-
|
40
|
+
|
41
|
+
def api_friendly_ref_type
|
42
|
+
'share'
|
43
|
+
end
|
44
|
+
|
41
45
|
class << self
|
42
46
|
def create(attributes)
|
43
47
|
response = Podio.connection.post do |req|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Podio::
|
1
|
+
class Podio::CalendarEvent < ActivePodio::Base
|
2
2
|
property :type, :string
|
3
3
|
property :id, :integer
|
4
4
|
property :group, :string
|
@@ -13,6 +13,18 @@ class Podio::Calendar < ActivePodio::Base
|
|
13
13
|
|
14
14
|
class << self
|
15
15
|
|
16
|
+
def find_all(options = {})
|
17
|
+
list Podio.connection.get { |req|
|
18
|
+
req.url('/calendar/', options)
|
19
|
+
}.body
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_all_for_space(space_id, options={})
|
23
|
+
list Podio.connection.get { |req|
|
24
|
+
req.url("/calendar/space/#{space_id}/", options)
|
25
|
+
}.body
|
26
|
+
end
|
27
|
+
|
16
28
|
def find_summary
|
17
29
|
response = Podio.connection.get("/calendar/summary").body
|
18
30
|
response['today']['events'] = list(response['today']['events'])
|
data/lib/podio/models/contact.rb
CHANGED
@@ -8,6 +8,7 @@ class Podio::Contact < Podio::Profile
|
|
8
8
|
property :type, :string # user, space, connection - blank probably means it's a real user / Podio member
|
9
9
|
property :link, :string
|
10
10
|
property :last_seen_on, :datetime
|
11
|
+
property :rights, :array
|
11
12
|
|
12
13
|
alias_method :id, :user_id
|
13
14
|
|
@@ -19,6 +19,8 @@ class Podio::Contract < ActivePodio::Base
|
|
19
19
|
property :next_period_end, :datetime, :convert_timezone => false
|
20
20
|
property :invoice_interval, :integer
|
21
21
|
property :invoicing_mode, :string
|
22
|
+
property :ended_reason, :string
|
23
|
+
property :ended_comment, :string
|
22
24
|
|
23
25
|
has_one :org, :class => 'Organization'
|
24
26
|
has_one :user, :class => 'User'
|
@@ -37,6 +39,7 @@ class Podio::Contract < ActivePodio::Base
|
|
37
39
|
|
38
40
|
def calculate_price
|
39
41
|
pricing = self.class.calculate_price(self.contract_id, self.attributes.slice(:full, :premium_emp_network, :premium_space_ids))
|
42
|
+
self.clear_price
|
40
43
|
self["price"] = pricing
|
41
44
|
end
|
42
45
|
|
@@ -48,7 +51,11 @@ class Podio::Contract < ActivePodio::Base
|
|
48
51
|
self.class.delete(self.id)
|
49
52
|
end
|
50
53
|
|
51
|
-
|
54
|
+
def end(attributes)
|
55
|
+
self.class.end(self.id, attributes)
|
56
|
+
end
|
57
|
+
|
58
|
+
handle_api_errors_for :update, :delete, :create_payment, :end # Call must be made after the methods to handle have been defined
|
52
59
|
|
53
60
|
class << self
|
54
61
|
def find(contract_id)
|
@@ -88,6 +95,15 @@ class Podio::Contract < ActivePodio::Base
|
|
88
95
|
Podio.connection.post("/contract/#{contract_id}/start").body
|
89
96
|
end
|
90
97
|
|
98
|
+
def end(contract_id, attributes)
|
99
|
+
response = Podio.connection.post do |req|
|
100
|
+
req.url "/contract/#{contract_id}/end"
|
101
|
+
req.body = attributes
|
102
|
+
end
|
103
|
+
|
104
|
+
response.body
|
105
|
+
end
|
106
|
+
|
91
107
|
def delete(id)
|
92
108
|
Podio.connection.delete("/contract/#{id}").body
|
93
109
|
end
|
@@ -5,6 +5,7 @@ class Podio::EmailSubscriptionSetting < ActivePodio::Base
|
|
5
5
|
property :bulletin, :boolean
|
6
6
|
property :reference, :boolean
|
7
7
|
property :message, :boolean
|
8
|
+
property :reminder, :boolean
|
8
9
|
property :space, :boolean
|
9
10
|
property :subscription, :boolean
|
10
11
|
property :push_notification, :boolean
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Podio::ExternalFile < ActivePodio::Base
|
2
|
+
property :external_file_id, :string
|
3
|
+
property :name, :string
|
4
|
+
property :mimetype, :string
|
5
|
+
|
6
|
+
property :created_on, :datetime
|
7
|
+
property :updated_on, :datetime
|
8
|
+
|
9
|
+
alias_method :id, :external_file_id
|
10
|
+
|
11
|
+
|
12
|
+
class << self
|
13
|
+
|
14
|
+
def find_all_for_linked_account(linked_account_id, options={})
|
15
|
+
list Podio.connection.get { |req|
|
16
|
+
req.url("/file/linked_account/#{linked_account_id}/", options)
|
17
|
+
}.body
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_from_external_file_id(linked_account_id, external_file_id)
|
21
|
+
response = Podio.client.connection.post do |req|
|
22
|
+
req.url "/file/linked_account/#{linked_account_id}/"
|
23
|
+
req.body = { :external_file_id => external_file_id }
|
24
|
+
end
|
25
|
+
|
26
|
+
member response.body
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -1,23 +1,35 @@
|
|
1
1
|
class Podio::FileAttachment < ActivePodio::Base
|
2
2
|
property :file_id, :integer
|
3
3
|
property :link, :string
|
4
|
+
property :perma_link, :string
|
5
|
+
property :thumbnail_link, :string
|
6
|
+
property :hosted_by, :string
|
4
7
|
property :name, :string
|
5
8
|
property :description, :string
|
6
9
|
property :mimetype, :string
|
7
10
|
property :size, :integer
|
8
11
|
property :context, :hash
|
9
12
|
property :created_on, :datetime
|
10
|
-
|
13
|
+
property :rights, :array
|
14
|
+
|
11
15
|
has_one :created_by, :class => 'ByLine'
|
12
16
|
has_one :created_via, :class => 'Via'
|
13
17
|
has_many :replaces, :class => 'FileAttachment'
|
14
|
-
|
18
|
+
|
15
19
|
alias_method :id, :file_id
|
16
20
|
|
21
|
+
def has_thumbnail?
|
22
|
+
self.thumbnail_link.present?
|
23
|
+
end
|
24
|
+
|
17
25
|
def image?
|
18
26
|
['image/png', 'image/jpeg', 'image/gif', 'image/bmp'].include?(self.mimetype)
|
19
27
|
end
|
20
|
-
|
28
|
+
|
29
|
+
def api_friendly_ref_type
|
30
|
+
'file'
|
31
|
+
end
|
32
|
+
|
21
33
|
class << self
|
22
34
|
# Accepts an open file stream along with a file name and uploads the file to Podio
|
23
35
|
def upload(file_stream, file_name)
|
@@ -50,11 +62,11 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
50
62
|
def copy(id)
|
51
63
|
Podio.connection.post("/file/#{id}/copy").body['file_id']
|
52
64
|
end
|
53
|
-
|
65
|
+
|
54
66
|
def delete(id)
|
55
67
|
Podio.connection.delete("/file/#{id}")
|
56
68
|
end
|
57
|
-
|
69
|
+
|
58
70
|
def find(id)
|
59
71
|
member Podio.connection.get("/file/#{id}").body
|
60
72
|
end
|
@@ -86,7 +98,13 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
86
98
|
req.url("/file/space/#{space_id}/latest/", options)
|
87
99
|
}.body
|
88
100
|
end
|
89
|
-
|
101
|
+
|
102
|
+
def find_for_google(linked_account_id, options={})
|
103
|
+
list Podio.connection.get { |req|
|
104
|
+
req.url("/file/google/#{linked_account_id}/", options)
|
105
|
+
}.body
|
106
|
+
end
|
107
|
+
|
90
108
|
def replace(old_file_id, new_file_id)
|
91
109
|
Podio.connection.post { |req|
|
92
110
|
req.url "/file/#{new_file_id}/replace"
|
@@ -100,12 +118,12 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
100
118
|
req.body = { :description => description }
|
101
119
|
}.body
|
102
120
|
end
|
103
|
-
|
104
|
-
|
121
|
+
|
122
|
+
|
105
123
|
#
|
106
124
|
# Obsolete way of uploading files, use upload method instead
|
107
125
|
#
|
108
|
-
|
126
|
+
|
109
127
|
# Uploading a file is a two-step operation
|
110
128
|
# First, the file must be created to get a file id and the path to move it to
|
111
129
|
def create(name, content_type)
|
@@ -116,11 +134,11 @@ class Podio::FileAttachment < ActivePodio::Base
|
|
116
134
|
|
117
135
|
response.body
|
118
136
|
end
|
119
|
-
|
137
|
+
|
120
138
|
# Then, when the file has been moved, it must be marked as available
|
121
139
|
def set_available(id)
|
122
140
|
Podio.connection.post "/file/#{id}/available"
|
123
141
|
end
|
124
|
-
|
142
|
+
|
125
143
|
end
|
126
|
-
end
|
144
|
+
end
|
data/lib/podio/models/filter.rb
CHANGED
@@ -1,11 +1,42 @@
|
|
1
1
|
class Podio::Filter < ActivePodio::Base
|
2
|
+
property :filter_id, :integer
|
3
|
+
property :name, :string
|
4
|
+
property :created_on, :datetime
|
5
|
+
property :items, :integer
|
2
6
|
property :sort_by, :string
|
3
|
-
property :sort_desc, :
|
4
|
-
property :filters, :
|
7
|
+
property :sort_desc, :string
|
8
|
+
property :filters, :hash
|
9
|
+
|
10
|
+
alias_method :id, :filter_id
|
11
|
+
|
12
|
+
has_one :created_by, :class => 'User'
|
5
13
|
|
6
14
|
class << self
|
7
15
|
def find_last(app_id)
|
8
16
|
member Podio.connection.get("/filter/app/#{app_id}/last").body
|
9
17
|
end
|
18
|
+
|
19
|
+
def find_all(app_id)
|
20
|
+
list Podio.connection.get { |req|
|
21
|
+
req.url("/filter/app/#{app_id}/")
|
22
|
+
}.body
|
23
|
+
end
|
24
|
+
|
25
|
+
def find(id)
|
26
|
+
member Podio.connection.get("/filter/#{id}").body
|
27
|
+
end
|
28
|
+
|
29
|
+
def delete(filter_id)
|
30
|
+
Podio.connection.delete("/filter/#{filter_id}").status
|
31
|
+
end
|
32
|
+
|
33
|
+
def create(app_id, attributes)
|
34
|
+
response = Podio.connection.post do |req|
|
35
|
+
req.url "/filter/app/#{app_id}/"
|
36
|
+
req.body = attributes
|
37
|
+
end
|
38
|
+
|
39
|
+
response.body['filter_id']
|
40
|
+
end
|
10
41
|
end
|
11
42
|
end
|
data/lib/podio/models/item.rb
CHANGED
@@ -22,6 +22,7 @@ class Podio::Item < ActivePodio::Base
|
|
22
22
|
property :subscribed, :boolean
|
23
23
|
property :user_ratings, :hash
|
24
24
|
property :link, :string
|
25
|
+
property :invite, :hash
|
25
26
|
|
26
27
|
has_many :revisions, :class => 'ItemRevision'
|
27
28
|
has_many :files, :class => 'FileAttachment'
|
@@ -79,6 +80,21 @@ class Podio::Item < ActivePodio::Base
|
|
79
80
|
req.url("/item/app/#{app_id}/", options)
|
80
81
|
}.body
|
81
82
|
end
|
83
|
+
|
84
|
+
def find_by_filter_id(app_id, filter_id, attributes)
|
85
|
+
collection Podio.connection.post { |req|
|
86
|
+
req.url "/item/app/#{app_id}/filter/#{filter_id}/"
|
87
|
+
req.body = attributes
|
88
|
+
}.body
|
89
|
+
end
|
90
|
+
|
91
|
+
def find_by_filter_values(app_id, filter_values, attributes={})
|
92
|
+
attributes[:filters] = filter_values
|
93
|
+
collection Podio.connection.post { |req|
|
94
|
+
req.url "/item/app/#{app_id}/filter/"
|
95
|
+
req.body = attributes
|
96
|
+
}.body
|
97
|
+
end
|
82
98
|
|
83
99
|
def find_next(current_item_id, time = nil)
|
84
100
|
find_next_or_previous(:next, current_item_id, time)
|
@@ -87,6 +103,13 @@ class Podio::Item < ActivePodio::Base
|
|
87
103
|
def find_previous(current_item_id, time = nil)
|
88
104
|
find_next_or_previous(:previous, current_item_id, time)
|
89
105
|
end
|
106
|
+
|
107
|
+
def find_app_values(app_id)
|
108
|
+
response = Podio.connection.get { |req|
|
109
|
+
req.url("/item/app/#{app_id}/values")
|
110
|
+
}
|
111
|
+
response.body
|
112
|
+
end
|
90
113
|
|
91
114
|
def find_field_top(field_id, options={:limit => 8})
|
92
115
|
list Podio.connection.get { |req|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class Podio::LinkedAccount < ActivePodio::Base
|
2
|
+
property :linked_account_id, :integer
|
3
|
+
property :label, :string
|
4
|
+
property :provider, :string
|
5
|
+
|
6
|
+
alias_method :id, :linked_account_id
|
7
|
+
|
8
|
+
class << self
|
9
|
+
|
10
|
+
def find_all(provider, capability = nil)
|
11
|
+
options = { :provider => provider }
|
12
|
+
options[:capability] = capability if capability.present?
|
13
|
+
list Podio.connection.get { |req|
|
14
|
+
req.url("/linked_account/", options)
|
15
|
+
}.body
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(attributes)
|
19
|
+
response = Podio.connection.post do |req|
|
20
|
+
req.url '/linked_account/'
|
21
|
+
req.body = attributes
|
22
|
+
end
|
23
|
+
|
24
|
+
member response.body
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id)
|
28
|
+
Podio.connection.delete("/linked_account/#{id}").status
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/podio/models/meeting.rb
CHANGED
@@ -2,16 +2,19 @@ class Podio::Meeting < ActivePodio::Base
|
|
2
2
|
include ActivePodio::Updatable, HasReference
|
3
3
|
|
4
4
|
property :meeting_id, :integer
|
5
|
+
property :rights, :array
|
5
6
|
property :title, :string
|
7
|
+
property :start_date, :date
|
6
8
|
property :starts_on, :datetime, :convert_incoming_local_datetime_to_utc => true
|
7
9
|
property :ends_on, :datetime, :convert_incoming_local_datetime_to_utc => true
|
8
10
|
property :participant_ids, :array
|
9
|
-
property :
|
10
|
-
property :
|
11
|
+
property :plugin, :string
|
12
|
+
property :plugin_data, :hash
|
11
13
|
property :location, :string
|
12
14
|
property :agenda, :string
|
13
15
|
property :notes, :string
|
14
|
-
property :
|
16
|
+
property :subscribed, :bool
|
17
|
+
property :liked, :integer
|
15
18
|
property :external_id, :string
|
16
19
|
property :external_url, :string
|
17
20
|
property :external_phone, :string
|
@@ -22,7 +25,7 @@ class Podio::Meeting < ActivePodio::Base
|
|
22
25
|
property :link, :string
|
23
26
|
property :ref, :hash
|
24
27
|
property :space_id, :integer
|
25
|
-
|
28
|
+
|
26
29
|
# For creation only
|
27
30
|
property :ref_id, :integer
|
28
31
|
property :ref_type, :string
|
@@ -30,14 +33,14 @@ class Podio::Meeting < ActivePodio::Base
|
|
30
33
|
|
31
34
|
has_one :created_by, :class => 'User'
|
32
35
|
has_one :created_via, :class => 'Via'
|
33
|
-
has_one :deleted_by, :class => 'User'
|
34
|
-
has_one :deleted_via, :class => 'Via'
|
35
36
|
has_many :participants, :class => 'MeetingParticipant'
|
36
37
|
has_many :files, :class => 'FileAttachment'
|
37
38
|
has_many :comments, :class => 'Comment'
|
39
|
+
has_one :reminder, :class => 'Reminder'
|
40
|
+
has_one :recurrence, :class => 'Recurrence'
|
38
41
|
|
39
42
|
alias_method :id, :meeting_id
|
40
|
-
|
43
|
+
|
41
44
|
def create
|
42
45
|
compacted_attributes = remove_nil_values(self.attributes)
|
43
46
|
created_model = if(self.ref_type.present? && self.ref_id.present?)
|
@@ -45,29 +48,23 @@ class Podio::Meeting < ActivePodio::Base
|
|
45
48
|
else
|
46
49
|
self.class.create(compacted_attributes)
|
47
50
|
end
|
48
|
-
|
51
|
+
|
49
52
|
self.attributes = created_model.attributes
|
50
53
|
end
|
51
54
|
|
52
55
|
def update
|
53
|
-
compacted_attributes = remove_nil_values(self.attributes)
|
54
|
-
updated_model = self.class.update(self.id, compacted_attributes)
|
56
|
+
# compacted_attributes = remove_nil_values(self.attributes)
|
57
|
+
# updated_model = self.class.update(self.id, compacted_attributes)
|
58
|
+
# self.attributes = updated_model.attributes
|
59
|
+
updated_model = self.class.update(self.id, self.attributes)
|
55
60
|
self.attributes = updated_model.attributes
|
56
61
|
end
|
57
|
-
|
62
|
+
|
58
63
|
def destroy
|
59
64
|
self.class.delete(self.id)
|
60
65
|
end
|
61
66
|
|
62
|
-
|
63
|
-
self.class.start(self.id)
|
64
|
-
end
|
65
|
-
|
66
|
-
def stop
|
67
|
-
self.class.stop(self.id)
|
68
|
-
end
|
69
|
-
|
70
|
-
handle_api_errors_for :create, :destroy, :start, :stop # Call must be made after the methods to handle have been defined
|
67
|
+
handle_api_errors_for :create, :destroy # Call must be made after the methods to handle have been defined
|
71
68
|
|
72
69
|
class << self
|
73
70
|
def create(attributes)
|
@@ -101,20 +98,14 @@ class Podio::Meeting < ActivePodio::Base
|
|
101
98
|
Podio.connection.delete("/meeting/#{id}").status
|
102
99
|
end
|
103
100
|
|
104
|
-
def start(id)
|
105
|
-
Podio.connection.post("/meeting/#{id}/start").body
|
106
|
-
end
|
107
|
-
|
108
|
-
def stop(id)
|
109
|
-
Podio.connection.post("/meeting/#{id}/stop").body
|
110
|
-
end
|
111
|
-
|
112
101
|
def find(id)
|
113
102
|
member Podio.connection.get("/meeting/#{id}").body
|
114
103
|
end
|
115
104
|
|
116
|
-
def find_for_reference(ref_type, ref_id)
|
117
|
-
list Podio.connection.get
|
105
|
+
def find_for_reference(ref_type, ref_id, options={})
|
106
|
+
list Podio.connection.get { |req|
|
107
|
+
req.url("/meeting/#{ref_type}/#{ref_id}/", options)
|
108
|
+
}.body
|
118
109
|
end
|
119
110
|
|
120
111
|
def find_all(options={})
|
@@ -122,5 +113,39 @@ class Podio::Meeting < ActivePodio::Base
|
|
122
113
|
req.url('/meeting/', options)
|
123
114
|
}.body
|
124
115
|
end
|
116
|
+
|
117
|
+
def find_summary
|
118
|
+
response = Podio.connection.get("/meeting/summary").body
|
119
|
+
response['past']['tasks'] = list(response['past']['meetings'])
|
120
|
+
response['today']['tasks'] = list(response['today']['meetings'])
|
121
|
+
response['future']['tasks'] = list(response['future']['meetings'])
|
122
|
+
response
|
123
|
+
end
|
124
|
+
|
125
|
+
def find_summary_for_reference(ref_type, ref_id)
|
126
|
+
response = Podio.connection.get("/meeting/#{ref_type}/#{ref_id}/summary").body
|
127
|
+
response['past']['tasks'] = list(response['past']['meetings'])
|
128
|
+
response['today']['tasks'] = list(response['today']['meetings'])
|
129
|
+
response['future']['tasks'] = list(response['future']['meetings'])
|
130
|
+
response
|
131
|
+
end
|
132
|
+
|
133
|
+
def find_personal_summary
|
134
|
+
response = Podio.connection.get("/meeting/personal/summary").body
|
135
|
+
response['past']['tasks'] = list(response['past']['meetings'])
|
136
|
+
response['today']['tasks'] = list(response['today']['meetings'])
|
137
|
+
response['future']['tasks'] = list(response['future']['meetings'])
|
138
|
+
response
|
139
|
+
end
|
140
|
+
|
141
|
+
def set_participation_status(id, status)
|
142
|
+
response = Podio.connection.post do |req|
|
143
|
+
req.url "/meeting/#{id}/status"
|
144
|
+
req.body = { :status => status }
|
145
|
+
end
|
146
|
+
|
147
|
+
response.status
|
148
|
+
end
|
149
|
+
|
125
150
|
end
|
126
151
|
end
|