podio 0.8.0 → 1.0.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.
Files changed (106) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/Gemfile +9 -2
  4. data/README.md +1 -4
  5. data/examples/oauth_web_flow/Gemfile +4 -0
  6. data/examples/{sinatra.rb → oauth_web_flow/sinatra.rb} +7 -6
  7. data/lib/podio.rb +18 -3
  8. data/lib/podio/active_podio/base.rb +107 -62
  9. data/lib/podio/client.rb +30 -5
  10. data/lib/podio/error.rb +22 -10
  11. data/lib/podio/middleware/error_response.rb +23 -16
  12. data/lib/podio/middleware/json_response.rb +1 -1
  13. data/lib/podio/middleware/logger.rb +3 -0
  14. data/lib/podio/middleware/oauth2.rb +3 -0
  15. data/lib/podio/models/account_provider.rb +1 -0
  16. data/lib/podio/models/action.rb +19 -2
  17. data/lib/podio/models/activation_status.rb +8 -2
  18. data/lib/podio/models/app_store_category.rb +4 -1
  19. data/lib/podio/models/app_store_share.rb +29 -16
  20. data/lib/podio/models/application.rb +57 -2
  21. data/lib/podio/models/application_email.rb +5 -2
  22. data/lib/podio/models/application_field.rb +5 -2
  23. data/lib/podio/models/batch.rb +8 -0
  24. data/lib/podio/models/by_line.rb +2 -1
  25. data/lib/podio/models/calendar_event.rb +63 -3
  26. data/lib/podio/models/calendar_mute.rb +6 -1
  27. data/lib/podio/models/category.rb +1 -0
  28. data/lib/podio/models/comment.rb +29 -8
  29. data/lib/podio/models/condition.rb +8 -0
  30. data/lib/podio/models/condition_set.rb +40 -0
  31. data/lib/podio/models/contact.rb +13 -2
  32. data/lib/podio/models/contract.rb +85 -1
  33. data/lib/podio/models/contract_event.rb +17 -0
  34. data/lib/podio/models/contract_price.rb +3 -7
  35. data/lib/podio/models/contract_price_v2.rb +31 -0
  36. data/lib/podio/models/contract_user.rb +4 -0
  37. data/lib/podio/models/conversation.rb +114 -13
  38. data/lib/podio/models/conversation_event.rb +51 -0
  39. data/lib/podio/models/conversation_message.rb +2 -1
  40. data/lib/podio/models/conversation_participant.rb +3 -2
  41. data/lib/podio/models/date_election.rb +35 -0
  42. data/lib/podio/models/email_contact.rb +46 -0
  43. data/lib/podio/models/email_subscription_setting.rb +4 -23
  44. data/lib/podio/models/embed.rb +4 -4
  45. data/lib/podio/models/experiment.rb +71 -0
  46. data/lib/podio/models/external_file.rb +7 -2
  47. data/lib/podio/models/file_attachment.rb +23 -0
  48. data/lib/podio/models/form.rb +7 -0
  49. data/lib/podio/models/friend.rb +12 -0
  50. data/lib/podio/models/grant.rb +73 -0
  51. data/lib/podio/models/hook.rb +13 -6
  52. data/lib/podio/models/importer.rb +3 -0
  53. data/lib/podio/models/integration.rb +17 -6
  54. data/lib/podio/models/invoice.rb +30 -0
  55. data/lib/podio/models/item.rb +81 -14
  56. data/lib/podio/models/item_diff.rb +9 -5
  57. data/lib/podio/models/item_field.rb +11 -2
  58. data/lib/podio/models/item_revision.rb +5 -2
  59. data/lib/podio/models/linked_account.rb +1 -0
  60. data/lib/podio/models/live.rb +61 -0
  61. data/lib/podio/models/net_promoter_score.rb +28 -0
  62. data/lib/podio/models/notification.rb +9 -4
  63. data/lib/podio/models/notification_group.rb +5 -2
  64. data/lib/podio/models/o_auth.rb +4 -2
  65. data/lib/podio/models/o_auth_client.rb +1 -2
  66. data/lib/podio/models/organization.rb +22 -10
  67. data/lib/podio/models/organization_contact.rb +2 -1
  68. data/lib/podio/models/organization_member.rb +17 -3
  69. data/lib/podio/models/organization_profile.rb +8 -2
  70. data/lib/podio/models/pin.rb +27 -0
  71. data/lib/podio/models/profile.rb +19 -50
  72. data/lib/podio/models/promotion.rb +91 -0
  73. data/lib/podio/models/rating.rb +23 -5
  74. data/lib/podio/models/recurrence.rb +6 -3
  75. data/lib/podio/models/reference.rb +17 -1
  76. data/lib/podio/models/reminder.rb +8 -3
  77. data/lib/podio/models/search.rb +7 -1
  78. data/lib/podio/models/space.rb +41 -2
  79. data/lib/podio/models/space_contact.rb +1 -2
  80. data/lib/podio/models/space_invitation.rb +4 -5
  81. data/lib/podio/models/space_member.rb +37 -4
  82. data/lib/podio/models/status.rb +20 -8
  83. data/lib/podio/models/stream_activity_group.rb +40 -0
  84. data/lib/podio/models/stream_mute.rb +7 -8
  85. data/lib/podio/models/stream_object.rb +19 -11
  86. data/lib/podio/models/subscription.rb +7 -1
  87. data/lib/podio/models/tag.rb +6 -1
  88. data/lib/podio/models/tag_search.rb +2 -1
  89. data/lib/podio/models/task.rb +74 -18
  90. data/lib/podio/models/task_label.rb +10 -2
  91. data/lib/podio/models/user.rb +50 -6
  92. data/lib/podio/models/user_mail.rb +4 -0
  93. data/lib/podio/models/user_status.rb +7 -0
  94. data/lib/podio/models/view.rb +27 -7
  95. data/lib/podio/models/widget.rb +25 -3
  96. data/lib/podio/version.rb +1 -1
  97. data/podio.gemspec +13 -10
  98. data/script/config.example.rb +6 -0
  99. data/script/referenceGenerator.rb +87 -0
  100. data/test/active_podio_test.rb +44 -34
  101. data/test/client_test.rb +13 -2
  102. metadata +89 -36
  103. data/lib/podio/middleware/date_conversion.rb +0 -37
  104. data/lib/podio/models/bulletin.rb +0 -60
  105. data/lib/podio/models/connection.rb +0 -53
  106. data/lib/podio/models/news.rb +0 -85
@@ -0,0 +1,91 @@
1
+ class Podio::Promotion < ActivePodio::Base
2
+ property :promotion_id, :integer
3
+ property :name, :string
4
+ property :status, :string
5
+ property :display_type, :string
6
+ property :display_data, :hash
7
+ property :context, :string
8
+ property :contextual, :boolean
9
+ property :priority, :integer
10
+ property :max_views, :integer
11
+ property :max_uses, :integer
12
+ property :max_duration, :integer
13
+ property :sleep, :integer
14
+ property :condition_set_ids, :array
15
+
16
+ alias_method :id, :promotion_id
17
+
18
+ class << self
19
+ def find_all(options={})
20
+ list Podio.connection.get { |req|
21
+ req.url("/promotion/", options)
22
+ }.body
23
+ end
24
+
25
+ def find(promotion_id)
26
+ member Podio.connection.get("/promotion/#{promotion_id}").body
27
+ end
28
+
29
+ def create(attributes)
30
+ member Podio.connection.post { |req|
31
+ req.url("/promotion/")
32
+ req.body = attributes
33
+ }.body
34
+ end
35
+
36
+ def update(promotion_id, attributes)
37
+ member Podio.connection.put { |req|
38
+ req.url("/promotion/#{promotion_id}")
39
+ req.body = attributes
40
+ }.body
41
+ end
42
+
43
+ def enable(promotion_id)
44
+ member Podio.connection.post("/promotion/#{promotion_id}/enable").body
45
+ end
46
+
47
+ def disable(promotion_id)
48
+ member Podio.connection.post("/promotion/#{promotion_id}/disable").body
49
+ end
50
+
51
+ def delete(promotion_id)
52
+ Podio.connection.delete("/promotion/#{promotion_id}")
53
+ end
54
+
55
+ def stats(promotion_id)
56
+ Podio.connection.get("/promotion/#{promotion_id}/stats").body
57
+ end
58
+
59
+ def assign(promotion_id, user_id, body)
60
+ Podio.connection.post { |req|
61
+ req.url("/promotion/#{promotion_id}/assign/#{user_id}")
62
+ req.body = body
63
+ }
64
+ end
65
+
66
+ def find_for_context(context_name, options = {})
67
+ result = Podio.connection.get("/promotion/#{context_name}", options)
68
+
69
+ if result.body.present?
70
+ member(result.body)
71
+ else
72
+ nil
73
+ end
74
+ end
75
+
76
+ def end(promotion_id, body = nil)
77
+ Podio.connection.post { |req|
78
+ req.url "/promotion/#{promotion_id}/end"
79
+ req.body = body
80
+ }
81
+ end
82
+
83
+ def click(promotion_id, body = nil)
84
+ Podio.connection.post { |req|
85
+ req.url "/promotion/#{promotion_id}/click"
86
+ req.body = body
87
+ }
88
+ end
89
+ end
90
+
91
+ end
@@ -1,12 +1,14 @@
1
+ # @see https://developers.podio.com/doc/ratings
1
2
  class Podio::Rating < ActivePodio::Base
2
3
 
3
4
  property :rating_id, :integer
4
5
  property :type, :string
5
6
  property :value, :string
6
-
7
+
7
8
  alias_method :id, :rating_id
8
-
9
+
9
10
  class << self
11
+ # @see https://developers.podio.com/doc/ratings/add-rating-22377
10
12
  def create(ref_type, ref_id, rating_type, value)
11
13
  response = Podio.connection.post do |req|
12
14
  req.url "/rating/#{ref_type}/#{ref_id}/#{rating_type}"
@@ -16,25 +18,41 @@ class Podio::Rating < ActivePodio::Base
16
18
  response.body['rating_id']
17
19
  end
18
20
 
21
+ # @see https://developers.podio.com/doc/ratings/get-all-ratings-22376
19
22
  def find_all(ref_type, ref_id)
20
23
  collection Podio.connection.get("/rating/#{ref_type}/#{ref_id}").body
21
24
  end
22
-
25
+
26
+ # @see https://developers.podio.com/doc/ratings/get-rating-22407
23
27
  def find(ref_type, ref_id, rating_type, user_id)
24
28
  Podio.connection.get("/rating/#{ref_type}/#{ref_id}/#{rating_type}/#{user_id}").body['value']
25
29
  end
26
30
 
31
+ # @see https://developers.podio.com/doc/ratings/get-rating-own-84128
27
32
  def find_own(ref_type, ref_id, rating_type)
28
33
  Podio.connection.get("/rating/#{ref_type}/#{ref_id}/#{rating_type}/self").body['value']
29
34
  end
30
35
 
36
+ # @see https://developers.podio.com/doc/ratings/get-ratings-22375
31
37
  def find_all_by_type(ref_type, ref_id, rating_type)
32
38
  collection Podio.connection.get("/rating/#{ref_type}/#{ref_id}/#{rating_type}").body
33
39
  end
34
40
 
41
+ # @see https://developers.podio.com/doc/ratings/remove-rating-22342
35
42
  def delete(ref_type, ref_id, rating_type)
36
43
  Podio.connection.delete("/rating/#{ref_type}/#{ref_id}/#{rating_type}").body
37
44
  end
45
+
46
+ # @see https://developers.podio.com/doc/comments/get-who-liked-a-comment-29007011
47
+ def liked_by(ref_type, ref_id)
48
+ Podio.connection.get("/rating/#{ref_type}/#{ref_id}/liked_by/").body.map{|values| Podio::Contact.new(values)}
49
+ end
50
+
51
+ # @see https://developers.podio.com/doc/ratings/get-like-count-32161225
52
+ def like_count(ref_type, ref_id)
53
+ Podio.connection.get("/rating/#{ref_type}/#{ref_id}/like_count").body["like_count"]
54
+ end
55
+
38
56
  end
39
-
40
- end
57
+
58
+ end
@@ -1,3 +1,4 @@
1
+ # @see https://developers.podio.com/doc/recurrence
1
2
  class Podio::Recurrence < ActivePodio::Base
2
3
  property :recurrence_id, :integer
3
4
  property :name, :string
@@ -7,12 +8,14 @@ class Podio::Recurrence < ActivePodio::Base
7
8
 
8
9
  alias_method :id, :recurrence_id
9
10
  delegate_to_hash :config, :days, :repeat_on, :setter => true
10
-
11
+
11
12
  class << self
13
+ # @see https://developers.podio.com/doc/recurrence/delete-recurrence-3349970
12
14
  def delete(ref_type, ref_id)
13
15
  Podio.connection.delete("/recurrence/#{ref_type}/#{ref_id}").body
14
16
  end
15
-
17
+
18
+ # @see https://developers.podio.com/doc/recurrence/create-or-update-recurrence-3349957
16
19
  def update(ref_type, ref_id, attributes)
17
20
  response = Podio.connection.put do |req|
18
21
  req.url "/recurrence/#{ref_type}/#{ref_id}"
@@ -21,5 +24,5 @@ class Podio::Recurrence < ActivePodio::Base
21
24
  response.status
22
25
  end
23
26
  end
24
-
27
+
25
28
  end
@@ -1,7 +1,9 @@
1
+ # @see https://developers.podio.com/doc/reference
1
2
  class Podio::Reference < ActivePodio::Base
2
3
 
3
4
  property :type, :string
4
5
  property :id, :integer
6
+ property :type_name, :string
5
7
  property :title, :string
6
8
  property :link, :string
7
9
  property :data, :hash
@@ -11,13 +13,15 @@ class Podio::Reference < ActivePodio::Base
11
13
  has_one :created_via, :class => 'Via'
12
14
 
13
15
  class << self
16
+ # @see https://developers.podio.com/doc/reference/get-reference-10661022
14
17
  def find(ref_type, ref_id, options = {})
15
18
  member Podio.connection.get { |req|
16
19
  req.url("/reference/#{ref_type}/#{ref_id}", options)
17
20
  }.body
18
21
  end
19
22
 
20
- def search(target, query, limit)
23
+ # @see https://developers.podio.com/doc/reference/search-references-13312595
24
+ def search(target, query, limit, target_params = nil)
21
25
  response = Podio.connection.post do |req|
22
26
  req.url "/reference/search"
23
27
  req.body = {
@@ -25,9 +29,21 @@ class Podio::Reference < ActivePodio::Base
25
29
  :text => query,
26
30
  :limit => limit
27
31
  }
32
+ req.body[:target_params] = target_params if target_params.present?
28
33
  end
29
34
  response.body
30
35
  end
31
36
 
37
+ # @see https://developers.podio.com/doc/reference/get-users-with-access-to-object-16681010
38
+ def find_users_with_access(ref_type, ref_id, options = {})
39
+ self.klass_from_string('Contact').list Podio.connection.get { |req|
40
+ req.url("/reference/#{ref_type}/#{ref_id}/accessible_by/", options)
41
+ }.body
42
+ end
43
+
44
+ # @see https://developers.podio.com/doc/reference/count-user-profiles-with-access-to-object-19190550
45
+ def count_users_with_access(ref_type, ref_id)
46
+ Podio.connection.get("/reference/#{ref_type}/#{ref_id}/accessible_by/count").body['count']
47
+ end
32
48
  end
33
49
  end
@@ -1,18 +1,22 @@
1
+ # @see https://developers.podio.com/doc/reminders
1
2
  class Podio::Reminder < ActivePodio::Base
2
3
  property :reminder_id, :integer
3
4
  property :remind_delta, :integer
4
5
 
5
6
  alias_method :id, :reminder_id
6
-
7
+
7
8
  class << self
9
+ # @see https://developers.podio.com/doc/reminders/delete-reminder-3315117
8
10
  def delete(ref_type, ref_id)
9
11
  Podio.connection.delete("/reminder/#{ref_type}/#{ref_id}").body
10
12
  end
11
-
13
+
14
+ # @see https://developers.podio.com/doc/reminders/snooze-reminder-3321049
12
15
  def snooze(ref_type, ref_id)
13
16
  Podio.connection.post("/reminder/#{ref_type}/#{ref_id}/snooze").body
14
17
  end
15
18
 
19
+ # @see https://developers.podio.com/doc/reminders/create-or-update-reminder-3315055
16
20
  def create(ref_type, ref_id, attributes)
17
21
  response = Podio.connection.post do |req|
18
22
  req.url "/reminder/#{ref_type}/#{ref_id}"
@@ -21,6 +25,7 @@ class Podio::Reminder < ActivePodio::Base
21
25
  response.status
22
26
  end
23
27
 
28
+ # @see https://developers.podio.com/doc/reminders/create-or-update-reminder-3315055
24
29
  def update(ref_type, ref_id, attributes)
25
30
  response = Podio.connection.put do |req|
26
31
  req.url "/reminder/#{ref_type}/#{ref_id}"
@@ -29,5 +34,5 @@ class Podio::Reminder < ActivePodio::Base
29
34
  response.status
30
35
  end
31
36
  end
32
-
37
+
33
38
  end
@@ -1,3 +1,4 @@
1
+ # @see https://developers.podio.com/doc/search
1
2
  class Podio::Search < ActivePodio::Base
2
3
  property :type, :string
3
4
  property :id, :integer
@@ -13,15 +14,18 @@ class Podio::Search < ActivePodio::Base
13
14
  has_one :space, :class => 'Space'
14
15
 
15
16
  class << self
17
+ # @see https://developers.podio.com/doc/search/search-in-organization-22487
16
18
  def in_org(org_id, words)
19
+ attributes[:query] = words
17
20
  response = Podio.connection.post do |req|
18
21
  req.url "/search/org/#{org_id}/"
19
- req.body = words
22
+ req.body = attributes
20
23
  end
21
24
 
22
25
  list response.body
23
26
  end
24
27
 
28
+ # @see https://developers.podio.com/doc/search/search-globally-22488
25
29
  def globally(words, attributes={})
26
30
  attributes[:query] = words
27
31
  response = Podio.connection.post do |req|
@@ -32,6 +36,7 @@ class Podio::Search < ActivePodio::Base
32
36
  list response.body
33
37
  end
34
38
 
39
+ # @see https://developers.podio.com/doc/search/search-in-space-22479
35
40
  def in_space(space_id, words, attributes={})
36
41
  attributes[:query] = words
37
42
  response = Podio.connection.post do |req|
@@ -42,6 +47,7 @@ class Podio::Search < ActivePodio::Base
42
47
  list response.body
43
48
  end
44
49
 
50
+ # @see https://developers.podio.com/doc/search/search-in-app-4234651
45
51
  def in_app(app_id, words, attributes={})
46
52
  attributes[:query] = words
47
53
  response = Podio.connection.post do |req|
@@ -1,13 +1,16 @@
1
+ # @see https://developers.podio.com/doc/spaces
1
2
  class Podio::Space < ActivePodio::Base
2
3
  include ActivePodio::Updatable
3
4
 
4
5
  property :space_id, :integer
5
6
  property :name, :string
7
+ property :description, :string
6
8
  property :url, :string
7
9
  property :url_label, :string
8
10
  property :org_id, :integer
9
11
  property :contact_count, :integer
10
- property :members, :integer
12
+ property :member_count, :integer
13
+ property :app_count, :integer
11
14
  property :role, :string
12
15
  property :rights, :array
13
16
  property :post_on_new_app, :boolean
@@ -19,19 +22,32 @@ class Podio::Space < ActivePodio::Base
19
22
  property :premium, :boolean
20
23
  property :last_activity_on, :datetime
21
24
  property :created_on, :datetime
25
+ property :is_overdue, :boolean
26
+ property :push, :hash
22
27
 
23
28
  has_one :created_by, :class => 'ByLine'
29
+ has_one :org, :class => 'Organization'
24
30
 
25
31
  alias_method :id, :space_id
26
32
 
33
+ # @see https://developers.podio.com/doc/spaces/create-space-22390
27
34
  def create
28
35
  response = Space.create(:org_id => org_id, :name => name, :privacy => self.privacy, :auto_join => self.auto_join)
29
36
  self.url = response['url']
30
37
  self.space_id = response['space_id']
31
38
  end
32
39
 
40
+ # @see https://developers.podio.com/doc/spaces/update-space-22391
33
41
  def update
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)
42
+ self.class.update(space_id,
43
+ :name => name,
44
+ :post_on_new_app => post_on_new_app,
45
+ :post_on_new_member => post_on_new_member,
46
+ :url_label => url_label,
47
+ :privacy => privacy,
48
+ :auto_join => auto_join,
49
+ :description => description
50
+ )
35
51
  end
36
52
 
37
53
  def delete
@@ -39,6 +55,7 @@ class Podio::Space < ActivePodio::Base
39
55
  end
40
56
 
41
57
  class << self
58
+ # @see https://developers.podio.com/doc/spaces/create-space-22390
42
59
  def create(attributes)
43
60
  response = Podio.connection.post do |req|
44
61
  req.url '/space/'
@@ -48,6 +65,7 @@ class Podio::Space < ActivePodio::Base
48
65
  response.body
49
66
  end
50
67
 
68
+ # @see https://developers.podio.com/doc/spaces/update-space-22391
51
69
  def update(space_id, attributes)
52
70
  Podio.connection.put("/space/#{space_id}", attributes).status
53
71
  end
@@ -56,18 +74,30 @@ class Podio::Space < ActivePodio::Base
56
74
  Podio.connection.delete("/space/#{id}").status
57
75
  end
58
76
 
77
+ # @see https://developers.podio.com/doc/spaces/get-space-22389
59
78
  def find(id)
60
79
  member Podio.connection.get("/space/#{id}").body
61
80
  end
62
81
 
82
+ # @see https://developers.podio.com/doc/space-members/join-space-1927286
63
83
  def join(space_id)
64
84
  Podio.connection.post("/space/#{space_id}/join").body
65
85
  end
66
86
 
87
+ # @see https://developers.podio.com/doc/organizations/end-organization-membership-19410457
88
+ def leave(space_id)
89
+ Podio.connection.post("/space/#{space_id}/leave").status
90
+ end
91
+
92
+ # @see https://developers.podio.com/doc/spaces/get-space-by-url-22481
67
93
  def find_by_url(url)
68
94
  member Podio.connection.get("/space/url?url=#{ERB::Util.url_encode(url)}").body
69
95
  end
70
96
 
97
+ def find_by_url_slug(org_slug, space_slug)
98
+ member Podio.connection.get("/space/url", :org_slug => org_slug, :space_slug => space_slug).body
99
+ end
100
+
71
101
  def find_all_for_org(org_id)
72
102
  list Podio.connection.get("/org/#{org_id}/space/").body
73
103
  end
@@ -76,6 +106,7 @@ class Podio::Space < ActivePodio::Base
76
106
  list Podio.connection.get("/org/#{org_id}/all_spaces/", options).body
77
107
  end
78
108
 
109
+ # @see https://developers.podio.com/doc/spaces/get-available-spaces-1911961
79
110
  def find_open_for_org(org_id)
80
111
  list Podio.connection.get("/space/org/#{org_id}/available/").body
81
112
  end
@@ -87,6 +118,14 @@ class Podio::Space < ActivePodio::Base
87
118
  }.body
88
119
  end
89
120
 
121
+ def get_overdue_info(space_id)
122
+ Podio.connection.get("/space/#{space_id}/overdue").body
123
+ end
124
+
125
+ def get_count(org_id)
126
+ Podio.connection.get("/space/org/#{org_id}").body['count']
127
+ end
128
+
90
129
  end
91
130
  end
92
131
 
@@ -1,3 +1,4 @@
1
+ # @see https://developers.podio.com/doc/contacts
1
2
  class Podio::SpaceContact < Podio::Profile
2
3
  include ActivePodio::Updatable
3
4
 
@@ -18,6 +19,4 @@ class Podio::SpaceContact < Podio::Profile
18
19
  def destroy
19
20
  self.class.delete_contact(self.profile_id)
20
21
  end
21
-
22
- handle_api_errors_for :create, :update # Call must be made after the methods to handle have been defined
23
22
  end
@@ -16,6 +16,7 @@ class Podio::SpaceInvitation < ActivePodio::Base
16
16
  property :external_contacts, :hash
17
17
 
18
18
  has_one :user, :class => 'User'
19
+ has_one :inviter, :class => 'Contact'
19
20
 
20
21
  def save
21
22
  self.class.create(self.space_id, self.role, self.attributes.except(:contacts))
@@ -29,8 +30,6 @@ class Podio::SpaceInvitation < ActivePodio::Base
29
30
  self.class.accept(invite_code)
30
31
  end
31
32
 
32
- handle_api_errors_for :save, :save_member, :accept # Call must be made after the methods to handle have been defined
33
-
34
33
  class << self
35
34
  def create(space_id, role, attributes={})
36
35
  response = Podio.connection.post do |req|
@@ -69,15 +68,15 @@ class Podio::SpaceInvitation < ActivePodio::Base
69
68
  end
70
69
 
71
70
  def find_member(invite_code)
72
- member Podio.connection.get("/space/membership?invite_code=#{invite_code}").body
71
+ member Podio.client.trusted_connection.get("/space/membership?invite_code=#{invite_code}").body
73
72
  end
74
73
 
75
74
  def decline_member(invite_code)
76
- Podio.connection.delete("/space/membership?invite_code=#{invite_code}").status
75
+ Podio.client.trusted_connection.delete("/space/membership?invite_code=#{invite_code}").status
77
76
  end
78
77
 
79
78
  def claim_member(invite_code)
80
- Podio.connection.post("/space/membership/claim?invite_code=#{invite_code}").status
79
+ Podio.connection.post("/space/membership/claim?invite_code=#{invite_code}").body
81
80
  end
82
81
  end
83
82
  end