podio 0.7.0 → 0.8.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/Rakefile +0 -16
- data/lib/podio.rb +6 -3
- data/lib/podio/active_podio/base.rb +53 -21
- data/lib/podio/active_podio/updatable.rb +9 -14
- data/lib/podio/client.rb +46 -17
- data/lib/podio/error.rb +9 -0
- data/lib/podio/middleware/error_response.rb +5 -1
- data/lib/podio/middleware/json_request.rb +27 -5
- data/lib/podio/models/account_provider.rb +16 -0
- data/lib/podio/models/app_store_category.rb +25 -0
- data/lib/podio/models/app_store_share.rb +90 -11
- data/lib/podio/models/application.rb +52 -12
- data/lib/podio/models/application_field.rb +4 -4
- data/lib/podio/models/batch.rb +31 -0
- data/lib/podio/models/calendar_event.rb +64 -10
- data/lib/podio/models/category.rb +11 -9
- data/lib/podio/models/contact.rb +3 -1
- data/lib/podio/models/contract.rb +3 -0
- data/lib/podio/models/email_subscription_setting.rb +26 -3
- data/lib/podio/models/file_attachment.rb +3 -2
- data/lib/podio/models/form.rb +2 -2
- data/lib/podio/models/importer.rb +18 -9
- data/lib/podio/models/item.rb +87 -22
- data/lib/podio/models/item_field.rb +8 -3
- data/lib/podio/models/linked_account.rb +11 -3
- data/lib/podio/models/linked_account_data.rb +6 -0
- data/lib/podio/models/news.rb +1 -0
- data/lib/podio/models/organization.rb +4 -0
- data/lib/podio/models/organization_member.rb +17 -4
- data/lib/podio/models/organization_profile.rb +5 -1
- data/lib/podio/models/profile.rb +19 -10
- data/lib/podio/models/reference.rb +33 -0
- data/lib/podio/models/search.rb +4 -7
- data/lib/podio/models/space.rb +21 -12
- data/lib/podio/models/space_invitation.rb +7 -7
- data/lib/podio/models/space_member.rb +28 -3
- data/lib/podio/models/task.rb +38 -14
- data/lib/podio/models/user.rb +27 -5
- data/lib/podio/models/user_status.rb +5 -0
- data/lib/podio/models/view.rb +51 -0
- data/lib/podio/models/widget.rb +1 -1
- data/lib/podio/version.rb +1 -1
- data/test/client_test.rb +13 -3
- data/test/fixtures/fixtures.yaml +7 -7
- data/test/test_helper.rb +1 -24
- metadata +16 -23
- data/lib/podio/middleware/response_recorder.rb +0 -14
- data/lib/podio/models/meeting.rb +0 -151
- data/lib/podio/models/meeting_participiant.rb +0 -11
- data/test/fixtures/client/18a224aaf83ac57a7b8159cecdbb1263.rack +0 -1
- data/test/fixtures/client/a87c69a0624af0413a670094c6615651.rack +0 -1
- data/test/fixtures/client/ac493997db62308972c208afa76f8479.rack +0 -1
- data/test/fixtures/client/d7fbf422c77af768552423633d0389e8.rack +0 -1
- data/test/fixtures/client/e2d68afe39f5531195273ea259b63916.rack +0 -1
data/lib/podio/models/news.rb
CHANGED
@@ -3,13 +3,14 @@ class Podio::OrganizationMember < ActivePodio::Base
|
|
3
3
|
property :profile, :hash
|
4
4
|
property :admin, :boolean
|
5
5
|
property :employee, :boolean
|
6
|
+
property :space_memberships, :integer
|
6
7
|
|
7
8
|
has_one :user, :class => 'User'
|
8
9
|
has_one :contact, :class => 'Contact', :property => :profile
|
9
10
|
|
10
11
|
delegate :user_id, :mail, :to => :user
|
11
12
|
delegate :name, :avatar, :link, :title, :organization, :title_and_org, :default_title, :avatar_url, :last_seen_on, :to => :contact
|
12
|
-
|
13
|
+
|
13
14
|
class << self
|
14
15
|
def find_all_for_org(org_id, options = {})
|
15
16
|
list Podio.connection.get { |req|
|
@@ -17,14 +18,26 @@ class Podio::OrganizationMember < ActivePodio::Base
|
|
17
18
|
}.body
|
18
19
|
end
|
19
20
|
|
21
|
+
def search(org_id, query, options = {})
|
22
|
+
options[:query] = query
|
23
|
+
list Podio.connection.get { |req|
|
24
|
+
req.url("/org/#{org_id}/member/search/", options)
|
25
|
+
}.body
|
26
|
+
end
|
27
|
+
|
20
28
|
def find(org_id, user_id)
|
21
29
|
member Podio.connection.get("/org/#{org_id}/member/#{user_id}").body
|
22
30
|
end
|
23
|
-
|
31
|
+
|
32
|
+
|
24
33
|
def delete(org_id, user_id)
|
25
34
|
Podio.connection.delete("/org/#{org_id}/member/#{user_id}").status
|
26
35
|
end
|
27
|
-
|
36
|
+
|
37
|
+
def delete_info(org_id, user_id)
|
38
|
+
Podio.connection.get("/org/#{org_id}/member/#{user_id}/end_member_info").body
|
39
|
+
end
|
40
|
+
|
28
41
|
def make_admin(org_id, user_id)
|
29
42
|
response = Podio.connection.post do |req|
|
30
43
|
req.url "/org/#{org_id}/admin/"
|
@@ -36,6 +49,6 @@ class Podio::OrganizationMember < ActivePodio::Base
|
|
36
49
|
def remove_admin(org_id, user_id)
|
37
50
|
Podio.connection.delete("/org/#{org_id}/admin/#{user_id}").status
|
38
51
|
end
|
39
|
-
|
52
|
+
|
40
53
|
end
|
41
54
|
end
|
@@ -30,13 +30,17 @@ class Podio::OrganizationProfile < ActivePodio::Base
|
|
30
30
|
self.class.delete(self.org_id)
|
31
31
|
end
|
32
32
|
|
33
|
-
handle_api_errors_for :create, :update # Call must be made after the methods to handle have been defined
|
33
|
+
handle_api_errors_for :create, :update # Call must be made after the methods to handle have been defined
|
34
34
|
|
35
35
|
class << self
|
36
36
|
def find(org_id)
|
37
37
|
member Podio.connection.get("/org/#{org_id}/appstore").body
|
38
38
|
end
|
39
39
|
|
40
|
+
def find_by_url(url_label)
|
41
|
+
member Podio.connection.get("/app_store/org/#{url_label}/profile").body
|
42
|
+
end
|
43
|
+
|
40
44
|
def create(org_id, attributes)
|
41
45
|
response = Podio.connection.post do |req|
|
42
46
|
req.url "/org/#{org_id}/appstore"
|
data/lib/podio/models/profile.rb
CHANGED
@@ -23,7 +23,7 @@ class Podio::Profile < ActivePodio::Base
|
|
23
23
|
property :skill, :array
|
24
24
|
property :linkedin, :string
|
25
25
|
property :twitter, :string
|
26
|
-
|
26
|
+
|
27
27
|
property :app_store_about, :string
|
28
28
|
property :app_store_organization, :string
|
29
29
|
property :app_store_location, :string
|
@@ -32,7 +32,7 @@ class Podio::Profile < ActivePodio::Base
|
|
32
32
|
|
33
33
|
property :last_seen_on, :datetime
|
34
34
|
property :is_employee, :boolean
|
35
|
-
|
35
|
+
|
36
36
|
alias_method :employee?, :is_employee
|
37
37
|
|
38
38
|
class << self
|
@@ -68,8 +68,11 @@ class Podio::Profile < ActivePodio::Base
|
|
68
68
|
}.body
|
69
69
|
end
|
70
70
|
|
71
|
-
def find(profile_id)
|
72
|
-
result = Podio.connection.get
|
71
|
+
def find(profile_id, options = {})
|
72
|
+
result = Podio.connection.get do |req|
|
73
|
+
req.url("/contact/#{profile_id}/v2", options)
|
74
|
+
end.body
|
75
|
+
|
73
76
|
if result.is_a?(Array)
|
74
77
|
return list result
|
75
78
|
else
|
@@ -100,7 +103,7 @@ class Podio::Profile < ActivePodio::Base
|
|
100
103
|
|
101
104
|
list Podio.connection.get { |req|
|
102
105
|
req.url("/contact/connection/#{connection_id}", options)
|
103
|
-
}.body
|
106
|
+
}.body
|
104
107
|
end
|
105
108
|
|
106
109
|
def find_all_for_connection_type(connection_type, options={})
|
@@ -110,7 +113,13 @@ class Podio::Profile < ActivePodio::Base
|
|
110
113
|
req.url("/contact/connection/#{connection_type}", options)
|
111
114
|
}.body
|
112
115
|
end
|
113
|
-
|
116
|
+
|
117
|
+
def find_all_for_linked_account(id, options={})
|
118
|
+
list Podio.connection.get { |req|
|
119
|
+
req.url("/contact/linked_account/#{id}", options)
|
120
|
+
}.body
|
121
|
+
end
|
122
|
+
|
114
123
|
def find_for_org(org_id)
|
115
124
|
member Podio.connection.get("/org/#{org_id}/billing").body
|
116
125
|
end
|
@@ -138,12 +147,12 @@ class Podio::Profile < ActivePodio::Base
|
|
138
147
|
def skills(options)
|
139
148
|
Podio.connection.get { |req|
|
140
149
|
req.url("/contact/skill/", options)
|
141
|
-
}.body
|
150
|
+
}.body
|
142
151
|
end
|
143
152
|
|
144
153
|
def totals_by_space(space_id, options = {})
|
145
154
|
options[:exclude_self] = (options[:exclude_self] == false ? "0" : "1" )
|
146
|
-
|
155
|
+
|
147
156
|
Podio.connection.get { |req|
|
148
157
|
req.url("/contact/space/#{space_id}/totals/", options)
|
149
158
|
}.body
|
@@ -157,7 +166,7 @@ class Podio::Profile < ActivePodio::Base
|
|
157
166
|
|
158
167
|
response.body
|
159
168
|
end
|
160
|
-
|
169
|
+
|
161
170
|
def delete_contact(profile_id)
|
162
171
|
Podio.connection.delete("/contact/#{profile_id}").body
|
163
172
|
end
|
@@ -170,6 +179,6 @@ class Podio::Profile < ActivePodio::Base
|
|
170
179
|
|
171
180
|
response.body
|
172
181
|
end
|
173
|
-
|
182
|
+
|
174
183
|
end
|
175
184
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Podio::Reference < ActivePodio::Base
|
2
|
+
|
3
|
+
property :type, :string
|
4
|
+
property :id, :integer
|
5
|
+
property :title, :string
|
6
|
+
property :link, :string
|
7
|
+
property :data, :hash
|
8
|
+
property :created_on, :datetime
|
9
|
+
|
10
|
+
has_one :created_by, :class => 'ByLine'
|
11
|
+
has_one :created_via, :class => 'Via'
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def find(ref_type, ref_id, options = {})
|
15
|
+
member Podio.connection.get { |req|
|
16
|
+
req.url("/reference/#{ref_type}/#{ref_id}", options)
|
17
|
+
}.body
|
18
|
+
end
|
19
|
+
|
20
|
+
def search(target, query, limit)
|
21
|
+
response = Podio.connection.post do |req|
|
22
|
+
req.url "/reference/search"
|
23
|
+
req.body = {
|
24
|
+
:target => target,
|
25
|
+
:text => query,
|
26
|
+
:limit => limit
|
27
|
+
}
|
28
|
+
end
|
29
|
+
response.body
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/lib/podio/models/search.rb
CHANGED
@@ -4,17 +4,14 @@ class Podio::Search < ActivePodio::Base
|
|
4
4
|
property :title, :string
|
5
5
|
property :created_on, :datetime
|
6
6
|
property :link, :string
|
7
|
-
property :space, :hash
|
8
|
-
property :org, :hash
|
9
|
-
property :app, :hash
|
10
7
|
property :search_id, :integer
|
11
8
|
property :rank, :integer
|
12
|
-
|
9
|
+
|
13
10
|
has_one :created_by, :class => 'ByLine'
|
14
11
|
has_one :app, :class => 'Application'
|
15
12
|
has_one :org, :class => 'Organization'
|
16
13
|
has_one :space, :class => 'Space'
|
17
|
-
|
14
|
+
|
18
15
|
class << self
|
19
16
|
def in_org(org_id, words)
|
20
17
|
response = Podio.connection.post do |req|
|
@@ -59,5 +56,5 @@ class Podio::Search < ActivePodio::Base
|
|
59
56
|
Podio.connection.post("/search/#{search_id}/#{rank}/clicked").status
|
60
57
|
end
|
61
58
|
end
|
62
|
-
|
63
|
-
end
|
59
|
+
|
60
|
+
end
|
data/lib/podio/models/space.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Podio::Space < ActivePodio::Base
|
2
2
|
include ActivePodio::Updatable
|
3
|
-
|
3
|
+
|
4
4
|
property :space_id, :integer
|
5
5
|
property :name, :string
|
6
6
|
property :url, :string
|
@@ -17,21 +17,27 @@ class Podio::Space < ActivePodio::Base
|
|
17
17
|
property :auto_join, :boolean
|
18
18
|
property :type, :string
|
19
19
|
property :premium, :boolean
|
20
|
-
|
20
|
+
property :last_activity_on, :datetime
|
21
|
+
property :created_on, :datetime
|
22
|
+
|
21
23
|
has_one :created_by, :class => 'ByLine'
|
22
24
|
|
23
25
|
alias_method :id, :space_id
|
24
|
-
|
26
|
+
|
25
27
|
def create
|
26
28
|
response = Space.create(:org_id => org_id, :name => name, :privacy => self.privacy, :auto_join => self.auto_join)
|
27
29
|
self.url = response['url']
|
28
30
|
self.space_id = response['space_id']
|
29
31
|
end
|
30
|
-
|
32
|
+
|
31
33
|
def update
|
32
34
|
self.class.update(self.space_id, :name => self.name, :post_on_new_app => self.post_on_new_app, :post_on_new_member => self.post_on_new_member, :url_label => self.url_label, :privacy => self.privacy, :auto_join => self.auto_join)
|
33
35
|
end
|
34
|
-
|
36
|
+
|
37
|
+
def delete
|
38
|
+
self.class.delete(self.id)
|
39
|
+
end
|
40
|
+
|
35
41
|
class << self
|
36
42
|
def create(attributes)
|
37
43
|
response = Podio.connection.post do |req|
|
@@ -53,31 +59,34 @@ class Podio::Space < ActivePodio::Base
|
|
53
59
|
def find(id)
|
54
60
|
member Podio.connection.get("/space/#{id}").body
|
55
61
|
end
|
56
|
-
|
62
|
+
|
57
63
|
def join(space_id)
|
58
64
|
Podio.connection.post("/space/#{space_id}/join").body
|
59
65
|
end
|
60
66
|
|
61
|
-
def find_by_url(url
|
62
|
-
|
63
|
-
member Podio.connection.get("/space/url?url=#{ERB::Util.url_encode(url)}&info=#{info}").body
|
67
|
+
def find_by_url(url)
|
68
|
+
member Podio.connection.get("/space/url?url=#{ERB::Util.url_encode(url)}").body
|
64
69
|
end
|
65
|
-
|
70
|
+
|
66
71
|
def find_all_for_org(org_id)
|
67
72
|
list Podio.connection.get("/org/#{org_id}/space/").body
|
68
73
|
end
|
69
74
|
|
75
|
+
def find_all_spaces_for_org(org_id, options={})
|
76
|
+
list Podio.connection.get("/org/#{org_id}/all_spaces/", options).body
|
77
|
+
end
|
78
|
+
|
70
79
|
def find_open_for_org(org_id)
|
71
80
|
list Podio.connection.get("/space/org/#{org_id}/available/").body
|
72
81
|
end
|
73
|
-
|
82
|
+
|
74
83
|
def validate_url_label(org_id, url_label)
|
75
84
|
Podio.connection.post { |req|
|
76
85
|
req.url "/space/org/#{org_id}/url/validate"
|
77
86
|
req.body = {:url_label => url_label}
|
78
87
|
}.body
|
79
88
|
end
|
80
|
-
|
89
|
+
|
81
90
|
end
|
82
91
|
end
|
83
92
|
|
@@ -13,6 +13,7 @@ class Podio::SpaceInvitation < ActivePodio::Base
|
|
13
13
|
property :context_ref_type, :string # Write
|
14
14
|
property :context_ref_id, :integer # Write
|
15
15
|
property :context, :hash # Read
|
16
|
+
property :external_contacts, :hash
|
16
17
|
|
17
18
|
has_one :user, :class => 'User'
|
18
19
|
|
@@ -67,17 +68,16 @@ class Podio::SpaceInvitation < ActivePodio::Base
|
|
67
68
|
response.body
|
68
69
|
end
|
69
70
|
|
70
|
-
def
|
71
|
-
Podio.connection.
|
71
|
+
def find_member(invite_code)
|
72
|
+
member Podio.connection.get("/space/membership?invite_code=#{invite_code}").body
|
72
73
|
end
|
73
74
|
|
74
|
-
def
|
75
|
-
|
75
|
+
def decline_member(invite_code)
|
76
|
+
Podio.connection.delete("/space/membership?invite_code=#{invite_code}").status
|
76
77
|
end
|
77
78
|
|
78
|
-
def
|
79
|
-
|
79
|
+
def claim_member(invite_code)
|
80
|
+
Podio.connection.post("/space/membership/claim?invite_code=#{invite_code}").status
|
80
81
|
end
|
81
|
-
|
82
82
|
end
|
83
83
|
end
|
@@ -6,11 +6,13 @@ class Podio::SpaceMember < ActivePodio::Base
|
|
6
6
|
property :ended_on, :datetime
|
7
7
|
|
8
8
|
has_one :user, :class => 'User'
|
9
|
+
has_one :contact, :class => 'Contact', :property => :profile
|
10
|
+
has_one :space, :class => 'Space'
|
9
11
|
|
10
|
-
delegate :user_id, :name, :to => :
|
12
|
+
delegate :user_id, :name, :to => :contact
|
11
13
|
|
12
14
|
alias_method :id, :user_id
|
13
|
-
|
15
|
+
|
14
16
|
class << self
|
15
17
|
def find_all_for_role(space_id, role)
|
16
18
|
list Podio.connection.get { |req|
|
@@ -18,12 +20,23 @@ class Podio::SpaceMember < ActivePodio::Base
|
|
18
20
|
}.body
|
19
21
|
end
|
20
22
|
|
23
|
+
def find_membership(space_id, user_id)
|
24
|
+
response = Podio.connection.get { |req|
|
25
|
+
req.url("/space/#{space_id}/member/#{user_id}")
|
26
|
+
}
|
27
|
+
response.body
|
28
|
+
end
|
29
|
+
|
21
30
|
def find_all_ended(space_id)
|
22
31
|
list Podio.connection.get { |req|
|
23
32
|
req.url("/space/#{space_id}/member/ended/")
|
24
33
|
}.body
|
25
34
|
end
|
26
35
|
|
36
|
+
def find_all(space_id, options = {})
|
37
|
+
list Podio.connection.get("/space/#{space_id}/member/", options).body
|
38
|
+
end
|
39
|
+
|
27
40
|
def update_role(space_id, user_id, role)
|
28
41
|
response = Podio.connection.put do |req|
|
29
42
|
req.url "/space/#{space_id}/member/#{user_id}"
|
@@ -35,7 +48,7 @@ class Podio::SpaceMember < ActivePodio::Base
|
|
35
48
|
def end_membership(space_id, user_id)
|
36
49
|
Podio.connection.delete("/space/#{space_id}/member/#{user_id}").status
|
37
50
|
end
|
38
|
-
|
51
|
+
|
39
52
|
def find_top_contacts(space_id)
|
40
53
|
result = Podio.connection.get("/space/#{space_id}/member/top/").body
|
41
54
|
%w(employee external).each do |section|
|
@@ -43,5 +56,17 @@ class Podio::SpaceMember < ActivePodio::Base
|
|
43
56
|
end
|
44
57
|
result
|
45
58
|
end
|
59
|
+
|
60
|
+
def find_memberships_for_user_in_org(org_id, user_id)
|
61
|
+
list Podio.connection.get("/org/#{org_id}/member/#{user_id}/space_member/").body
|
62
|
+
end
|
63
|
+
|
64
|
+
def request_membership(space_id)
|
65
|
+
Podio.connection.post("/space/#{space_id}/member_request/").status
|
66
|
+
end
|
67
|
+
|
68
|
+
def accept_membership_request(space_id, space_member_request_id)
|
69
|
+
Podio.connection.post("/space/#{space_id}/member_request/#{space_member_request_id}/accept").status
|
70
|
+
end
|
46
71
|
end
|
47
72
|
end
|
data/lib/podio/models/task.rb
CHANGED
@@ -8,6 +8,7 @@ class Podio::Task < ActivePodio::Base
|
|
8
8
|
property :description, :string
|
9
9
|
property :private, :boolean
|
10
10
|
property :due_date, :date
|
11
|
+
property :due_time, :time
|
11
12
|
property :due_on, :datetime, :convert_incoming_local_datetime_to_utc => true
|
12
13
|
property :responsible, :hash
|
13
14
|
property :space_id, :integer
|
@@ -34,23 +35,29 @@ class Podio::Task < ActivePodio::Base
|
|
34
35
|
has_one :deleted_via, :class => 'Via'
|
35
36
|
has_one :completed_via, :class => 'Via'
|
36
37
|
has_one :assignee, :class => 'User', :property => :responsible
|
37
|
-
has_many :label_list, :class => 'TaskLabel', :property => :labels
|
38
|
+
has_many :label_list, :class => 'TaskLabel', :property => :labels
|
38
39
|
has_many :files, :class => 'FileAttachment'
|
39
40
|
has_many :comments, :class => 'Comment'
|
40
41
|
has_one :reminder, :class => 'Reminder'
|
41
42
|
has_one :recurrence, :class => 'Recurrence'
|
42
43
|
|
43
44
|
alias_method :id, :task_id
|
44
|
-
|
45
|
+
|
45
46
|
def create
|
47
|
+
result = self.create_multiple # Could return false if API call failed
|
48
|
+
self.task_id = result.first.id if result
|
49
|
+
result
|
50
|
+
end
|
51
|
+
|
52
|
+
def create_multiple
|
46
53
|
compacted_attributes = remove_nil_values(self.attributes)
|
47
54
|
if(self.ref_type.present? && self.ref_id.present?)
|
48
|
-
self.
|
55
|
+
self.class.create_with_ref(self.ref_type, self.ref_id, compacted_attributes)
|
49
56
|
else
|
50
|
-
self.
|
57
|
+
self.class.create(compacted_attributes)
|
51
58
|
end
|
52
59
|
end
|
53
|
-
|
60
|
+
|
54
61
|
def destroy
|
55
62
|
self.class.delete(self.id)
|
56
63
|
end
|
@@ -59,6 +66,10 @@ class Podio::Task < ActivePodio::Base
|
|
59
66
|
self.class.update_reference(self.id, ref_type, ref_id)
|
60
67
|
end
|
61
68
|
|
69
|
+
def delete_reference
|
70
|
+
self.class.delete_reference(self.id)
|
71
|
+
end
|
72
|
+
|
62
73
|
def update_labels(label_ids)
|
63
74
|
self.class.update_labels(self.id, label_ids)
|
64
75
|
end
|
@@ -75,7 +86,7 @@ class Podio::Task < ActivePodio::Base
|
|
75
86
|
self.class.rank(self.id, previous_task && previous_task.to_i, next_task && next_task.to_i)
|
76
87
|
end
|
77
88
|
|
78
|
-
handle_api_errors_for :
|
89
|
+
handle_api_errors_for :create_multiple, :destroy, :complete, :uncomplete, :update_reference # Call must be made after the methods to handle have been defined
|
79
90
|
|
80
91
|
class << self
|
81
92
|
def create(attributes)
|
@@ -84,7 +95,7 @@ class Podio::Task < ActivePodio::Base
|
|
84
95
|
req.body = attributes
|
85
96
|
end
|
86
97
|
|
87
|
-
response.body
|
98
|
+
list [response.body].flatten
|
88
99
|
end
|
89
100
|
|
90
101
|
def create_with_ref(ref_type, ref_id, attributes)
|
@@ -93,7 +104,7 @@ class Podio::Task < ActivePodio::Base
|
|
93
104
|
req.body = attributes
|
94
105
|
end
|
95
106
|
|
96
|
-
response.body
|
107
|
+
list [response.body].flatten
|
97
108
|
end
|
98
109
|
|
99
110
|
def update_description(id, description)
|
@@ -112,8 +123,8 @@ class Podio::Task < ActivePodio::Base
|
|
112
123
|
Podio.connection.put("/task/#{id}/due_date", {:due_date => due_date}).status
|
113
124
|
end
|
114
125
|
|
115
|
-
def update_due_on(id,
|
116
|
-
Podio.connection.put("/task/#{id}/due_on",
|
126
|
+
def update_due_on(id, options)
|
127
|
+
Podio.connection.put("/task/#{id}/due_on", options).status
|
117
128
|
end
|
118
129
|
|
119
130
|
def update_assignee(id, user_id)
|
@@ -123,7 +134,11 @@ class Podio::Task < ActivePodio::Base
|
|
123
134
|
def update_reference(id, ref_type, ref_id)
|
124
135
|
Podio.connection.put("/task/#{id}/ref", {:ref_type => ref_type, :ref_id => ref_id}).status
|
125
136
|
end
|
126
|
-
|
137
|
+
|
138
|
+
def delete_reference(task_id)
|
139
|
+
Podio.connection.delete("/task/#{task_id}/ref").status
|
140
|
+
end
|
141
|
+
|
127
142
|
def update_labels(id, label_ids)
|
128
143
|
Podio.connection.put("/task/#{id}/label/", label_ids).status
|
129
144
|
end
|
@@ -157,7 +172,7 @@ class Podio::Task < ActivePodio::Base
|
|
157
172
|
req.url('/task/', options)
|
158
173
|
}.body
|
159
174
|
end
|
160
|
-
|
175
|
+
|
161
176
|
def find_summary
|
162
177
|
response = Podio.connection.get("/task/summary").body
|
163
178
|
response['overdue']['tasks'] = list(response['overdue']['tasks'])
|
@@ -166,6 +181,15 @@ class Podio::Task < ActivePodio::Base
|
|
166
181
|
response
|
167
182
|
end
|
168
183
|
|
184
|
+
def find_summary_for_org(org_id, limit=nil)
|
185
|
+
response = Podio.connection.get("/task/org/#{org_id}/summary" +
|
186
|
+
((limit != nil) ? "?limit=#{limit}" : "")).body
|
187
|
+
response['overdue']['tasks'] = list(response['overdue']['tasks'])
|
188
|
+
response['today']['tasks'] = list(response['today']['tasks'])
|
189
|
+
response['other']['tasks'] = list(response['other']['tasks'])
|
190
|
+
response
|
191
|
+
end
|
192
|
+
|
169
193
|
def find_summary_for_reference(ref_type, ref_id)
|
170
194
|
response = Podio.connection.get("/task/#{ref_type}/#{ref_id}/summary").body
|
171
195
|
response['overdue']['tasks'] = list(response['overdue']['tasks'])
|
@@ -173,7 +197,7 @@ class Podio::Task < ActivePodio::Base
|
|
173
197
|
response['other']['tasks'] = list(response['other']['tasks'])
|
174
198
|
response
|
175
199
|
end
|
176
|
-
|
200
|
+
|
177
201
|
def find_personal_summary
|
178
202
|
response = Podio.connection.get("/task/personal/summary").body
|
179
203
|
response['overdue']['tasks'] = list(response['overdue']['tasks'])
|
@@ -181,6 +205,6 @@ class Podio::Task < ActivePodio::Base
|
|
181
205
|
response['other']['tasks'] = list(response['other']['tasks'])
|
182
206
|
response
|
183
207
|
end
|
184
|
-
|
208
|
+
|
185
209
|
end
|
186
210
|
end
|