teamlab 0.1

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.
@@ -0,0 +1,193 @@
1
+ module Teamlab
2
+ class Files
3
+
4
+ def initialize
5
+ @request = Teamlab::Request
6
+ end
7
+
8
+ def get_my_files
9
+ @request.get(['@my'])
10
+ end
11
+
12
+ def get_trash
13
+ @request.get(['@trash'])
14
+ end
15
+
16
+ def get_folder(folder_id, options = {})
17
+ @request.get([folder_id.to_s], options)
18
+ end
19
+
20
+ def new_folder(folder_id, title)
21
+ @request.post([folder_id.to_s], title: title)
22
+ end
23
+
24
+ def rename_folder(folder_id, title)
25
+ @request.put([folder_id.to_s], title: title)
26
+ end
27
+
28
+ def get_shared_docs
29
+ @request.get(['@share'])
30
+ end
31
+
32
+ def get_common_docs
33
+ @request.get(['@common'])
34
+ end
35
+
36
+ def search(query)
37
+ @request.get(['@search', query.to_s])
38
+ end
39
+
40
+ def get_recent_upload_files(folder_id)
41
+ @request.get([folder_id.to_s, 'feeds'])
42
+ end
43
+
44
+ def get_share_link(file_id, share)
45
+ @request.put([file_id, 'sharedlink'], share: share)
46
+ end
47
+
48
+ #================================== TODO: UPLOAD FILES ================================
49
+
50
+ def upload_to_my_docs(*files)
51
+ @request.post(['@my', 'upload'], files, headers: { 'Content-Type' => 'multipart/form-data' } ) #НЕ МАТАТ
52
+ end
53
+
54
+ #================================== TODO: UPLOAD FILES ================================
55
+
56
+ def upload_to_common_docs(*files)
57
+ @request.post(['@common', 'upload'], files, headers: { 'Content-Type' => 'multipart/form-data' } ) #НЕ МАТАТ
58
+ end
59
+
60
+ #================================== TODO: UPLOAD FILES ================================
61
+
62
+ def upload_to_folder(folder_id, *files)
63
+ @request.post([folder_id.to_s, 'upload'], files, headers: { 'Content-Type' => 'multipart/form-data' } ) #НЕ МАТАТ
64
+ end
65
+
66
+ #================================== TODO: UPLOAD FILES ================================
67
+
68
+ def chunked_upload(folder_id, filename, file_size)
69
+ @request.post([folder_id.to_s, 'upload', 'create_session'], fileName: filename, fileSize: file_size) #НЕ МАТАТ
70
+ end
71
+
72
+ def create_txt_in_my_docs(title, content)
73
+ @request.post(['@my', 'text'], title: title.to_s, content: content.to_s)
74
+ end
75
+
76
+ def create_html_in_my_docs(title, content)
77
+ @request.post(['@my', 'html'], title: title.to_s, content: content.to_s)
78
+ end
79
+
80
+ def create_txt_in_common_docs(title, content)
81
+ @request.post(['@common', 'text'], title: title.to_s, content: content.to_s)
82
+ end
83
+
84
+ def create_html_in_common_docs(title, content)
85
+ @request.post(['@common', 'html'], title: title.to_s, content: content.to_s)
86
+ end
87
+
88
+ def create_txt(folder_id, title, content)
89
+ @request.post([folder_id.to_s, 'text'], title: title.to_s, content: content.to_s)
90
+ end
91
+
92
+ def create_html(folder_id, title, content)
93
+ @request.post([folder_id.to_s, 'html'], title: title.to_s, content: content.to_s)
94
+ end
95
+
96
+ def create_file(folder_id, title)
97
+ @request.post([folder_id.to_s, 'file'], title: title.to_s)
98
+ end
99
+
100
+ def get_file_info(file_id)
101
+ @request.get(['file', file_id.to_s])
102
+ end
103
+
104
+ def get_file_history(file_id)
105
+ @request.get(['file', file_id.to_s, 'history'])
106
+ end
107
+
108
+ def get_third_party_files(source, options = {})
109
+ @request.get(['settings', 'import', source.to_s, 'data'], options)
110
+ end
111
+
112
+ def update_file_info(file_id, title, last_version)
113
+ @request.put(['file', file_id.to_s], title: title, lastVersion: last_version)
114
+ end
115
+
116
+ def finish_importing
117
+ @request.put(%w(settings import terminate))
118
+ end
119
+
120
+ def delete_file(file_id)
121
+ @request.delete(['file', file_id.to_s])
122
+ end
123
+
124
+ def delete_folder(folder_id)
125
+ @request.delete(['folder', folder_id.to_s])
126
+ end
127
+
128
+ def get_file_operations_list
129
+ @request.get(%w(fileops))
130
+ end
131
+
132
+ def move_files(dest_folder_id, options)
133
+ @request.put(%w(fileops move), { destFolderId: dest_folder_id }.merge(options))
134
+ end
135
+
136
+ def copy_to_folder(dest_folder_id, options)
137
+ @request.put(%w(fileops copy), { destFolderId: dest_folder_id }.merge(options))
138
+ end
139
+
140
+ def delete(options = {})
141
+ @request.put(%w(fileops copy), options)
142
+ end
143
+
144
+ def finish_all
145
+ @request.put(%w(fileops terminate))
146
+ end
147
+
148
+ def clear_recycle_bin
149
+ @request.put(%w(fileops emptytrash))
150
+ end
151
+
152
+ def mark_as_read
153
+ @request.put(%w(fileops markasread))
154
+ end
155
+
156
+ def finish_operations(options = {})
157
+ @request.put(%w(fileops bulkdownload), options)
158
+ end
159
+
160
+ def get_file_sharing(file_id)
161
+ @request.get(['file', file_id.to_s, 'share'])
162
+ end
163
+
164
+ def get_folder_sharing(folder_id)
165
+ @request.get(['folder', folder_id.to_s, 'share'])
166
+ end
167
+
168
+ def share_file(file_id, user_id, access_type, options = {})
169
+ @request.put(['file', file_id.to_s, 'share'], { share: { shareTo: user_id, fileShare: access_type}.merge(options) })
170
+ end
171
+
172
+ def share_folder(folder_id, user_id, access_type, options = {})
173
+ @request.put(['folder', folder_id.to_s, 'share'], { share: { shareTo: user_id, fileShare: access_type}.merge(options) })
174
+ end
175
+
176
+ def remove_file_sharing_rights(file_id, share_to_ids)
177
+ @request.delete(['file', file_id.to_s, 'share'], shareTo: share_to_ids)
178
+ end
179
+
180
+ def remove_folder_sharing_rights(folder_id, share_to_ids)
181
+ @request.delete(['folder', folder_id.to_s, 'share'], shareTo: share_to_ids)
182
+ end
183
+
184
+ def get_third_party
185
+ @request.get(%w(thirdparty))
186
+ end
187
+
188
+ def remove_third_party_account(provider_id)
189
+ @request.delete(['thirdparty', provider_id.to_s])
190
+ end
191
+
192
+ end
193
+ end
@@ -0,0 +1,49 @@
1
+ module Teamlab
2
+
3
+ class Group
4
+
5
+ def initialize
6
+ @request = Teamlab::Request
7
+ end
8
+
9
+ def get_groups
10
+ @request.get
11
+ end
12
+
13
+ def get_group(group_id)
14
+ @request.get([ group_id.to_s ])
15
+ end
16
+
17
+ def add_group(manager, name, members = [])
18
+ @request.post([''], { groupManager: manager, groupName: name, members: members})
19
+ end
20
+
21
+ def replace_members(group_id, members)
22
+ @request.post([group_id.to_s, 'members'], { members: members})
23
+ end
24
+
25
+ def update_group(group_id, options = {})
26
+ @request.put([group_id.to_s], options)
27
+ end
28
+
29
+ def add_group_users(group_id, members = [])
30
+ @request.put([group_id.to_s, 'members'], {members: members})
31
+ end
32
+
33
+ def set_group_manager(group_id, user_id)
34
+ @request.put([group_id.to_s, 'manager'], {userid: user_id})
35
+ end
36
+
37
+ def move_group_members(group_id, new_group_id)
38
+ @request.put([group_id.to_s, 'members', new_group_id.to_s])
39
+ end
40
+
41
+ def delete_group(group_id)
42
+ @request.delete([group_id.to_s])
43
+ end
44
+
45
+ def remove_group_members(group_id, members = [])
46
+ @request.delete([group_id.to_s, 'members'], members: members)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,30 @@
1
+ module Teamlab
2
+ class Mail
3
+
4
+ def initialize
5
+ @request = Teamlab::Request
6
+ end
7
+
8
+ def get_account_list
9
+ @request.get(%w(accounts))
10
+ end
11
+
12
+ def create_account_by_email(email, password)
13
+ @request.post(%w(accounts simple), {email: email, password: password})
14
+ end
15
+
16
+ def delete_account(email)
17
+ @request.delete(['accounts', email.to_s])
18
+ end
19
+
20
+ def get_tag_list
21
+ @request.get(%w(tags))
22
+ end
23
+
24
+ def create_tag(name, options = {})
25
+ @request.post(%w(tags), {name: name}.merge(options))
26
+ end
27
+
28
+ end
29
+ end
30
+
@@ -0,0 +1,97 @@
1
+ module Teamlab
2
+
3
+ class People
4
+
5
+ def initialize
6
+ @request = Teamlab::Request
7
+ end
8
+
9
+ def get_people
10
+ @request.get
11
+ end
12
+
13
+ def get_self
14
+ @request.get(['@self'])
15
+ end
16
+
17
+ def search_people(query)
18
+ @request.get(['search'], { 'query' => query })
19
+ end
20
+
21
+ def filter_people(filters)
22
+ @request.get(['filter'], filters)
23
+ end
24
+
25
+ def get_user_by_username(username)
26
+ @request.get([username.to_s])
27
+ end
28
+
29
+ def get_people_by_status(status)
30
+ @request.get(['status', status])
31
+ end
32
+
33
+ def get_people_by_search_query(query)
34
+ @request.get(['@search', query])
35
+ end
36
+
37
+ def remind_password(user_id, email)
38
+ @request.get([user_id, 'password'], { 'email' => email })
39
+ end
40
+
41
+ def search_with_status(status, query)
42
+ @request.get(['status', status.to_s, '@search', query.to_s])
43
+ end
44
+
45
+ def add_user(is_visitor, email, firstname, lastname, options = {})
46
+ @request.post(nil , { 'isVisitor' => is_visitor, 'email' => email, 'firstname' => firstname, 'lastname' =>lastname}.merge(options))
47
+ end
48
+
49
+ def active(options = {})
50
+ @request.post(['active'], options) #требуется запиливание
51
+ end
52
+
53
+ def update_contacts(user_id, contacts = {})
54
+ @request.post([user_id, 'contacts'], contacts)
55
+ end
56
+
57
+ def send_invite(user_ids = [])
58
+ @request.put(['invite'], { 'userIds' => user_ids })
59
+ end
60
+
61
+ def delete(*user_ids)
62
+ @request.put(['delete'], { 'userIds' => user_ids.flatten })
63
+ end
64
+
65
+ def update_user(user_id, is_visitor, email, firstname, lastname, options = {})
66
+ @request.put([user_id.to_s], { 'isVisitor' => is_visitor, 'email' => email, 'firstname' => firstname, 'lastname' => lastname}.merge(options) )
67
+ end
68
+
69
+ def change_people_type(type, user_ids)
70
+ @request.put(['type', type.to_s], { userIds: user_ids })
71
+ end
72
+
73
+ def update_photo(user_id, path)
74
+ @request.put([user_id.to_s, 'photo'], { files: path })
75
+ end
76
+
77
+ def change_people_status(status, user_ids)
78
+ @request.put(['status', status], { userIds: user_ids })
79
+ end
80
+
81
+ def add_contacts(contacts, user_id)
82
+ @request.put([user_id, 'contacts'], { contacts: contacts })
83
+ end
84
+
85
+ def delete_user(user_id)
86
+ @request.delete([user_id])
87
+ end
88
+
89
+ def delete_photo(user_id)
90
+ @request.delete([user_id, 'photo'])
91
+ end
92
+
93
+ def delete_contacts(user_id, contacts)
94
+ @request.delete([user_id, 'contacts'], { contacts: contacts })
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,437 @@
1
+ module Teamlab
2
+ class Project
3
+ def initialize
4
+ @request = Teamlab::Request
5
+ end
6
+
7
+ def get_import_status
8
+ @request.get(['import'])
9
+ end
10
+
11
+ def add_importing_url_to_queue(company_url, username, password, import_closed, disable_notifications, import_users_as_collaborators, projects = [])
12
+ @request.post(%w(import), url: company_url, userName: username, password: password, importClosed: import_closed,
13
+ disableNotifications: disable_notifications, importUsersAsCollaborators: import_users_as_collaborators, projects: projects)
14
+ end
15
+
16
+ def get_projects_for_import(url, username, password)
17
+ @request.post(%w(import projects), url: url, userName: username, password: password)
18
+ end
19
+
20
+ def get_latest_discussion_messages
21
+ @request.get(['message'])
22
+ end
23
+
24
+ def get_message_by_filter(options = {})
25
+ @request.get(%w(message filter), options)
26
+ end
27
+
28
+ def get_messages(project_id)
29
+ @request.get([project_id.to_s, 'message'])
30
+ end
31
+
32
+ def check_subscription_to_discussion(message_id)
33
+ @request.get(['message', message_id.to_s, 'subscribe'])
34
+ end
35
+
36
+ def add_message(project_id, title, content, participants, options = [])
37
+ @request.get([project_id.to_s, 'message'], { title: title, content: content, participants: participants }.merge(options))
38
+ end
39
+
40
+ def update_message(message_id, project_id, title, content, options = {})
41
+ @request.put(['message', message_id.to_s], { projectid: project_id, title: title, content: content }.merge(options))
42
+ end
43
+
44
+ def subscribe_to_message(message_id)
45
+ @request.put(['message', message_id.to_s, 'subscribe'])
46
+ end
47
+
48
+ def delete_message(message_id)
49
+ @request.delete(['message', message_id.to_s])
50
+ end
51
+
52
+ def get_task_files(task_id)
53
+ @request.get(['task', task_id.to_s, 'files'])
54
+ end
55
+
56
+ def get_entity_files(entity_id, entity_type)
57
+ @request.get([entity_id.to_s, 'entityfiles'], entityType: entity_type)
58
+ end
59
+
60
+ def get_message_files(message_id)
61
+ @request.get(['message', message_id.to_s, 'files'])
62
+ end
63
+
64
+ def upload_file_to_task(task_id, *files)
65
+ @request.post(['task', task_id.to_s, 'files'], files: files.flatten)
66
+ end
67
+
68
+ def upload_file_to_message(message_id, *files)
69
+ @request.post(['message', message_id.to_s, 'files'], files: files.flatten)
70
+ end
71
+
72
+ def detach_file_from_task(task_id, file_id)
73
+ @request.delete(['task', task_id.to_s, 'files'], fileid: file_id)
74
+ end
75
+
76
+ def detach_file_from_message(message_id, file_id)
77
+ @request.delete(['task', message_id.to_s, 'files'], fileid: file_id)
78
+ end
79
+
80
+ def get_comment(comment_id)
81
+ @request.get(['comment', comment_id.to_s])
82
+ end
83
+
84
+ def get_task_comments(task_id)
85
+ @request.get(['task', task_id.to_s, 'comment'])
86
+ end
87
+
88
+ def get_message_comments(message_id)
89
+ @request.get(['message', message_id.to_s, 'comment'])
90
+ end
91
+
92
+ def add_task_comment(task_id, content, options = {})
93
+ @request.post(['task', task_id.to_s, 'comment'], { content: content }.merge(options))
94
+ end
95
+
96
+ def add_message_comment(message_id, content, options = {})
97
+ @request.post(['task', message_id.to_s, 'comment'], { content: content }.merge(options))
98
+ end
99
+
100
+ def update_comment(comment_id, content)
101
+ @request.put(['comment', comment_id.to_s], content: content)
102
+ end
103
+
104
+ def delete_comment(comment_id)
105
+ @request.delete(['comment', comment_id.to_s])
106
+ end
107
+
108
+ def create_report_template(name, options)
109
+ @request.post(['report'], { name: name }.merge(options))
110
+ end
111
+
112
+ def update_report_template(report_id, name, options)
113
+ @request.put(['report', report_id.to_s], { name: name }.merge(options))
114
+ end
115
+
116
+ def delete_report_template(report_id)
117
+ @request.delete(['report', report_id.to_s])
118
+ end
119
+
120
+ def get_projects
121
+ @request.get
122
+ end
123
+
124
+ def get_project(id)
125
+ @request.get([id.to_s])
126
+ end
127
+
128
+ def get_participated_projects
129
+ @request.get(['@self'])
130
+ end
131
+
132
+ def filter_projects(options)
133
+ @request.get(['filter'], options)
134
+ end
135
+
136
+ def followed_projects
137
+ @request.get(['@follow'])
138
+ end
139
+
140
+ def get_project_by_status(status)
141
+ @request.get([status.to_s])
142
+ end
143
+
144
+ def get_templates
145
+ @request.get(['template'])
146
+ end
147
+
148
+ def get_spent_time(project_id)
149
+ @request.get([project_id.to_s, 'time'])
150
+ end
151
+
152
+ def get_project_files(project_id)
153
+ @request.get([project_id.to_s, 'files'])
154
+ end
155
+
156
+ def get_template(template_id)
157
+ @request.get([template_id.to_s])
158
+ end
159
+
160
+ def get_milestones(project_id)
161
+ @request.get([project_id.to_s, 'milestone'])
162
+ end
163
+
164
+ def search_all_projects(query)
165
+ @request.get(['@search', query.to_s])
166
+ end
167
+
168
+ def search_project(project_id, query)
169
+ @request.get([project_id.to_s, '@search', query.to_s])
170
+ end
171
+
172
+ def get_milestones_with_status(project_id, status)
173
+ @request.get([project_id.to_s, 'milestone', status.to_s])
174
+ end
175
+
176
+ def create_project(title, description, responsible_id, tags, private, options = {})
177
+ @request.post('', { title: title, description: description, responsibleid: responsible_id, tags: tags, private: private}.merge(options))
178
+ end
179
+
180
+ def create_template(title, description)
181
+ @request.post(['template'], { title: title, description: description})
182
+ end
183
+
184
+ def add_milestone(project_id, title, deadline, is_key, is_notify, description, responsible, notify_responsible)
185
+ @request.post([project_id.to_s, 'milestone'], title: title, deadline: deadline, isKey: is_key, isNotify: is_notify,
186
+ description: description, responsible: responsible, notifyResponsible: notify_responsible)
187
+ end
188
+
189
+ def update_project_tags(id, tags)
190
+ @request.put([id.to_s, 'tag'], tags: tags)
191
+ end
192
+
193
+ def update_project_status(id, status)
194
+ @request.put([id.to_s, 'status'], status: status)
195
+ end
196
+
197
+ def update_template(id, title, description)
198
+ @request.put(['template', id.to_s], title: title, description: description)
199
+ end
200
+
201
+ def follow_unfollow_project(project_id)
202
+ @request.put([project_id.to_s, 'follow'])
203
+ end
204
+
205
+ def delete_project(id)
206
+ @request.delete([id.to_s])
207
+ end
208
+
209
+ def delete_template(id)
210
+ @request.delete(['template', id.to_s])
211
+ end
212
+
213
+ def delete_task(id)
214
+ @request.delete(['task', id.to_s])
215
+ end
216
+
217
+ def get_tasks_by_ids(task_ids)
218
+ @request.get(['task'], taskid: task_ids)
219
+ end
220
+
221
+ def get_task_order(id)
222
+ @request.get([id.to_s, 'order'])
223
+ end
224
+
225
+ def get_simple_task_by_filter(project_id, options = {})
226
+ @request.get(%w(task filter simple), { projectid: project_id }.merge(options))
227
+ end
228
+
229
+ def add_link(task_id, options = {})
230
+ @request.post(['task', task_id.to_s, 'link'], options)
231
+ end
232
+
233
+ def update_project(id, title, responsible_id, options = {})
234
+ @request.put([id.to_s], { title: title, responsibleId: responsible_id }.merge(options))
235
+ end
236
+
237
+ def set_task_order(id, order)
238
+ @request.put([id.to_s, 'order'], order: order)
239
+ end
240
+
241
+ def update_project_task(task_id, title, options = {})
242
+ @request.put(['task', task_id.to_s], {title: title.to_s}.merge(options))
243
+ end
244
+
245
+ def get_project_team(project_id)
246
+ @request.get([project_id.to_s, 'team'])
247
+ end
248
+
249
+ def get_projects_teams(project_ids)
250
+ @request.post(%w(team), ids: project_ids)
251
+ end
252
+
253
+ def add_to_team(project_id, user_id)
254
+ @request.post([project_id.to_s, 'team'], userid: user_id)
255
+ end
256
+
257
+ def update_project_team(project_id, participants_ids, options = {})
258
+ @request.put([project_id.to_s, 'team'], { participants: participants_ids }.merge(options))
259
+ end
260
+
261
+ def set_team_security(project_id, user_id, security, options = {})
262
+ @request.put([project_id.to_s, 'team', 'security'], { userId: user_id, security: security }.merge(options))
263
+ end
264
+
265
+ def remove_from_team(project_id, user_id)
266
+ @request.delete([project_id.to_s, 'team'], userId: user_id)
267
+ end
268
+
269
+ def get_my_tasks
270
+ @request.get(%w(task @self))
271
+ end
272
+
273
+ def get_task_by_filter(options = {})
274
+ @request.get(%w(task filter), options)
275
+ end
276
+
277
+ def get_task(id)
278
+ @request.get(['task', id.to_s])
279
+ end
280
+
281
+ def get_tasks(project_id)
282
+ @request.get([project_id.to_s, 'task'])
283
+ end
284
+
285
+ def get_my_tasks_by_status(status)
286
+ @request.get(['task', '@self', status.to_s])
287
+ end
288
+
289
+ def notify_task_responsible(task_id)
290
+ @request.get(['task', task_id.to_s, 'notify'])
291
+ end
292
+
293
+ def get_all_tasts(project_id)
294
+ @request.get([project_id.to_s, 'task', '@all'])
295
+ end
296
+
297
+ def check_subscription_to_task_action(task_id)
298
+ @request.get(['task', task_id.to_s, 'subscribe'])
299
+ end
300
+
301
+ def get_tasks_with_status(project_id, status)
302
+ @request.get([project_id.to_s, 'task', status.to_s])
303
+ end
304
+
305
+ def get_my_tasks_with_status(project_id, status)
306
+ @request.get([project_id.to_s, 'task', '@self', status.to_s])
307
+ end
308
+
309
+ def create_subtask(task_id, responsible_id, title)
310
+ @request.post(['task', task_id.to_s], { responsible: responsible_id, title: title })
311
+ end
312
+
313
+ def add_task(project_id, title, options = {})
314
+ @request.post([project_id.to_s, 'task'], { title: title }.merge(options))
315
+ end
316
+
317
+ def add_task_from_discussion(project_id, message_id)
318
+ @request.post([project_id.to_s, 'task', message_id.to_s])
319
+ end
320
+
321
+ def update_task_status(task_id, status)
322
+ @request.post(['task', task_id.to_s, 'status'], status: status)
323
+ end
324
+
325
+ def update_task_milestone(task_id, milestone_id)
326
+ @request.put(['task', task_id.to_s, 'milestone'], milestoneId: milestone_id)
327
+ end
328
+
329
+ def subscribe_to_task_action(task_id)
330
+ @request.put(['task', task_id.to_s, 'subscribe'])
331
+ end
332
+
333
+ def update_subtask(task_id, subtask_id, responsible_id, title)
334
+ @request.post(['task', task_id.to_s, subtask_id.to_s], responsibleId: responsible_id, title: title)
335
+ end
336
+
337
+ def update_subtask_status(task_id, subtask_id, status)
338
+ @request.put(['task', task_id.to_s, subtask_id.to_s, 'status'], status: status)
339
+ end
340
+
341
+ def delete_subtask(task_id, subtask_id)
342
+ @request.delete(['task', task_id.to_s, subtask_id.to_s])
343
+ end
344
+
345
+ def get_projects_for_contact(contact_id)
346
+ @request.get(['contact', contact_id.to_s])
347
+ end
348
+
349
+ def add_project_contact(project_id, contact_id)
350
+ @request.post([project_id.to_s, 'contact'], contactId: contact_id)
351
+ end
352
+
353
+ def delete_project_contact(project_id, contact_id)
354
+ @request.delete([project_id.to_s, 'contact'], contactId: contact_id)
355
+ end
356
+
357
+ def get_project_tags
358
+ @request.get(%w(tag))
359
+ end
360
+
361
+ def get_project_by_tag(tag)
362
+ @request.get(['tag', tag.to_s])
363
+ end
364
+
365
+ def get_tags_by_name(tag_name)
366
+ @request.get(%w(tag search), tagName: tag_name)
367
+ end
368
+
369
+ def get_upcoming_milestones
370
+ @request.get(%w(milestone))
371
+ end
372
+
373
+ def get_overdue_milestones
374
+ @request.get(%w(milestone late))
375
+ end
376
+
377
+ def get_milestone(id)
378
+ @request.get(['milestone', id.to_s])
379
+ end
380
+
381
+ def get_milestones_by_filter(options = {})
382
+ @request.get(%w(milestone filter), options)
383
+ end
384
+
385
+ def get_milestone_tasks(id)
386
+ @request.get(['milestone', id.to_s, 'task'])
387
+ end
388
+
389
+ def get_milestones_by_month(year, month)
390
+ @request.get(['milestone', year.to_s, month.to_s])
391
+ end
392
+
393
+ def get_milestones_by_full_date(year, month, day)
394
+ @request.get(['milestone', year.to_s, month.to_s, day.to_s])
395
+ end
396
+
397
+ def update_milestone(id, title, deadline, options = {})
398
+ @request.put(['milestone', id.to_s], { title: title, deadline: deadline }.merge(options))
399
+ end
400
+
401
+ def update_milestone_status(id, status)
402
+ @request.put(['milestone', id.to_s, 'status'], status: status)
403
+ end
404
+
405
+ def delete_milestone(id)
406
+ @request.delete(['milestone', id.to_s])
407
+ end
408
+
409
+ def get_time_spent_by_filter(options = {})
410
+ @request.get(%w(time filter), options)
411
+ end
412
+
413
+ def get_total_time_spent_by_filter(options = {})
414
+ @request.get(%w(time filter total), options)
415
+ end
416
+
417
+ def get_time_spent(task_id)
418
+ @request.get(['task', task_id.to_s, 'time'])
419
+ end
420
+
421
+ def add_task_time(task_id, note, date, person_id, hours, project_id)
422
+ @request.post(['task', task_id.to_s, 'time'], { date: date, note: note, personId: person_id, hours: hours, projectId: project_id })
423
+ end
424
+
425
+ def update_task_time(time_id, note, date, person_id, hours)
426
+ @request.put(['time', time_id.to_s], note: note, date: date, personId: person_id, hours: hours)
427
+ end
428
+
429
+ def update_time_status_of_payment(time_ids, status)
430
+ @request.put(%w(time times status), timeids: time_ids, status: status)
431
+ end
432
+
433
+ def delete_time_spents(time_ids)
434
+ @request.delete(%w(time times remove), timeIds: time_ids)
435
+ end
436
+ end
437
+ end