podio 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|