podio 0.8.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,17 @@
1
+ class Podio::ContractEvent < ActivePodio::Base
2
+ property :type, :string
3
+ property :created_on, :datetime
4
+
5
+ has_one :created_by, :class => 'ByLine'
6
+ has_one :created_via, :class => 'Via'
7
+
8
+ class << self
9
+ # @see https://hoist.podio.com/api/apps/apioperations/items/699
10
+ def find_all_for_contract(contract_id, options = {})
11
+ list Podio.connection.get { |req|
12
+ req.url("/contract/#{contract_id}/event/", options)
13
+ }.body
14
+ end
15
+
16
+ end
17
+ end
@@ -1,6 +1,6 @@
1
1
  class Podio::ContractPrice < ActivePodio::Base
2
2
  property :total, :float
3
-
3
+
4
4
  has_many :users, :class => 'ContractUser'
5
5
 
6
6
  def premium_employees
@@ -23,10 +23,6 @@ class Podio::ContractPrice < ActivePodio::Base
23
23
  items['emp_network'].present?
24
24
  end
25
25
 
26
- def total_for_emp_network
27
- items['emp_network']['sub_total']
28
- end
29
-
30
26
  def items
31
27
  if @items.nil?
32
28
  @items = {}
@@ -36,11 +32,11 @@ class Podio::ContractPrice < ActivePodio::Base
36
32
  end
37
33
  @items
38
34
  end
39
-
35
+
40
36
  end
41
37
 
42
38
  class Podio::ContractPriceItem < ActivePodio::Base
43
39
  property :sub_total, :float
44
40
  property :quantity, :integer
45
41
  property :already_paid, :integer
46
- end
42
+ end
@@ -0,0 +1,31 @@
1
+ class Podio::ContractPriceV2 < ActivePodio::Base
2
+
3
+ has_one :employee, :class => 'ContractPriceItemV2'
4
+ has_one :external, :class => 'ContractPriceItemV2'
5
+
6
+ def total
7
+ self.employee.sub_total + self.external.sub_total
8
+ end
9
+
10
+ class << self
11
+ def calculate(contract_id, attributes)
12
+ response = Podio.connection.post do |req|
13
+ req.url "/contract/#{contract_id}/price/v2"
14
+ req.body = attributes
15
+ end
16
+
17
+ member response.body
18
+ end
19
+
20
+ end
21
+ end
22
+
23
+ class Podio::ContractPriceItemV2 < ActivePodio::Base
24
+ property :price, :float # Price per user
25
+ property :quantity, :integer # Number of users
26
+
27
+ def sub_total
28
+ (self.quantity*self.price).to_f
29
+ end
30
+
31
+ end
@@ -0,0 +1,4 @@
1
+ class Podio::ContractUser < Podio::User
2
+ property :subtotal, :float
3
+ property :items, :hash
4
+ end
@@ -1,6 +1,10 @@
1
+ # @see https://developers.podio.com/doc/conversations
1
2
  class Podio::Conversation < ActivePodio::Base
3
+ include ActivePodio::Updatable
4
+
2
5
  property :conversation_id, :integer
3
6
  property :subject, :string
7
+ property :pinned, :boolean
4
8
 
5
9
  # When inputting conversation
6
10
  property :text, :string
@@ -8,45 +12,86 @@ class Podio::Conversation < ActivePodio::Base
8
12
  property :file_ids, :array
9
13
  property :embed_id, :integer
10
14
  property :embed_file_id, :integer
11
-
15
+
12
16
  # When outputting conversation(s)
17
+ property :link, :string
13
18
  property :created_on, :datetime
19
+ property :excerpt, :string
20
+ property :last_event_on, :datetime
21
+ property :starred, :boolean
22
+ property :unread, :boolean
23
+ property :type, :string
24
+ property :push, :hash
25
+ property :presence, :hash
26
+
14
27
  has_one :embed, :class => 'Embed'
15
28
  has_one :embed_file, :class => 'FileAttachment'
16
29
  has_one :created_by, :class => 'ByLine'
30
+ has_one :live, :class => 'Live'
17
31
  has_many :files, :class => 'FileAttachment'
18
32
  has_many :messages, :class => 'ConversationMessage'
19
33
  has_many :participants_full, :class => 'ConversationParticipant'
20
34
 
21
-
22
35
  alias_method :id, :conversation_id
23
- alias_method :name, :subject # So tasks can refer to ref.name on all types of references
36
+
37
+ # So tasks can refer to ref.name on all types of references
38
+ def name
39
+ self.subject || self.excerpt
40
+ end
24
41
 
25
42
  def save
26
43
  self[:file_ids] ||= []
27
- response = Conversation.create(self.attributes)
28
- self.conversation_id = response['conversation_id']
44
+ model = self.class.create(self.attributes)
45
+ self.attributes = model.attributes
29
46
  end
30
-
31
- handle_api_errors_for :save # Call must be made after the methods to handle have been defined
32
-
47
+
33
48
  class << self
49
+ # @see https://developers.podio.com/doc/conversations/get-conversations-34822801
50
+ def find_all(options={})
51
+ list Podio.connection.get { |req|
52
+ req.url("/conversation/", options)
53
+ }.body
54
+ end
55
+
56
+ # @see https://developers.podio.com/doc/conversations/get-flagged-conversations-35466860
57
+ def find_all_by_flag(flag, options={})
58
+ list Podio.connection.get { |req|
59
+ req.url("/conversation/#{flag}/", options)
60
+ }.body
61
+ end
62
+
63
+ # @see https://developers.podio.com/doc/conversations/search-conversations-36885550
64
+ def search(options={})
65
+ list Podio.connection.get { |req|
66
+ req.url "/conversation/search/", options
67
+ }.body
68
+ end
69
+
70
+ # @see https://developers.podio.com/doc/conversations/get-conversation-22369
34
71
  def find(conversation_id)
35
72
  member Podio.connection.get("/conversation/#{conversation_id}").body
36
73
  end
37
74
 
75
+ # @see https://developers.podio.com/doc/conversations/get-conversations-on-object-22443
38
76
  def find_all_for_reference(ref_type, ref_id)
39
77
  list Podio.connection.get("/conversation/#{ref_type}/#{ref_id}/").body
40
78
  end
41
79
 
80
+ # @see https://developers.podio.com/doc/conversations/get-existing-direct-conversation-44969910
81
+ def find_direct_with_user(user_id)
82
+ member Podio.connection.get("/conversation/direct/#{user_id}").body
83
+ end
84
+
85
+ # @see https://developers.podio.com/doc/conversations/create-conversation-v2-37301474
42
86
  def create(attributes)
43
87
  response = Podio.connection.post do |req|
44
- req.url '/conversation/'
88
+ req.url '/conversation/v2/'
45
89
  req.body = attributes
46
90
  end
47
- response.body
91
+ member response.body
48
92
  end
49
93
 
94
+ # @see https://developers.podio.com/doc/conversations/create-conversation-on-object-22442
50
95
  def create_for_reference(ref_type, ref_id, attributes)
51
96
  response = Podio.connection.post do |req|
52
97
  req.url "/conversation/#{ref_type}/#{ref_id}/"
@@ -54,7 +99,8 @@ class Podio::Conversation < ActivePodio::Base
54
99
  end
55
100
  response.body
56
101
  end
57
-
102
+
103
+ # @see https://developers.podio.com/doc/conversations/reply-to-conversation-22444
58
104
  def create_reply(conversation_id, text, file_ids=[], embed_id=nil, embed_file_id=nil)
59
105
  response = Podio.connection.post do |req|
60
106
  req.url "/conversation/#{conversation_id}/reply"
@@ -62,7 +108,16 @@ class Podio::Conversation < ActivePodio::Base
62
108
  end
63
109
  response.body['message_id']
64
110
  end
65
-
111
+
112
+ # @see https://developers.podio.com/doc/conversations/add-participants-384261
113
+ def add_participants(conversation_id, participants)
114
+ response = Podio.connection.post do |req|
115
+ req.url "/conversation/#{conversation_id}/participant/"
116
+ req.body = { :participants => participants }
117
+ end
118
+ response.body
119
+ end
120
+
66
121
  def add_participant(conversation_id, user_id)
67
122
  response = Podio.connection.post do |req|
68
123
  req.url "/conversation/#{conversation_id}/participant/"
@@ -70,6 +125,52 @@ class Podio::Conversation < ActivePodio::Base
70
125
  end
71
126
  response.body
72
127
  end
73
-
128
+
129
+ # @see https://developers.podio.com/doc/conversations/mark-all-conversations-as-read-38080233
130
+ def mark_all_as_read
131
+ Podio.connection.post("/conversation/read").status
132
+ end
133
+
134
+ # @see https://developers.podio.com/doc/conversations/mark-conversation-as-read-35441525
135
+ def mark_as_read(conversation_id)
136
+ response = Podio.connection.post do |req|
137
+ req.url "/conversation/#{conversation_id}/read"
138
+ end
139
+ response.status
140
+ end
141
+
142
+ # @see https://developers.podio.com/doc/conversations/mark-conversation-as-unread-35441542
143
+ def mark_as_unread(conversation_id)
144
+ Podio.connection.delete("/conversation/#{conversation_id}/read").status
145
+ end
146
+
147
+ # @see https://developers.podio.com/doc/conversations/star-conversation-35106944
148
+ def star(conversation_id)
149
+ response = Podio.connection.post do |req|
150
+ req.url "/conversation/#{conversation_id}/star"
151
+ end
152
+ response.status
153
+ end
154
+
155
+ # @see https://developers.podio.com/doc/conversations/unstar-conversation-35106990
156
+ def unstar(conversation_id)
157
+ Podio.connection.delete("/conversation/#{conversation_id}/star").status
158
+ end
159
+
160
+ # @see https://developers.podio.com/doc/conversations/get-flagged-conversation-counts-35467925
161
+ def unread_count
162
+ Podio.connection.get("/conversation/unread/count").body['value']
163
+ end
164
+
165
+ # @see https://developers.podio.com/doc/conversations/get-flagged-conversation-counts-35467925
166
+ def starred_count
167
+ Podio.connection.get("/conversation/starred/count").body['value']
168
+ end
169
+
170
+ # @see https://developers.podio.com/doc/conversations/leave-conversation-35483748
171
+ def leave(conversation_id)
172
+ Podio.connection.post("/conversation/#{conversation_id}/leave")
173
+ end
174
+
74
175
  end
75
176
  end
@@ -0,0 +1,51 @@
1
+ # @see https://developers.podio.com/doc/conversations
2
+ class Podio::ConversationEvent < ActivePodio::Base
3
+ property :event_id, :integer
4
+ property :action, :string # message, participant_add, participant_leave
5
+ property :created_on, :datetime
6
+
7
+ has_one :data, :class_property => :action, :class_map => { :message => 'ConversationMessage', :participant_leave => 'User', :participant_add => 'User', :live_start => 'Live', :live_end => 'Live', :live_accept => 'Live', :live_decline => 'Live', :subject_change => 'User' }
8
+ has_one :created_by, :class => 'ByLine'
9
+ has_one :created_via, :class => 'Via'
10
+
11
+ alias_method :id, :event_id
12
+
13
+ class << self
14
+ # @see https://developers.podio.com/doc/conversations/get-conversation-events-35440697
15
+ def find_all(conversation_id, options = {})
16
+ list Podio.connection.get { |req|
17
+ req.url("/conversation/#{conversation_id}/event/", options)
18
+ }.body
19
+ end
20
+
21
+ def add_participants(conversation_id, participants)
22
+ response = Podio.connection.post do |req|
23
+ req.url "/conversation/#{conversation_id}/participant/v2/"
24
+ req.body = { :participants => participants }
25
+ end
26
+ list response.body
27
+ end
28
+
29
+ def create_reply(conversation_id, text, file_ids=[], embed_id=nil, embed_file_id=nil)
30
+ response = Podio.connection.post do |req|
31
+ req.url "/conversation/#{conversation_id}/reply/v2"
32
+ req.body = {:text => text, :file_ids => file_ids, :embed_id => embed_id, :embed_file_id => embed_file_id}
33
+ end
34
+ member response.body
35
+ end
36
+
37
+ # @see https://developers.podio.com/doc/conversations/get-conversation-event-35628220
38
+ def find(id)
39
+ member Podio.connection.get("/conversation/event/#{id}").body
40
+ end
41
+
42
+ def change_subject(conversation_id, subject)
43
+ response = Podio.connection.put do |req|
44
+ req.url "/conversation/#{conversation_id}/subject"
45
+ req.body = { :subject => subject }
46
+ end
47
+
48
+ member response.body
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,4 @@
1
+ # @see https://developers.podio.com/doc/conversations
1
2
  class Podio::ConversationMessage < ActivePodio::Base
2
3
  property :message_id, :integer
3
4
  property :embed_id, :integer
@@ -9,6 +10,6 @@ class Podio::ConversationMessage < ActivePodio::Base
9
10
  has_one :embed_file, :class => 'FileAttachment'
10
11
  has_one :created_by, :class => 'ByLine'
11
12
  has_many :files, :class => 'FileAttachment'
12
-
13
+
13
14
  alias_method :id, :message_id
14
15
  end
@@ -1,9 +1,10 @@
1
+ # @see https://developers.podio.com/doc/conversations
1
2
  class Podio::ConversationParticipant < ActivePodio::Base
2
3
  property :created_on, :datetime
3
-
4
+
4
5
  has_one :user, :class => 'User'
5
6
  has_one :created_by, :class => 'ByLine'
6
7
  has_one :created_via, :class => 'Via'
7
8
 
8
9
  delegate :id, :name, :avatar, :link, :to => :user, :prefix => false
9
- end
10
+ end
@@ -0,0 +1,35 @@
1
+ class Podio::DateElectionVote < ActivePodio::Base
2
+ property :date_option_id, :integer
3
+ property :value, :boolean
4
+
5
+ has_one :user, :class => 'Contact'
6
+ end
7
+
8
+ class Podio::DateElectionOption < ActivePodio::Base
9
+ property :date_option_id, :integer
10
+ property :start_utc, :datetime
11
+ property :end_utc, :datetime
12
+ end
13
+
14
+ class Podio::DateElection < ActivePodio::Base
15
+ property :date_election_id, :integer
16
+
17
+ has_many :votes, :class => 'DateElectionVote'
18
+ has_many :options, :class => 'DateElectionOption'
19
+
20
+ class << self
21
+ def vote(date_election_id, date_option_id, value)
22
+ Podio.connection.post do |req|
23
+ req.url "/date_election/#{date_election_id}/vote"
24
+ req.body = {:date_option_id => date_option_id.to_i, :value => value}
25
+ end
26
+ end
27
+
28
+ def choose(date_election_id, date_option_id)
29
+ Podio.connection.post do |req|
30
+ req.url "/date_election/#{date_election_id}/choose"
31
+ req.body = {:date_option_id => date_option_id.to_i}
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,46 @@
1
+ # @see https://developers.podio.com/doc/email
2
+ class Podio::EmailContact < ActivePodio::Base
3
+
4
+ property :name, :string
5
+ property :mail, :string
6
+
7
+ class << self
8
+ # @see https://developers.podio.com/doc/email/get-global-contact-13716154
9
+ def get_global(name)
10
+ member Podio.connection.get("/email/contact/#{name}").body
11
+ end
12
+
13
+ # @see https://developers.podio.com/doc/email/get-email-contact-for-reference-13716555
14
+ def get_ref(name, ref_type, ref_id)
15
+ member Podio.connection.get("/email/contact/#{name}/#{ref_type}/#{ref_id}").body
16
+ end
17
+
18
+ # @see https://developers.podio.com/doc/email/get-global-email-contact-as-vcard-13624848
19
+ def get_global_as_vcard(name)
20
+ Podio.connection.get("/email/contact/#{name}/vcard").body
21
+ end
22
+
23
+ # @see https://developers.podio.com/doc/email/get-email-contact-for-reference-as-vcard-13628255
24
+ def get_ref_as_vcard(name, ref_type, ref_id)
25
+ Podio.connection.get("/email/contact/#{name}/#{ref_type}/#{ref_id}/vcard").body
26
+ end
27
+
28
+ # @see https://developers.podio.com/doc/email/export-global-email-contact-to-linked-account-13629508
29
+ def export_global(name, linked_acc_id)
30
+ Podio.connection.post { |req|
31
+ req.url "/email/contact/#{name}/export"
32
+ req.body = { :linked_account_id => linked_acc_id }
33
+ }.body
34
+ end
35
+
36
+ # @see https://developers.podio.com/doc/email/export-email-contact-for-reference-to-linked-account-13628926
37
+ def export_ref(name, ref_type, ref_id, linked_acc_id)
38
+ Podio.connection.post { |req|
39
+ req.url "/email/contact/#{name}/#{ref_type}/#{ref_id}/export"
40
+ req.body = { :linked_account_id => linked_acc_id }
41
+ }.body
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -1,8 +1,8 @@
1
+ # @see https://developers.podio.com/doc/email
1
2
  class Podio::EmailSubscriptionSetting < ActivePodio::Base
2
3
  include ActivePodio::Updatable
3
4
 
4
5
  property :digest, :boolean
5
- property :bulletin, :boolean
6
6
  property :reference, :boolean
7
7
  property :message, :boolean
8
8
  property :reminder, :boolean
@@ -21,12 +21,14 @@ class Podio::EmailSubscriptionSetting < ActivePodio::Base
21
21
  end
22
22
 
23
23
  class << self
24
+ # @see https://developers.podio.com/doc/email/get-groups-333977
24
25
  def get_groups()
25
26
  member Podio.connection.get { |req|
26
27
  req.url("/email/group/", {})
27
28
  }.body
28
29
  end
29
30
 
31
+ # @see https://developers.podio.com/doc/email/update-groups-333981
30
32
  def update_groups(options)
31
33
  Podio.connection.put { |req|
32
34
  req.url "/email/group/"
@@ -34,32 +36,11 @@ class Podio::EmailSubscriptionSetting < ActivePodio::Base
34
36
  }.body
35
37
  end
36
38
 
39
+ # @see https://developers.podio.com/doc/email/unsubscribe-from-all-304917
37
40
  def unsubscribe(username)
38
41
  Podio.connection.post("/email/unsubscribe/#{username}").status
39
42
  end
40
43
 
41
- def get_global_email_as_vcard(name)
42
- Podio.connection.get("/email/contact/#{name}/vcard").body
43
- end
44
-
45
- def get_ref_email_as_vcard(name, ref_type, ref_id)
46
- Podio.connection.get("/email/contact/#{name}/#{ref_type}/#{ref_id}/vcard").body
47
- end
48
-
49
- def export_global_contact_to_linked_acc(name, linked_acc_id)
50
- Podio.connection.post { |req|
51
- req.url "/email/contact/#{name}/export"
52
- req.body = { :linked_account_id => linked_acc_id }
53
- }.body
54
- end
55
-
56
- def export_ref_contact_to_linked_acc(name, ref_type, ref_id, linked_acc_id)
57
- Podio.connection.post { |req|
58
- req.url "/email/contact/#{name}/#{ref_type}/#{ref_id}/export"
59
- req.body = { :linked_account_id => linked_acc_id }
60
- }.body
61
- end
62
-
63
44
  end
64
45
 
65
46
  end