teamlab 0.2.1 → 0.2.2
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/README.md +13 -8
- data/lib/teamlab/Modules/Calendar.rb +9 -9
- data/lib/teamlab/Modules/Community.rb +4 -4
- data/lib/teamlab/Modules/Crm.rb +69 -70
- data/lib/teamlab/Modules/Files.rb +1 -1
- data/lib/teamlab/Modules/Mail.rb +232 -0
- data/lib/teamlab/Modules/People.rb +7 -7
- data/lib/teamlab/Modules/Project.rb +18 -8
- data/lib/teamlab/Request.rb +1 -1
- data/lib/teamlab/Response.rb +2 -1
- data/lib/teamlab/version.rb +1 -1
- data/spec/lib/Teamlab_spec.rb +1872 -470
- data/spec/support/http_data.rb +16 -55
- metadata +2 -2
data/lib/teamlab/Modules/Mail.rb
CHANGED
@@ -5,22 +5,254 @@ module Teamlab
|
|
5
5
|
@request = Teamlab::Request.new('mail')
|
6
6
|
end
|
7
7
|
|
8
|
+
#region Messages
|
9
|
+
|
10
|
+
def get_filtered_messages(page, options = {})
|
11
|
+
@request.get(%w(messages), {page: page}.merge(options))
|
12
|
+
end
|
13
|
+
|
8
14
|
def get_message(id, options = {})
|
9
15
|
@request.get(['messages', id.to_s], options)
|
10
16
|
end
|
11
17
|
|
18
|
+
def get_message_template
|
19
|
+
@request.get(%w(messages template))
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_message_modify_date
|
23
|
+
@request.get(%w(messages modify_date))
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_previous_or_next_message_id(id, direction, options = {})
|
27
|
+
@request.get(['messages', id.to_s, direction.to_s], options)
|
28
|
+
end
|
29
|
+
|
30
|
+
def set_message_crm_status(emails, *user_ids)
|
31
|
+
@request.post(%w(messages update_crm), {emails: emails, userIds: user_ids.flatten})
|
32
|
+
end
|
33
|
+
|
34
|
+
def attach_teamlab_document(message_id, file_id, options = {})
|
35
|
+
@request.post(['messages', message_id.to_s, 'document'], {fileId: file_id}.merge(options))
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_message_status(status, *ids)
|
39
|
+
@request.put(%w(messages mark), {status: status, ids: ids.flatten})
|
40
|
+
end
|
41
|
+
|
42
|
+
def move_messages_to_folder(folder_id, *message_ids)
|
43
|
+
@request.put(%w(,essages move), folderId: folder_id, ids: message_ids.flatten)
|
44
|
+
end
|
45
|
+
|
46
|
+
def send_message(id, options = {})
|
47
|
+
@request.put(%w(messages send), {id: id}.merge(options))
|
48
|
+
end
|
49
|
+
|
50
|
+
def save_message(id, options = {})
|
51
|
+
@request.put(%w(messages save), {id: id}.merge(options))
|
52
|
+
end
|
53
|
+
|
54
|
+
def remove_messages(*ids)
|
55
|
+
@request.put(%w(messages remove), ids: ids.flatten)
|
56
|
+
end
|
57
|
+
|
58
|
+
def restore_message_to_folders
|
59
|
+
@request.put(%w(messages restore))
|
60
|
+
end
|
61
|
+
|
62
|
+
def export_mail_to_crm_relations_history(message_id, *crm_contact_ids)
|
63
|
+
@request.put(%w(messages crm export), messageId: message_id, crmContactIds: crm_contact_ids.flatten)
|
64
|
+
end
|
65
|
+
|
66
|
+
def export_attachments_to_my_docs(attachment_id)
|
67
|
+
@request.put(%w(attachment mydocuments export), attachmentId: attachment_id)
|
68
|
+
end
|
69
|
+
|
70
|
+
def export_all_message_attachments_to_my_docs(message_id)
|
71
|
+
@request.put(%w(attachments mydocuments export), messageId: message_id)
|
72
|
+
end
|
73
|
+
|
74
|
+
def delete_attachment_from_message(message_id, attachment_id)
|
75
|
+
@request.delete(['messages', message_id.to_s, 'attachments', attachment_id.to_s])
|
76
|
+
end
|
77
|
+
|
78
|
+
#endregion
|
79
|
+
|
80
|
+
#region HelpCenter
|
81
|
+
|
82
|
+
def get_html_of_help_center
|
83
|
+
@request.get(%w(helpcenter))
|
84
|
+
end
|
85
|
+
|
86
|
+
#endregion
|
87
|
+
|
88
|
+
def get_meail_signature(mailbox_id)
|
89
|
+
@request.get(['signature', mailbox_id.to_s])
|
90
|
+
end
|
91
|
+
|
92
|
+
def update_signature(mailbox_id, html, options = {})
|
93
|
+
@request.post(['signature', 'update', mailbox_id.to_s], {html: html}.merge(options))
|
94
|
+
end
|
95
|
+
|
96
|
+
#region Accounts
|
97
|
+
|
12
98
|
def get_account_list
|
13
99
|
@request.get(%w(accounts))
|
14
100
|
end
|
15
101
|
|
102
|
+
def get_account_by_email(email)
|
103
|
+
@request.get(['accounts', email.to_s])
|
104
|
+
end
|
105
|
+
|
106
|
+
def get_default_account_settings(email, options = {})
|
107
|
+
@request.get(['accounts', email.to_s, 'default'], options)
|
108
|
+
end
|
109
|
+
|
110
|
+
def create_account_with_custom_mail_service(name, email, account, password, options = {})
|
111
|
+
@request.post(%w(accounts), {name: name, email: email, account: account, password: password}.merge(options))
|
112
|
+
end
|
113
|
+
|
114
|
+
def create_oauth_account(email, token, options = {})
|
115
|
+
@request.post(%w(accounts oauth), {email: email, token: token}.merge(options))
|
116
|
+
end
|
117
|
+
|
16
118
|
def create_account_by_email(email, password)
|
17
119
|
@request.post(%w(accounts simple), {email: email, password: password})
|
18
120
|
end
|
19
121
|
|
122
|
+
def update_account(name, email, password, options = {})
|
123
|
+
@request.put(%w(accounts), {name: name, email: email, password: password}.merge(options))
|
124
|
+
end
|
125
|
+
|
126
|
+
def set_account_state(email, state)
|
127
|
+
@request.put(['accounts', email.to_s, 'state'], state: state)
|
128
|
+
end
|
129
|
+
|
130
|
+
def set_account_state_by_mailbox(mailbox_id, email_in_folder)
|
131
|
+
@request.put(['accounts', mailbox_id.to_s, 'emailinfolder'], emailInFolder: email_in_folder)
|
132
|
+
end
|
133
|
+
|
20
134
|
def delete_account(email)
|
21
135
|
@request.delete(['accounts', email.to_s])
|
22
136
|
end
|
23
137
|
|
138
|
+
#endregion
|
139
|
+
|
140
|
+
#region Alerts
|
141
|
+
|
142
|
+
def get_alerts_list
|
143
|
+
@request.get('alert')
|
144
|
+
end
|
145
|
+
|
146
|
+
def delete_alert_by_id(id)
|
147
|
+
@request.delete(['alert', id.to_s])
|
148
|
+
end
|
149
|
+
|
150
|
+
#endregion
|
151
|
+
|
152
|
+
#region Contacts
|
153
|
+
|
154
|
+
def get_contact_list_for_auto_complete(term)
|
155
|
+
@request.get(%w(contacts), term: term)
|
156
|
+
end
|
157
|
+
|
158
|
+
def get_crm_linked_entities(message_id)
|
159
|
+
@request.get(%w(crm linked entities), messageId: message_id)
|
160
|
+
end
|
161
|
+
|
162
|
+
#endregion
|
163
|
+
|
164
|
+
#region Conversations
|
165
|
+
|
166
|
+
def get_filtered_conversations(options = {})
|
167
|
+
@request.get(%w(conversations), options)
|
168
|
+
end
|
169
|
+
|
170
|
+
def get_messages_linked_into_one_chain(message_id, load_all_content)
|
171
|
+
@request.get(['conversation', message_id.to_s], loadAllContent: load_all_content)
|
172
|
+
end
|
173
|
+
|
174
|
+
def get_previous_or_next_conversation_id(id, direction, options = {})
|
175
|
+
@request.get(['conversation', id.to_s, direction.to_s], options)
|
176
|
+
end
|
177
|
+
|
178
|
+
def is_chain_crm_linked_by_message(message_id)
|
179
|
+
@request.get(%w(conversations link crm status), messageId: message_id)
|
180
|
+
end
|
181
|
+
|
182
|
+
def move_conversations_to_folder(folder_id, *message_ids)
|
183
|
+
@request.put(%w(conversations move), folderId: folder_id, ids: message_ids.flatten)
|
184
|
+
end
|
185
|
+
|
186
|
+
def set_conversations_status(status, *ids)
|
187
|
+
@request.put(%w(conversations mark), status: status, ids: ids.flatten)
|
188
|
+
end
|
189
|
+
|
190
|
+
def remove_conversations(*ids)
|
191
|
+
@request.put(%w(conversations remove), ids: ids.flatten)
|
192
|
+
end
|
193
|
+
|
194
|
+
def restore_conversations_to_folders(*ids)
|
195
|
+
@request.put(%w(conversations restore), ids: ids.flatten)
|
196
|
+
end
|
197
|
+
|
198
|
+
def mark_conversation_as_crm_linked(message_id, *crm_contact_ids)
|
199
|
+
@request.put(%w(conversations crm mark), messageId: message_id, crmContactIds: crm_contact_ids.flatten)
|
200
|
+
end
|
201
|
+
|
202
|
+
def unmark_conversation_link_with_crm(message_id, *crm_contact_ids)
|
203
|
+
@request.put(%w(conversations crm unmark), messageId: message_id, crmContactIds: crm_contact_ids.flatten)
|
204
|
+
end
|
205
|
+
|
206
|
+
def add_tag_to_conversations(tag_id, *conversation_ids)
|
207
|
+
@request.put(['conversations', 'tag', tag_id.to_s, 'set'], messages: conversation_ids.flatten)
|
208
|
+
end
|
209
|
+
|
210
|
+
def remove_tag_from_conversations(tag_id, *conversation_ids)
|
211
|
+
@request.put(['conversations', 'tag', tag_id.to_s, 'unset'], messages: conversation_ids.flatten)
|
212
|
+
end
|
213
|
+
|
214
|
+
#endregion
|
215
|
+
|
216
|
+
#region Folders
|
217
|
+
|
218
|
+
def get_folders(options = {})
|
219
|
+
@request.get(%w(folders), options)
|
220
|
+
end
|
221
|
+
|
222
|
+
def get_folder_change_date(folder_id)
|
223
|
+
@request.get(['folders', folder_id.to_s, 'modify_date'])
|
224
|
+
end
|
225
|
+
|
226
|
+
def remove_all_messages_from_folder(folder_id)
|
227
|
+
@request.get(['folders', folder_id.to_s, 'messages'])
|
228
|
+
end
|
229
|
+
|
230
|
+
#endregion
|
231
|
+
|
232
|
+
#region GUID
|
233
|
+
|
234
|
+
def generate_custom_guid
|
235
|
+
@request.get(%w(random_guid))
|
236
|
+
end
|
237
|
+
|
238
|
+
#endregion
|
239
|
+
|
240
|
+
#region IMAGES
|
241
|
+
|
242
|
+
def get_trusted_addresses
|
243
|
+
@request.get(%w(display_messages addresses))
|
244
|
+
end
|
245
|
+
|
246
|
+
def add_trusted_address(address)
|
247
|
+
@request.post(%w(display_messages addresses), addres: address)
|
248
|
+
end
|
249
|
+
|
250
|
+
def remove_from_trusted_addresses(address)
|
251
|
+
@request.delete(%w(display_messages addresses), addres: address)
|
252
|
+
end
|
253
|
+
|
254
|
+
#endregion
|
255
|
+
|
24
256
|
#region Tags
|
25
257
|
|
26
258
|
def get_tag_list
|
@@ -15,7 +15,7 @@ module Teamlab
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def search_people(query)
|
18
|
-
@request.get(['search'], {
|
18
|
+
@request.get(['search'], { query: query })
|
19
19
|
end
|
20
20
|
|
21
21
|
def filter_people(filters)
|
@@ -35,7 +35,7 @@ module Teamlab
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def remind_password(user_id, email)
|
38
|
-
@request.get([user_id, 'password'], {
|
38
|
+
@request.get([user_id, 'password'], { email: email })
|
39
39
|
end
|
40
40
|
|
41
41
|
def search_with_status(status, query)
|
@@ -43,7 +43,7 @@ module Teamlab
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def add_user(is_visitor, email, firstname, lastname, options = {})
|
46
|
-
@request.post(nil , {
|
46
|
+
@request.post(nil , { isVisitor: is_visitor, email: email, firstname: firstname, lastname: lastname}.merge(options))
|
47
47
|
end
|
48
48
|
|
49
49
|
def active(options = {})
|
@@ -54,16 +54,16 @@ module Teamlab
|
|
54
54
|
@request.post([user_id, 'contacts'], contacts)
|
55
55
|
end
|
56
56
|
|
57
|
-
def send_invite(user_ids
|
58
|
-
@request.put(['invite'], {
|
57
|
+
def send_invite(*user_ids)
|
58
|
+
@request.put(['invite'], { userIds: user_ids.flatten })
|
59
59
|
end
|
60
60
|
|
61
61
|
def delete(*user_ids)
|
62
|
-
@request.put(['delete'], {
|
62
|
+
@request.put(['delete'], { userIds: user_ids.flatten })
|
63
63
|
end
|
64
64
|
|
65
65
|
def update_user(user_id, is_visitor, email, firstname, lastname, options = {})
|
66
|
-
@request.put([user_id.to_s], {
|
66
|
+
@request.put([user_id.to_s], { isVisitor: is_visitor, email: email, firstname: firstname, lastname: lastname}.merge(options) )
|
67
67
|
end
|
68
68
|
|
69
69
|
def change_people_type(type, user_ids)
|
@@ -257,8 +257,8 @@ module Teamlab
|
|
257
257
|
@request.put([id.to_s], { title: title, responsibleId: responsible_id }.merge(options))
|
258
258
|
end
|
259
259
|
|
260
|
-
def set_task_order(
|
261
|
-
@request.put([
|
260
|
+
def set_task_order(project_id, order)
|
261
|
+
@request.put([project_id.to_s, 'order'], order: order)
|
262
262
|
end
|
263
263
|
|
264
264
|
def update_project_task(task_id, title, options = {})
|
@@ -371,6 +371,10 @@ module Teamlab
|
|
371
371
|
@request.delete(['task', task_id.to_s, subtask_id.to_s])
|
372
372
|
end
|
373
373
|
|
374
|
+
#endregion
|
375
|
+
|
376
|
+
#region Contacts
|
377
|
+
|
374
378
|
def get_projects_for_contact(contact_id)
|
375
379
|
@request.get(['contact', contact_id.to_s])
|
376
380
|
end
|
@@ -383,6 +387,10 @@ module Teamlab
|
|
383
387
|
@request.delete([project_id.to_s, 'contact'], contactId: contact_id)
|
384
388
|
end
|
385
389
|
|
390
|
+
#endregion
|
391
|
+
|
392
|
+
#region Tags
|
393
|
+
|
386
394
|
def get_project_tags
|
387
395
|
@request.get(%w(tag))
|
388
396
|
end
|
@@ -395,6 +403,8 @@ module Teamlab
|
|
395
403
|
@request.get(%w(tag search), tagName: tag_name)
|
396
404
|
end
|
397
405
|
|
406
|
+
#endregion
|
407
|
+
|
398
408
|
def get_upcoming_milestones
|
399
409
|
@request.get(%w(milestone))
|
400
410
|
end
|
@@ -447,20 +457,20 @@ module Teamlab
|
|
447
457
|
@request.get(['task', task_id.to_s, 'time'])
|
448
458
|
end
|
449
459
|
|
450
|
-
def add_task_time(task_id,
|
451
|
-
@request.post(['task', task_id.to_s, 'time'], { date: date,
|
460
|
+
def add_task_time(task_id, date, person_id, project_id, options = {})
|
461
|
+
@request.post(['task', task_id.to_s, 'time'], { date: date, personId: person_id, projectId: project_id }.merge(options))
|
452
462
|
end
|
453
463
|
|
454
|
-
def update_task_time(time_id,
|
455
|
-
@request.put(['time', time_id.to_s],
|
464
|
+
def update_task_time(time_id, date, person_id, options = {})
|
465
|
+
@request.put(['time', time_id.to_s], { date: date, personId: person_id }.merge(options))
|
456
466
|
end
|
457
467
|
|
458
468
|
def update_time_status_of_payment(time_ids, status)
|
459
469
|
@request.put(%w(time times status), timeids: time_ids, status: status)
|
460
470
|
end
|
461
471
|
|
462
|
-
def delete_time_spents(time_ids)
|
463
|
-
@request.delete(%w(time times remove), timeIds: time_ids)
|
472
|
+
def delete_time_spents(*time_ids)
|
473
|
+
@request.delete(%w(time times remove), timeIds: time_ids.flatten)
|
464
474
|
end
|
465
475
|
end
|
466
476
|
end
|
data/lib/teamlab/Request.rb
CHANGED
data/lib/teamlab/Response.rb
CHANGED
@@ -6,9 +6,10 @@ module Teamlab
|
|
6
6
|
|
7
7
|
def initialize(http_response)
|
8
8
|
@code = http_response.code
|
9
|
+
@success = @code < 400
|
10
|
+
fail 'Error 404' if @code == 404
|
9
11
|
@body = http_response.respond_to?(:parsed_response) && http_response.parsed_response.key?('result') ? http_response.parsed_response['result'] : nil
|
10
12
|
@error = @body['error']['message'] if @body.key?('error') && @body['error'].key?('message')
|
11
|
-
@success = @code < 400
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
data/lib/teamlab/version.rb
CHANGED