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