teamlab 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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