-
Notifications
You must be signed in to change notification settings - Fork 53
/
space_invitation.rb
84 lines (66 loc) · 2.22 KB
/
space_invitation.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
class Podio::SpaceInvitation < ActivePodio::Base
include ActivePodio::Updatable
property :space_id, :integer
property :role, :string
property :subject, :string
property :message, :string
property :notify, :boolean
property :users, :array
property :mails, :array
property :profiles, :array
property :activation_code, :integer
property :context_ref_type, :string # Write
property :context_ref_id, :integer # Write
property :context, :hash # Read
property :external_contacts, :hash
has_one :user, :class => 'User'
def save
self.class.create(self.space_id, self.role, self.attributes.except(:contacts))
end
def save_member
self.class.create_member(self.space_id, self.role, self.attributes.except(:contacts))
end
def accept(invite_code)
self.class.accept(invite_code)
end
handle_api_errors_for :save, :save_member, :accept # Call must be made after the methods to handle have been defined
class << self
def create(space_id, role, attributes={})
response = Podio.connection.post do |req|
req.url "/space/#{space_id}/invite"
req.body = attributes.merge(:role => role)
end
response.body
end
def create_member(space_id, role, attributes={})
response = Podio.connection.post do |req|
req.url "/space/#{space_id}/member/"
req.body = attributes.merge(:role => role)
end
response.body
end
def accept(invite_code)
response = Podio.connection.post do |req|
req.url '/space/invite/accept'
req.body = {:invite_code => invite_code}
end
response.body
end
def decline(invite_code)
response = Podio.connection.post do |req|
req.url '/space/invite/decline'
req.body = {:invite_code => invite_code}
end
response.body
end
def decline_member(invite_code)
Podio.connection.delete("/space/membership?invite_code=#{invite_code}").status
end
def find(invite_code)
member Podio.connection.get("/space/invite/status?invite_code=#{ERB::Util.url_encode(invite_code)}").body
end
def find_member(invite_code)
member Podio.connection.get("/space/membership?invite_code=#{ERB::Util.url_encode(invite_code)}").body
end
end
end