zohoProjects 0.0.4
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.
- checksums.yaml +15 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +17 -0
- data/LICENSE.txt +22 -0
- data/README.md +145 -0
- data/Rakefile +2 -0
- data/lib/projects/api/API.rb +57 -0
- data/lib/projects/api/BugsAPI.rb +135 -0
- data/lib/projects/api/DocumentsAPI.rb +145 -0
- data/lib/projects/api/EventsAPI.rb +115 -0
- data/lib/projects/api/FoldersAPI.rb +111 -0
- data/lib/projects/api/ForumsAPI.rb +198 -0
- data/lib/projects/api/MilestonesAPI.rb +159 -0
- data/lib/projects/api/PortalAPI.rb +41 -0
- data/lib/projects/api/ProjectsAPI.rb +203 -0
- data/lib/projects/api/TasklistsAPI.rb +113 -0
- data/lib/projects/api/TasksAPI.rb +153 -0
- data/lib/projects/api/TimesheetsAPI.rb +240 -0
- data/lib/projects/api/UsersAPI.rb +48 -0
- data/lib/projects/exception/ProjectsException.rb +50 -0
- data/lib/projects/model/Activity.rb +173 -0
- data/lib/projects/model/Bug.rb +701 -0
- data/lib/projects/model/Buglog.rb +56 -0
- data/lib/projects/model/Category.rb +70 -0
- data/lib/projects/model/Comment.rb +289 -0
- data/lib/projects/model/Document.rb +260 -0
- data/lib/projects/model/Event.rb +391 -0
- data/lib/projects/model/Folder.rb +110 -0
- data/lib/projects/model/Forum.rb +320 -0
- data/lib/projects/model/Generallog.rb +36 -0
- data/lib/projects/model/Log.rb +359 -0
- data/lib/projects/model/Milestone.rb +322 -0
- data/lib/projects/model/Owner.rb +54 -0
- data/lib/projects/model/Participant.rb +54 -0
- data/lib/projects/model/Portal.rb +273 -0
- data/lib/projects/model/Project.rb +593 -0
- data/lib/projects/model/Status.rb +168 -0
- data/lib/projects/model/Task.rb +497 -0
- data/lib/projects/model/Tasklist.rb +300 -0
- data/lib/projects/model/Tasklog.rb +56 -0
- data/lib/projects/model/Timelog.rb +134 -0
- data/lib/projects/model/TimelogList.rb +54 -0
- data/lib/projects/model/User.rb +94 -0
- data/lib/projects/model/Version.rb +194 -0
- data/lib/projects/parser/BugParser.rb +208 -0
- data/lib/projects/parser/DocumentParser.rb +197 -0
- data/lib/projects/parser/EventParser.rb +156 -0
- data/lib/projects/parser/FolderParser.rb +99 -0
- data/lib/projects/parser/ForumParser.rb +253 -0
- data/lib/projects/parser/MilestonesParser.rb +129 -0
- data/lib/projects/parser/PortalParser.rb +103 -0
- data/lib/projects/parser/ProjectParser.rb +318 -0
- data/lib/projects/parser/TaskParser.rb +293 -0
- data/lib/projects/parser/TasklistParser.rb +127 -0
- data/lib/projects/parser/TimesheetParser.rb +390 -0
- data/lib/projects/parser/UserParser.rb +63 -0
- data/lib/projects/service/ZohoProject.rb +174 -0
- data/lib/projects/util/ZohoHTTPClient.rb +205 -0
- data/lib/test/ProjectsTest.rb +321 -0
- data/lib/zohoProjects.rb +35 -0
- data/lib/zohoProjects/version.rb +3 -0
- data/zohoProjects.gemspec +86 -0
- metadata +135 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Parser
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/User'
|
7
|
+
|
8
|
+
# * Parse the JSON response into respective objects.
|
9
|
+
|
10
|
+
class UserParser
|
11
|
+
include Projects::Model
|
12
|
+
|
13
|
+
# * Parse the JSON response and make it into List of User object.
|
14
|
+
#
|
15
|
+
# ==== Parameters
|
16
|
+
#
|
17
|
+
# * response:: - This JSON response contains the details of users.
|
18
|
+
#
|
19
|
+
# ==== Returns
|
20
|
+
#
|
21
|
+
# * List of User object.
|
22
|
+
|
23
|
+
def getUsers(response)
|
24
|
+
users_all_json = JSON.parse response
|
25
|
+
users_all_array = users_all_json["users"]
|
26
|
+
users_class_array = Array.new
|
27
|
+
for i in 0...users_all_array.length
|
28
|
+
users_class_array.push(jsonToUser(users_all_array[i]))
|
29
|
+
end
|
30
|
+
return users_class_array
|
31
|
+
end
|
32
|
+
|
33
|
+
# * Parse the JSONObject into User object.
|
34
|
+
#
|
35
|
+
# ==== Parameters
|
36
|
+
#
|
37
|
+
# * response:: - JSONObject contains the details of a user.
|
38
|
+
#
|
39
|
+
# ==== Returns
|
40
|
+
#
|
41
|
+
# * User object.
|
42
|
+
|
43
|
+
def jsonToUser(jsonObject)
|
44
|
+
user = User.new
|
45
|
+
|
46
|
+
if jsonObject.has_key?("id")
|
47
|
+
user.setId(jsonObject["id"])
|
48
|
+
end
|
49
|
+
if jsonObject.has_key?("name")
|
50
|
+
user.setName(jsonObject["name"])
|
51
|
+
end
|
52
|
+
if jsonObject.has_key?("email")
|
53
|
+
user.setEmail(jsonObject["email"])
|
54
|
+
end
|
55
|
+
if jsonObject.has_key?("role")
|
56
|
+
user.setRole(jsonObject["role"])
|
57
|
+
end
|
58
|
+
|
59
|
+
return user
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Service
|
4
|
+
|
5
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/PortalAPI'
|
6
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/ProjectsAPI'
|
7
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/MilestonesAPI'
|
8
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/TasklistsAPI'
|
9
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/TasksAPI'
|
10
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/TimesheetsAPI'
|
11
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/FoldersAPI'
|
12
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/DocumentsAPI'
|
13
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/EventsAPI'
|
14
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/BugsAPI'
|
15
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/ForumsAPI'
|
16
|
+
require File.dirname(__FILE__).chomp("/projects/service") + '/projects/api/UsersAPI'
|
17
|
+
|
18
|
+
# * ZohoProjects is used to provide all API instances for the Zoho Project services.
|
19
|
+
|
20
|
+
class ZohoProject
|
21
|
+
include Projects::Api
|
22
|
+
|
23
|
+
private
|
24
|
+
attr_accessor :authToken, :portalId
|
25
|
+
|
26
|
+
public
|
27
|
+
|
28
|
+
# * Initialize ZhoProjects using user's authToken and portalId.
|
29
|
+
#
|
30
|
+
# ==== Parameters
|
31
|
+
#
|
32
|
+
# * authToken:: - User's authToken.
|
33
|
+
#
|
34
|
+
# * portalId:: - User's portalId.
|
35
|
+
|
36
|
+
def initialize(authToken,portalId)
|
37
|
+
@authToken = authToken
|
38
|
+
@portalId = portalId
|
39
|
+
end
|
40
|
+
|
41
|
+
# * Get an instance of portals API.
|
42
|
+
#
|
43
|
+
# ==== Returns
|
44
|
+
#
|
45
|
+
# * PortalsAPI object.
|
46
|
+
|
47
|
+
def getPortalsAPI
|
48
|
+
portalsAPI = PortalAPI.new(authToken)
|
49
|
+
return portalsAPI
|
50
|
+
end
|
51
|
+
|
52
|
+
# * Get an instance of projects API.
|
53
|
+
#
|
54
|
+
# ==== Returns
|
55
|
+
#
|
56
|
+
# * ProjectsAPI object.
|
57
|
+
|
58
|
+
def getProjectsAPI
|
59
|
+
projectsAPI = ProjectsAPI.new(authToken, portalId)
|
60
|
+
return projectsAPI
|
61
|
+
end
|
62
|
+
|
63
|
+
# * Get an instance of milestones API.
|
64
|
+
#
|
65
|
+
# ==== Returns
|
66
|
+
#
|
67
|
+
# * MilestonesAPI object.
|
68
|
+
|
69
|
+
def getMilestonesAPI
|
70
|
+
milestonesAPI = MilestonesAPI.new(authToken, portalId)
|
71
|
+
return milestonesAPI
|
72
|
+
end
|
73
|
+
|
74
|
+
# * Get an instance of task lists API.
|
75
|
+
#
|
76
|
+
# ==== Returns
|
77
|
+
#
|
78
|
+
# * TasklistsAPI object.
|
79
|
+
|
80
|
+
def getTasklistsAPI
|
81
|
+
tasklistsAPI = TasklistsAPI.new(authToken, portalId)
|
82
|
+
return tasklistsAPI
|
83
|
+
end
|
84
|
+
|
85
|
+
# * Get an instance of tasks API.
|
86
|
+
#
|
87
|
+
# ==== Returns
|
88
|
+
#
|
89
|
+
# * TasksAPI object.
|
90
|
+
|
91
|
+
def getTasksAPI
|
92
|
+
tasksAPI = TasksAPI.new(authToken, portalId)
|
93
|
+
return tasksAPI
|
94
|
+
end
|
95
|
+
|
96
|
+
# * Get an instance of events API.
|
97
|
+
#
|
98
|
+
# ==== Returns
|
99
|
+
#
|
100
|
+
# * EventsAPI object.
|
101
|
+
|
102
|
+
def getEventsAPI
|
103
|
+
eventsAPI = EventsAPI.new(authToken, portalId)
|
104
|
+
return eventsAPI
|
105
|
+
end
|
106
|
+
|
107
|
+
# * Get an instance of folder API.
|
108
|
+
#
|
109
|
+
# ==== Returns
|
110
|
+
#
|
111
|
+
# * FoldersAPI object.
|
112
|
+
|
113
|
+
def getFoldersAPI
|
114
|
+
foldersAPI = FoldersAPI.new(authToken, portalId)
|
115
|
+
return foldersAPI
|
116
|
+
end
|
117
|
+
|
118
|
+
# * Get an instance of documents API.
|
119
|
+
#
|
120
|
+
# ==== Returns
|
121
|
+
#
|
122
|
+
# * DocumentsAPI object.
|
123
|
+
|
124
|
+
def getDocumentsAPI
|
125
|
+
documentsAPI = DocumentsAPI.new(authToken, portalId)
|
126
|
+
return documentsAPI
|
127
|
+
end
|
128
|
+
|
129
|
+
# * Get an instance of forums API.
|
130
|
+
#
|
131
|
+
# ==== Returns
|
132
|
+
#
|
133
|
+
# * ForumsAPI object.
|
134
|
+
|
135
|
+
def getForumsAPI
|
136
|
+
forumsAPI = ForumsAPI.new(authToken, portalId)
|
137
|
+
return forumsAPI
|
138
|
+
end
|
139
|
+
|
140
|
+
# * Get an instance of users API.
|
141
|
+
#
|
142
|
+
# ==== Returns
|
143
|
+
#
|
144
|
+
# * UsersAPI object.
|
145
|
+
|
146
|
+
def getUsersAPI
|
147
|
+
usersAPI = UsersAPI.new(authToken, portalId)
|
148
|
+
return usersAPI
|
149
|
+
end
|
150
|
+
|
151
|
+
# * Get an instance of bugs API.
|
152
|
+
#
|
153
|
+
# ==== Returns
|
154
|
+
#
|
155
|
+
# * BugsAPI object.
|
156
|
+
|
157
|
+
def getBugsAPI
|
158
|
+
bugsAPI = BugsAPI.new(authToken, portalId)
|
159
|
+
return bugsAPI
|
160
|
+
end
|
161
|
+
|
162
|
+
# * Get an instance of time sheets API.
|
163
|
+
#
|
164
|
+
# ==== Returns
|
165
|
+
#
|
166
|
+
# * TimesheetsAPI object.
|
167
|
+
|
168
|
+
def getTimesheetsAPI
|
169
|
+
timesheetsAPI = TimesheetsAPI.new(authToken, portalId)
|
170
|
+
return timesheetsAPI
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Util
|
4
|
+
|
5
|
+
require "net/http"
|
6
|
+
require "uri"
|
7
|
+
require File.dirname(__FILE__).chomp("/projects/util") + '/projects/exception/ProjectsException'
|
8
|
+
|
9
|
+
# * ZohoHTTPClient is used to make a HTTP request execution for GET, POST, PUT and DELETE requests.
|
10
|
+
|
11
|
+
class ZohoHTTPClient
|
12
|
+
include Projects::Pexception
|
13
|
+
|
14
|
+
# * Returns the url string for making the request.
|
15
|
+
#
|
16
|
+
# ==== Parameters
|
17
|
+
#
|
18
|
+
# * url:: - Service URL passed by the user.
|
19
|
+
#
|
20
|
+
# * queryMap:: - This queryMap contains the query string parameters in the form of key, value pair.
|
21
|
+
#
|
22
|
+
# ==== Returns
|
23
|
+
#
|
24
|
+
# * Url in String.
|
25
|
+
|
26
|
+
def self.getUrl(url,queryMap)
|
27
|
+
url = url + '?'
|
28
|
+
i = 0
|
29
|
+
queryMap.each do |key, value|
|
30
|
+
if i == 0
|
31
|
+
url = url+key+'='+String(value)
|
32
|
+
i=i+1
|
33
|
+
else
|
34
|
+
url = url+'&'+key+'='+String(value)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
return url
|
38
|
+
end
|
39
|
+
|
40
|
+
# * Returns the http and uri objects for making request and response
|
41
|
+
#
|
42
|
+
# ==== Parameters
|
43
|
+
#
|
44
|
+
# * http:: - Object of NET::HTTP
|
45
|
+
#
|
46
|
+
# * uri:: - Object of URI which parses the url of the request
|
47
|
+
|
48
|
+
def self.getHttpUri(url)
|
49
|
+
uri = URI.parse(url)
|
50
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
51
|
+
http.use_ssl = true
|
52
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
53
|
+
http.open_timeout = 60
|
54
|
+
http.read_timeout = 80
|
55
|
+
return [http, uri]
|
56
|
+
end
|
57
|
+
|
58
|
+
# * Raises ProjectsException when this method is called
|
59
|
+
#
|
60
|
+
# ==== Parameters
|
61
|
+
#
|
62
|
+
# * message:: - Response message of the request
|
63
|
+
|
64
|
+
def self.throwsException(message)
|
65
|
+
error_json = JSON.parse message
|
66
|
+
error_array = error_json["error"]
|
67
|
+
raise ProjectsException.new(error_array["code"],error_array["message"])
|
68
|
+
end
|
69
|
+
|
70
|
+
#
|
71
|
+
# ==== Returns
|
72
|
+
#
|
73
|
+
# * header for the http request
|
74
|
+
|
75
|
+
def self.getHeader
|
76
|
+
header = Hash.new
|
77
|
+
header["Accept"] = "application/json"
|
78
|
+
header["Content-Type"] = "application/x-www-form-urlencoded"
|
79
|
+
header["Accept-Charset"] = "UTF-8"
|
80
|
+
header["User-Agent"] = "ZohoProjects-Ruby-Wrappers/0.0.4"
|
81
|
+
return header
|
82
|
+
end
|
83
|
+
|
84
|
+
# * Evaluates the response
|
85
|
+
#
|
86
|
+
# ==== Parameters
|
87
|
+
#
|
88
|
+
# * response:: - The response of the HTTP request
|
89
|
+
#
|
90
|
+
# * Returns response body is success or terminates the program
|
91
|
+
|
92
|
+
def self.getResult(response)
|
93
|
+
if response.code.to_i == 200 || response.code.to_i == 201
|
94
|
+
return response.body
|
95
|
+
elsif response.code.to_i == 204
|
96
|
+
abort("No Result for the specified request")
|
97
|
+
else
|
98
|
+
throwsException(response.body)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# * Make a GET request and fetch the response for the given URL and a query string.
|
103
|
+
#
|
104
|
+
# * Calls getResult to return the JSON response String.
|
105
|
+
#
|
106
|
+
# ==== Parameters
|
107
|
+
#
|
108
|
+
# * url:: - Service URL passed by the user.
|
109
|
+
#
|
110
|
+
# * queryMap:: - This queryMap contains the query string parameters in the form of key, value pair.
|
111
|
+
|
112
|
+
|
113
|
+
def self.get(url,queryMap)
|
114
|
+
url = getUrl(url, queryMap)
|
115
|
+
http,uri= getHttpUri(url)
|
116
|
+
request = Net::HTTP::Get.new(uri.request_uri, initheader = getHeader)
|
117
|
+
response = http.request(request)
|
118
|
+
getResult(response)
|
119
|
+
end
|
120
|
+
|
121
|
+
# * Make a POST request and create a resource for the given URL and a MultiPart form data.
|
122
|
+
#
|
123
|
+
# * Calls getResult to return the JSON response String.
|
124
|
+
#
|
125
|
+
# ==== Parameters
|
126
|
+
#
|
127
|
+
# * url:: - Service URL passed by the user.
|
128
|
+
#
|
129
|
+
# * queryMap:: - This queryMap contains the query string parameters in the form of key, value pair.
|
130
|
+
#
|
131
|
+
# * requestBody:: - This requestBody contains the form data for the POST request.
|
132
|
+
#
|
133
|
+
# * fileBody:: - This fileBody contains the attachment files for the POST request.
|
134
|
+
|
135
|
+
def self.post(url, queryMap, paramMap, fileBody=nil)
|
136
|
+
if fileBody == nil
|
137
|
+
url = getUrl(url, queryMap)
|
138
|
+
http,uri= getHttpUri(url)
|
139
|
+
request = Net::HTTP::Post.new(uri.request_uri, initheader = getHeader)
|
140
|
+
request.set_form_data(paramMap)
|
141
|
+
response = http.request(request)
|
142
|
+
getResult(response)
|
143
|
+
else
|
144
|
+
begin
|
145
|
+
url = getUrl(url, queryMap)
|
146
|
+
@BOUNDARY = "AaB03x"
|
147
|
+
header = Hash.new
|
148
|
+
header["Accept"] = "application/json"
|
149
|
+
header["Content-Type"] = "multipart/form-data; boundary="+ @BOUNDARY
|
150
|
+
header["Accept-Charset"] = "UTF-8"
|
151
|
+
header["User-Agent"] = "ZohoBooks-Java-Wrappers/1.0"
|
152
|
+
http,uri= getHttpUri(url)
|
153
|
+
request = Net::HTTP::Post.new(uri.request_uri, initheader = header)
|
154
|
+
post_body = []
|
155
|
+
paramMap.each do |key, val|
|
156
|
+
post_body << "--#{@BOUNDARY}\r\n"
|
157
|
+
post_body << "Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n#{val}\r\n"
|
158
|
+
end
|
159
|
+
fileBody.each do |key, val|
|
160
|
+
for i in 0...val.length
|
161
|
+
post_body << "--#{@BOUNDARY}\r\n"
|
162
|
+
post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{File.basename(val[i].path)}\"\r\n"
|
163
|
+
post_body << "Content-Type: application/octet-stream\r\n"
|
164
|
+
post_body << "\r\n"
|
165
|
+
post_body << File.read(val[i].path)
|
166
|
+
post_body << "\r\n"
|
167
|
+
end
|
168
|
+
end
|
169
|
+
post_body << "--#{@BOUNDARY}--\r\n"
|
170
|
+
request.body = post_body.join
|
171
|
+
response = http.request(request)
|
172
|
+
getResult(response)
|
173
|
+
ensure
|
174
|
+
fileBody.each do |key, val|
|
175
|
+
for i in 0...val.length
|
176
|
+
if !val[i].closed?
|
177
|
+
val[i].close
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
# * Make a DELETE request for the given URL and a query string.
|
186
|
+
#
|
187
|
+
# * Calls getResult to return the JSON response String.
|
188
|
+
#
|
189
|
+
# ==== Parameters
|
190
|
+
#
|
191
|
+
# * url:: - Service URL passed by the user.
|
192
|
+
#
|
193
|
+
# * queryMap:: - This queryMap contains the query string parameters in the form of key, value pair.
|
194
|
+
|
195
|
+
|
196
|
+
def self.delete(url,queryMap)
|
197
|
+
url = getUrl(url, queryMap)
|
198
|
+
http,uri= getHttpUri(url)
|
199
|
+
request = Net::HTTP::Delete.new(uri.request_uri, initheader = getHeader)
|
200
|
+
response = http.request(request)
|
201
|
+
getResult(response)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
@@ -0,0 +1,321 @@
|
|
1
|
+
# $Id$
|
2
|
+
require "zohoProjects"
|
3
|
+
|
4
|
+
begin
|
5
|
+
|
6
|
+
portalsAPI = PortalAPI.new("{auth_token}")
|
7
|
+
portals = portalsAPI.getPortals
|
8
|
+
|
9
|
+
portal_id = portals[0].getId
|
10
|
+
|
11
|
+
|
12
|
+
zohoProjects = ZohoProjects.new("{auth_token}",portal_id)
|
13
|
+
|
14
|
+
projectAPI = zohoProjects.getProjectsAPI
|
15
|
+
|
16
|
+
milestoneAPI = zohoProjects.getMilestonesAPI
|
17
|
+
|
18
|
+
tasklistAPI = zohoProjects.getTasklistsAPI
|
19
|
+
|
20
|
+
tasksAPI = zohoProjects.getTasklistsAPI
|
21
|
+
|
22
|
+
eventsAPI = zohoProjects.getEventsAPI
|
23
|
+
|
24
|
+
foldersAPI = zohoProjects.getFoldersAPI
|
25
|
+
|
26
|
+
documentsAPI = zohoProjects.getDocumentsAPI
|
27
|
+
|
28
|
+
forumsAPI = zohoProjects.getForumsAPI
|
29
|
+
|
30
|
+
usersAPI = zohoProjects.getUsersAPI
|
31
|
+
|
32
|
+
bugsAPI = zohoProjects.getBugsAPI
|
33
|
+
|
34
|
+
forumsAPI = zohoProjects.getForumsAPI
|
35
|
+
|
36
|
+
timesheetsAPI = zohoProjects.getTimesheetsAPI
|
37
|
+
|
38
|
+
projectAPI = ProjectsAPI.new("{auth_token}",portal_id)
|
39
|
+
|
40
|
+
projectAll = projectAPI1.getProjects
|
41
|
+
|
42
|
+
queryMap = Hash.new
|
43
|
+
queryMap["status"] = "active"
|
44
|
+
|
45
|
+
project = projectAPI.getProjects(queryMap)
|
46
|
+
|
47
|
+
project_id = projectAll[0].getId
|
48
|
+
|
49
|
+
project_ownerId = projectAll[0].getOwnerId
|
50
|
+
|
51
|
+
project = Project.new
|
52
|
+
project.setName("Test Project")
|
53
|
+
project.setDescription("This is a Test Project")
|
54
|
+
|
55
|
+
create = projectAPI.createProject(project)
|
56
|
+
|
57
|
+
get = projectAPI.get(projectAll[0].getId)
|
58
|
+
|
59
|
+
get.setName("Test Project");
|
60
|
+
get.setDescription("This is a Test Project")
|
61
|
+
get.setStatus("active")
|
62
|
+
update = projectAPI.updateProject(get)
|
63
|
+
|
64
|
+
activity = projectAPI.getProjectActivities(project_id)
|
65
|
+
|
66
|
+
status = projectAPI.getProjectStatuses(project_id)
|
67
|
+
|
68
|
+
status1 = Status.new
|
69
|
+
status1.setContent("New Status Added")
|
70
|
+
status2 = projectAPI.addProjectStatus(project_id, status1)
|
71
|
+
|
72
|
+
milestonesAPI = MilestonesAPI.new("{auth_token}",portal_id)
|
73
|
+
|
74
|
+
milestone = milestonesAPI.getMilestones(project_id)
|
75
|
+
|
76
|
+
milestone_id = milestone.getId
|
77
|
+
|
78
|
+
milestone1 = milestonesAPI.get(project_id,milestone_id)
|
79
|
+
|
80
|
+
result = milestonesAPI.delete(project_id,milestone_id)
|
81
|
+
|
82
|
+
milestone = Milestone.new
|
83
|
+
milestone.setName("My first Updated Milestone")
|
84
|
+
milestone.setStartDate("07-01-2014")
|
85
|
+
milestone.setEndDate("07-20-2014")
|
86
|
+
milestone.setOwnerId(project_ownerId.to_i)
|
87
|
+
milestone.setFlag("internal")
|
88
|
+
|
89
|
+
milestone1 = milestonesAPI.create(project_id, milestone)
|
90
|
+
|
91
|
+
milestone = milestonesAPI.update(project_id, milestone1)
|
92
|
+
|
93
|
+
puts milestonesAPI.updateStatus(project_id, milestone_id, 1)
|
94
|
+
|
95
|
+
tasklistsAPI = TasklistsAPI.new("{auth_token}",portal_id)
|
96
|
+
|
97
|
+
queryMap = Hash.new
|
98
|
+
queryMap["flag"] = "internal"
|
99
|
+
|
100
|
+
tasklists = tasklistsAPI.getTasklists(project_id, queryMap)
|
101
|
+
|
102
|
+
result = tasklistsAPI.delete(project_id, tasklists[0].getId)
|
103
|
+
|
104
|
+
tasklist = Tasklist.new()
|
105
|
+
tasklist.setName("Model")
|
106
|
+
tasklist.setFlag("internal")
|
107
|
+
|
108
|
+
milestone1 = Milestone.new()
|
109
|
+
milestone1.setId(milestone_id)
|
110
|
+
tasklist.setMilestone(milestone1)
|
111
|
+
|
112
|
+
createTasklist = tasklistsAPI.create(project_id, tasklist)
|
113
|
+
|
114
|
+
tasklists[0].setName("Model 1")
|
115
|
+
tasklists[0].setFlag("internal")
|
116
|
+
tasklists[0].setStatus("completed")
|
117
|
+
|
118
|
+
tasklist = tasklistsAPI.update(project_id, tasklists[0])
|
119
|
+
|
120
|
+
queryMap = Hash.new
|
121
|
+
queryMap["range"] = 1
|
122
|
+
|
123
|
+
tasksAPI = TasksAPI.new("{auth_token}",portal_id)
|
124
|
+
|
125
|
+
tasks = tasksAPI.getTasks(project_id, queryMap)
|
126
|
+
|
127
|
+
tasklistId = tasks[0].getTasklist.getId
|
128
|
+
|
129
|
+
tasklistTasks = tasksAPI.getTasklistTasks(project_id, tasklistId, nil)
|
130
|
+
|
131
|
+
taskId = tasklistTasks[0].getId
|
132
|
+
getTask = tasksAPI.get(project_id, taskId)
|
133
|
+
|
134
|
+
task = tasks[0]
|
135
|
+
puts task.getName
|
136
|
+
|
137
|
+
owner1 = task.getOwners
|
138
|
+
|
139
|
+
owners = Array.new
|
140
|
+
owner = Owner.new
|
141
|
+
owner.setId(owner1.getId)
|
142
|
+
owners.push(owner)
|
143
|
+
|
144
|
+
task.setOwners(owners)
|
145
|
+
task.setName("complete TasksAPI 1")
|
146
|
+
task.setStartDate("06-23-2014")
|
147
|
+
task.setEndDate("06-30-2014")
|
148
|
+
|
149
|
+
createTask = tasksAPI.create(project_id, task)
|
150
|
+
|
151
|
+
updateTask = tasksAPI.update(project_id, task)
|
152
|
+
|
153
|
+
deleteTask = tasksAPI.delete(project_id, String(task.getId))
|
154
|
+
|
155
|
+
queryMap = Hash.new
|
156
|
+
queryMap["user_list"] = "all"
|
157
|
+
queryMap["view_type"] = "month"
|
158
|
+
queryMap["date"] = "06-23-2014"
|
159
|
+
queryMap["bill_status"] = "Billable"
|
160
|
+
queryMap["component_type"] = "task"
|
161
|
+
|
162
|
+
timesheetsAPI = TimesheetsAPI.new("{auth_token}",portal_id)
|
163
|
+
|
164
|
+
timeLogs = timesheetsAPI.getTimeLogs(project_id, queryMap)
|
165
|
+
|
166
|
+
tasklog = timeLogs[0].getTasklogs
|
167
|
+
|
168
|
+
tasklog[0].setDate("07-02-2014")
|
169
|
+
|
170
|
+
addTasklog = timesheetsAPI.addTasklog(project_id, tasklog[0])
|
171
|
+
|
172
|
+
updateTasklog = timesheetsAPI.updateTasklog(project_id, tasklog[0])
|
173
|
+
|
174
|
+
deleteTasklog = timesheetsAPI.deleteTasklog(project_id, String(tasklog[0].getTaskId), String(tasklog[0].getId))
|
175
|
+
|
176
|
+
buglog = timeLogs[0].getBuglogs[0]
|
177
|
+
|
178
|
+
buglog.setDate("06-28-2014")
|
179
|
+
buglog.setBillStatus("Billable")
|
180
|
+
buglog.setHours("02:02")
|
181
|
+
|
182
|
+
addBuglog = timesheetsAPI.addBuglog(project_id, buglog)
|
183
|
+
|
184
|
+
updateBuglog = timesheetsAPI.updateBuglog(project_id, buglog)
|
185
|
+
|
186
|
+
deleteBuglog = timesheetsAPI.deleteBuglog(project_id, String(buglog.getBugId), String(buglog.getId))
|
187
|
+
|
188
|
+
generallog = timeLogs[0].getGenerallogs[0]
|
189
|
+
generallog.setDate("06-25-2014")
|
190
|
+
generallog.setBillStatus("Billable")
|
191
|
+
generallog.setName("Complete API files New")
|
192
|
+
generallog.setHours(1)
|
193
|
+
generallog.setNotes("ss")
|
194
|
+
|
195
|
+
addGenerallog = timesheetsAPI.addGenerallog(project_id, generallog)
|
196
|
+
|
197
|
+
updateGenerallog = timesheetsAPI.updateGenerallog(project_id, generallog)
|
198
|
+
|
199
|
+
deleteGenerallog = timesheetsAPI.deleteGenerallog(project_id, String(generallog.getId))
|
200
|
+
|
201
|
+
bugsAPI = BugsAPI.new("{auth_token}",portal_id)
|
202
|
+
|
203
|
+
bugs = bugsAPI.getBugs(project_id, nil)
|
204
|
+
bugId = String(bugs[0].getId)
|
205
|
+
getBug = bugsAPI.get(project_id, bugId)
|
206
|
+
|
207
|
+
getBug.setTitle("Every thing is ok")
|
208
|
+
getBug.setDescription("This is a bug")
|
209
|
+
getBug.setDueDate("06-26-2014")
|
210
|
+
|
211
|
+
createBug = bugsAPI.create(project_id, getBug)
|
212
|
+
|
213
|
+
updateBug = bugsAPI.update(project_id, getBug)
|
214
|
+
|
215
|
+
deleteBug = bugsAPI.delete(project_id, bugId)
|
216
|
+
|
217
|
+
queryMap = Hash.new
|
218
|
+
queryMap["status"] = "open"
|
219
|
+
|
220
|
+
eventsAPI = EventsAPI.new("{auth_token}",portal_id)
|
221
|
+
events = eventsAPI.getEvents(project_id, queryMap)
|
222
|
+
puts events[0].getParticipants
|
223
|
+
|
224
|
+
event = events[0]
|
225
|
+
|
226
|
+
event.setTitle("Wrapper publish")
|
227
|
+
event.setHour("2")
|
228
|
+
event.setMinutes("30")
|
229
|
+
event.setAMPM("pm")
|
230
|
+
event.setScheduledOn("06-24-2014")
|
231
|
+
|
232
|
+
add = eventsAPI.add(project_id, event)
|
233
|
+
|
234
|
+
updateEvent = eventsAPI.update(project_id, event)
|
235
|
+
|
236
|
+
deleteEvent = eventsAPI.delete(project_id, String(event.getId))
|
237
|
+
|
238
|
+
foldersAPI = FoldersAPI.new("{auth_token}",portal_id)
|
239
|
+
folders = foldersAPI.getFolders(project_id)
|
240
|
+
folderId = folders[0].getId
|
241
|
+
folder = folders[0]
|
242
|
+
folder.setName("Sample Updated")
|
243
|
+
|
244
|
+
addFolder = foldersAPI.addFolder(project_id, folder);
|
245
|
+
|
246
|
+
updateFolder = foldersAPI.updateFolder(project_id, folder)
|
247
|
+
|
248
|
+
deleteFolder = foldersAPI.deleteFolder(project_id, String(updateFolder.getId))
|
249
|
+
|
250
|
+
documentsAPI = DocumentsAPI.new("{auth_token}",portal_id)
|
251
|
+
|
252
|
+
documents = documentsAPI.getDocuments(project_id, nil)
|
253
|
+
|
254
|
+
documentId = String(documents[0].getId)
|
255
|
+
|
256
|
+
getDocument = documentsAPI.get(project_id, documentId, nil)
|
257
|
+
|
258
|
+
folderId = documents[0].getFolder.getId
|
259
|
+
|
260
|
+
uploaddoc = Array.new
|
261
|
+
file = File.new("File url")
|
262
|
+
uploaddoc.push(file)
|
263
|
+
uploaddoc.push(file)
|
264
|
+
|
265
|
+
getDocument.setFolderId(folderId)
|
266
|
+
getDocument.setDescription("File Updated !!!")
|
267
|
+
getDocument.setUploaddoc(uploaddoc)
|
268
|
+
|
269
|
+
addDocument = documentsAPI.add(project_id, getDocument)
|
270
|
+
|
271
|
+
updateDocument = documentsAPI.update(project_id, getDocument)
|
272
|
+
|
273
|
+
deleteDocument = documentsAPI.delete(project_id, documentId)
|
274
|
+
|
275
|
+
forumsAPI = ForumsAPI.new("{auth_token}",portal_id)
|
276
|
+
|
277
|
+
categories = forumsAPI.getCategories(project_id)
|
278
|
+
categoryId = categories[0].getId
|
279
|
+
|
280
|
+
forums = forumsAPI.getForums(project_id, nil)
|
281
|
+
|
282
|
+
forumId = forums[0].getId
|
283
|
+
|
284
|
+
forum = Forum.new
|
285
|
+
uploadFile = Array.new
|
286
|
+
|
287
|
+
file1 = File.new("File url")
|
288
|
+
uploadFile.push(file1);
|
289
|
+
uploadFile.push(file1);
|
290
|
+
|
291
|
+
forum.setName("API Discussion New")
|
292
|
+
forum.setContent("Discuss about projects API wrappers")
|
293
|
+
forum.setUploadfile(uploadFile)
|
294
|
+
forum.setCategoryId(categoryId)
|
295
|
+
|
296
|
+
addForum = forumsAPI.add(project_id, forum)
|
297
|
+
|
298
|
+
updateForum = forumsAPI.update(project_id, forum)
|
299
|
+
|
300
|
+
deleteForum = forumsAPI.delete(project_id, String(addForum.getId))
|
301
|
+
|
302
|
+
category.setName("API")
|
303
|
+
|
304
|
+
addCategory = forumsAPI.addCategory(projectId, category)
|
305
|
+
|
306
|
+
comments = forumsAPI.getComments(project_id, forumId,nil);
|
307
|
+
|
308
|
+
comment = comments[0]
|
309
|
+
|
310
|
+
comment=Comment.new
|
311
|
+
comment.setContent("URL changes not added in the document.")
|
312
|
+
|
313
|
+
addComment = forumsAPI.addComment(project_id, forumId, comment)
|
314
|
+
|
315
|
+
usersAPI = UsersAPI.new("{auth_token}",portal_id)
|
316
|
+
users = usersAPI.getUsers(project_id)
|
317
|
+
|
318
|
+
rescue ProjectsException => pe
|
319
|
+
puts "Code: " + String(pe.getCode)
|
320
|
+
puts "Message: " + pe.getMessage
|
321
|
+
end
|