zohoProjects 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +17 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +145 -0
  6. data/Rakefile +2 -0
  7. data/lib/projects/api/API.rb +57 -0
  8. data/lib/projects/api/BugsAPI.rb +135 -0
  9. data/lib/projects/api/DocumentsAPI.rb +145 -0
  10. data/lib/projects/api/EventsAPI.rb +115 -0
  11. data/lib/projects/api/FoldersAPI.rb +111 -0
  12. data/lib/projects/api/ForumsAPI.rb +198 -0
  13. data/lib/projects/api/MilestonesAPI.rb +159 -0
  14. data/lib/projects/api/PortalAPI.rb +41 -0
  15. data/lib/projects/api/ProjectsAPI.rb +203 -0
  16. data/lib/projects/api/TasklistsAPI.rb +113 -0
  17. data/lib/projects/api/TasksAPI.rb +153 -0
  18. data/lib/projects/api/TimesheetsAPI.rb +240 -0
  19. data/lib/projects/api/UsersAPI.rb +48 -0
  20. data/lib/projects/exception/ProjectsException.rb +50 -0
  21. data/lib/projects/model/Activity.rb +173 -0
  22. data/lib/projects/model/Bug.rb +701 -0
  23. data/lib/projects/model/Buglog.rb +56 -0
  24. data/lib/projects/model/Category.rb +70 -0
  25. data/lib/projects/model/Comment.rb +289 -0
  26. data/lib/projects/model/Document.rb +260 -0
  27. data/lib/projects/model/Event.rb +391 -0
  28. data/lib/projects/model/Folder.rb +110 -0
  29. data/lib/projects/model/Forum.rb +320 -0
  30. data/lib/projects/model/Generallog.rb +36 -0
  31. data/lib/projects/model/Log.rb +359 -0
  32. data/lib/projects/model/Milestone.rb +322 -0
  33. data/lib/projects/model/Owner.rb +54 -0
  34. data/lib/projects/model/Participant.rb +54 -0
  35. data/lib/projects/model/Portal.rb +273 -0
  36. data/lib/projects/model/Project.rb +593 -0
  37. data/lib/projects/model/Status.rb +168 -0
  38. data/lib/projects/model/Task.rb +497 -0
  39. data/lib/projects/model/Tasklist.rb +300 -0
  40. data/lib/projects/model/Tasklog.rb +56 -0
  41. data/lib/projects/model/Timelog.rb +134 -0
  42. data/lib/projects/model/TimelogList.rb +54 -0
  43. data/lib/projects/model/User.rb +94 -0
  44. data/lib/projects/model/Version.rb +194 -0
  45. data/lib/projects/parser/BugParser.rb +208 -0
  46. data/lib/projects/parser/DocumentParser.rb +197 -0
  47. data/lib/projects/parser/EventParser.rb +156 -0
  48. data/lib/projects/parser/FolderParser.rb +99 -0
  49. data/lib/projects/parser/ForumParser.rb +253 -0
  50. data/lib/projects/parser/MilestonesParser.rb +129 -0
  51. data/lib/projects/parser/PortalParser.rb +103 -0
  52. data/lib/projects/parser/ProjectParser.rb +318 -0
  53. data/lib/projects/parser/TaskParser.rb +293 -0
  54. data/lib/projects/parser/TasklistParser.rb +127 -0
  55. data/lib/projects/parser/TimesheetParser.rb +390 -0
  56. data/lib/projects/parser/UserParser.rb +63 -0
  57. data/lib/projects/service/ZohoProject.rb +174 -0
  58. data/lib/projects/util/ZohoHTTPClient.rb +205 -0
  59. data/lib/test/ProjectsTest.rb +321 -0
  60. data/lib/zohoProjects.rb +35 -0
  61. data/lib/zohoProjects/version.rb +3 -0
  62. data/zohoProjects.gemspec +86 -0
  63. 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