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.
- 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
|