teamlab 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +40 -0
- data/Rakefile +2 -0
- data/lib/teamlab.rb +61 -0
- data/lib/teamlab/Config.rb +37 -0
- data/lib/teamlab/Modules/Calendar.rb +98 -0
- data/lib/teamlab/Modules/Community.rb +248 -0
- data/lib/teamlab/Modules/Crm.rb +773 -0
- data/lib/teamlab/Modules/Files.rb +193 -0
- data/lib/teamlab/Modules/Group.rb +49 -0
- data/lib/teamlab/Modules/Mail.rb +30 -0
- data/lib/teamlab/Modules/People.rb +97 -0
- data/lib/teamlab/Modules/Project.rb +437 -0
- data/lib/teamlab/Modules/Settings.rb +53 -0
- data/lib/teamlab/Request.rb +61 -0
- data/lib/teamlab/Response.rb +14 -0
- data/lib/teamlab/version.rb +3 -0
- data/spec/lib/Teamlab_spec.rb +1745 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/http_data.rb +149 -0
- data/teamlab.gemspec +28 -0
- metadata +168 -0
@@ -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
|