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,54 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Model
|
4
|
+
# * This class is used to make an object for TimelogList.
|
5
|
+
|
6
|
+
class TimelogList < Array
|
7
|
+
|
8
|
+
private
|
9
|
+
attr_accessor :grandtotal, :role
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
# * Set the grand total of the time log.
|
14
|
+
#
|
15
|
+
# ==== Parameters
|
16
|
+
#
|
17
|
+
# * grandtotal:: - Grand total of the time log.
|
18
|
+
|
19
|
+
def setGrandtotal(grandtotal)
|
20
|
+
@grandtotal = grandtotal
|
21
|
+
end
|
22
|
+
|
23
|
+
# * Get the grand total of the time log.
|
24
|
+
#
|
25
|
+
# ==== Returns
|
26
|
+
#
|
27
|
+
# * The grand total of the timelog.
|
28
|
+
|
29
|
+
def getGrandtotal
|
30
|
+
return grandtotal
|
31
|
+
end
|
32
|
+
|
33
|
+
# * Set the time log role.
|
34
|
+
#
|
35
|
+
# ==== Parameters
|
36
|
+
#
|
37
|
+
# * role:: - Role for the time log.
|
38
|
+
|
39
|
+
def setRole(role)
|
40
|
+
@role = role
|
41
|
+
end
|
42
|
+
|
43
|
+
# * Get the time log role.
|
44
|
+
#
|
45
|
+
# ==== Returns
|
46
|
+
#
|
47
|
+
# * The time log role.
|
48
|
+
|
49
|
+
def getRole
|
50
|
+
return @role
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Model
|
4
|
+
# * This class is used to make an object for User.
|
5
|
+
|
6
|
+
class User
|
7
|
+
|
8
|
+
private
|
9
|
+
attr_accessor :id, :name, :email, :role
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
# * Set the user id.
|
14
|
+
#
|
15
|
+
# ==== Parameters
|
16
|
+
#
|
17
|
+
# * id:: - ID of the user.
|
18
|
+
|
19
|
+
def setId(id)
|
20
|
+
@id = id
|
21
|
+
end
|
22
|
+
|
23
|
+
# * Get the user id.
|
24
|
+
#
|
25
|
+
# ==== Returns
|
26
|
+
#
|
27
|
+
# * User id.
|
28
|
+
|
29
|
+
def getId
|
30
|
+
return @id
|
31
|
+
end
|
32
|
+
|
33
|
+
# * Set the user name.
|
34
|
+
#
|
35
|
+
# ==== Parameters
|
36
|
+
#
|
37
|
+
# * name:: - Name of the user.
|
38
|
+
|
39
|
+
def setName(name)
|
40
|
+
@name = name
|
41
|
+
end
|
42
|
+
|
43
|
+
# * Get the user name.
|
44
|
+
#
|
45
|
+
# ==== Returns
|
46
|
+
#
|
47
|
+
# * User name.
|
48
|
+
|
49
|
+
def getName
|
50
|
+
return @name
|
51
|
+
end
|
52
|
+
|
53
|
+
# * Set the user email.
|
54
|
+
#
|
55
|
+
# ==== Parameters
|
56
|
+
#
|
57
|
+
# * email:: - Email for the user.
|
58
|
+
|
59
|
+
def setEmail(email)
|
60
|
+
@email = email
|
61
|
+
end
|
62
|
+
|
63
|
+
# * Get the user email.
|
64
|
+
#
|
65
|
+
# ==== Returns
|
66
|
+
#
|
67
|
+
# * User email.
|
68
|
+
|
69
|
+
def getEmail
|
70
|
+
return @email
|
71
|
+
end
|
72
|
+
|
73
|
+
# * Set the user role.
|
74
|
+
#
|
75
|
+
# ==== Parameters
|
76
|
+
#
|
77
|
+
# * role:: - Role for the user.
|
78
|
+
|
79
|
+
def setRole(role)
|
80
|
+
@role = role
|
81
|
+
end
|
82
|
+
|
83
|
+
# * Get the user role.
|
84
|
+
#
|
85
|
+
# ==== Returns
|
86
|
+
#
|
87
|
+
# * user role.
|
88
|
+
|
89
|
+
def getRole
|
90
|
+
return @role
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Model
|
4
|
+
# * This class is used to make an object for Version.
|
5
|
+
|
6
|
+
class Version
|
7
|
+
|
8
|
+
private
|
9
|
+
attr_accessor :id, :uploadedBy, :description, :version, :uploadedOn, :fileSize, :uploadedDate, :uploadedDateFormat, :uploadedDateLong
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
# * Set the version id.
|
14
|
+
#
|
15
|
+
# ==== Parameters
|
16
|
+
#
|
17
|
+
# * id:: - ID of the version.
|
18
|
+
|
19
|
+
def setId(id)
|
20
|
+
@id = id
|
21
|
+
end
|
22
|
+
|
23
|
+
# * Get the version id.
|
24
|
+
#
|
25
|
+
# ==== Returns
|
26
|
+
#
|
27
|
+
# * Version id.
|
28
|
+
|
29
|
+
def getId
|
30
|
+
return @id
|
31
|
+
end
|
32
|
+
|
33
|
+
# * Set the id of the person who has uploaded.
|
34
|
+
#
|
35
|
+
# ==== Parameters
|
36
|
+
#
|
37
|
+
# * uploadedBy:: - Id of the person who has uploaded.
|
38
|
+
|
39
|
+
def setUploadedBy(uploadedBy)
|
40
|
+
@uploadedBy = uploadedBy
|
41
|
+
end
|
42
|
+
|
43
|
+
# * Get the id of the person who has uploaded.
|
44
|
+
#
|
45
|
+
# ==== Returns
|
46
|
+
#
|
47
|
+
# * Id of the user who has uploaded.
|
48
|
+
|
49
|
+
def getUploadedBy
|
50
|
+
return @uploadedBy
|
51
|
+
end
|
52
|
+
|
53
|
+
# * Set the version description.
|
54
|
+
#
|
55
|
+
# ==== Parameters
|
56
|
+
#
|
57
|
+
# * description:: - Description for the version.
|
58
|
+
|
59
|
+
def setDescription(description)
|
60
|
+
@description = description
|
61
|
+
end
|
62
|
+
|
63
|
+
# * Get the version description.
|
64
|
+
#
|
65
|
+
# ==== Returns
|
66
|
+
#
|
67
|
+
# * Version description.
|
68
|
+
|
69
|
+
def getDescription
|
70
|
+
return @description
|
71
|
+
end
|
72
|
+
|
73
|
+
# * Set the version.
|
74
|
+
#
|
75
|
+
# ==== Parameters
|
76
|
+
#
|
77
|
+
# * version:: - Version of the document.
|
78
|
+
|
79
|
+
def setVersion(version)
|
80
|
+
@version = version
|
81
|
+
end
|
82
|
+
|
83
|
+
# * Get the version.
|
84
|
+
#
|
85
|
+
# ==== Returns
|
86
|
+
#
|
87
|
+
# * Document version.
|
88
|
+
|
89
|
+
def getVersion
|
90
|
+
return @version
|
91
|
+
end
|
92
|
+
|
93
|
+
# * Set when was the document uploaded on.
|
94
|
+
#
|
95
|
+
# ==== Parameters
|
96
|
+
#
|
97
|
+
# * uploadedOn:: - When was the document uploaded on.
|
98
|
+
|
99
|
+
def setUploadedOn(uploadedOn)
|
100
|
+
@uploadedOn = uploadedOn
|
101
|
+
end
|
102
|
+
|
103
|
+
# * Get when the document was uploaded on.
|
104
|
+
#
|
105
|
+
# ==== Returns
|
106
|
+
#
|
107
|
+
# * Time of uploading the document.
|
108
|
+
|
109
|
+
def getUploadedOn
|
110
|
+
return @uploadedOn
|
111
|
+
end
|
112
|
+
|
113
|
+
# * Set the file size.
|
114
|
+
#
|
115
|
+
# ==== Parameters
|
116
|
+
#
|
117
|
+
# * fileSize:: - Size of the file.
|
118
|
+
|
119
|
+
def setFileSize(fileSize)
|
120
|
+
@fileSize = fileSize
|
121
|
+
end
|
122
|
+
|
123
|
+
# * Get the file size.
|
124
|
+
#
|
125
|
+
# ==== Returns
|
126
|
+
#
|
127
|
+
# * File size.
|
128
|
+
|
129
|
+
def getFileSize
|
130
|
+
return @fileSize
|
131
|
+
end
|
132
|
+
|
133
|
+
# * Set the uploaded date.
|
134
|
+
#
|
135
|
+
# ==== Parameters
|
136
|
+
#
|
137
|
+
# * uploadedDate:: - Document uploaded date.
|
138
|
+
|
139
|
+
def setUploadedDate(uploadedDate)
|
140
|
+
@uploadedDate = uploadedDate
|
141
|
+
end
|
142
|
+
|
143
|
+
# * Get the uploaded date.
|
144
|
+
#
|
145
|
+
# ==== Returns
|
146
|
+
#
|
147
|
+
# * Uploaded date.
|
148
|
+
|
149
|
+
def getUploadedDate
|
150
|
+
return @uploadedDate
|
151
|
+
end
|
152
|
+
|
153
|
+
# * Set the uploaded date format.
|
154
|
+
#
|
155
|
+
# ==== Parameters
|
156
|
+
#
|
157
|
+
# * uploadedDate:: - Document uploaded date format.
|
158
|
+
|
159
|
+
def setUploadedDateFormat(uploadedDateFormat)
|
160
|
+
@uploadedDateFormat = uploadedDateFormat
|
161
|
+
end
|
162
|
+
|
163
|
+
# * Get the uploaded date format.
|
164
|
+
#
|
165
|
+
# ==== Returns
|
166
|
+
#
|
167
|
+
# * Uploaded date format.
|
168
|
+
|
169
|
+
def getUploadedDateFormat
|
170
|
+
return @uploadedDateFormat
|
171
|
+
end
|
172
|
+
|
173
|
+
# * Set the uploaded date long.
|
174
|
+
#
|
175
|
+
# ==== Parameters
|
176
|
+
#
|
177
|
+
# * uploadedDateLong:: - Document uploaded date long.
|
178
|
+
|
179
|
+
def setUploadedDateLong(uploadedDateLong)
|
180
|
+
@uploadedDateLong = uploadedDateLong
|
181
|
+
end
|
182
|
+
|
183
|
+
# * Get the document uploaded date long.
|
184
|
+
#
|
185
|
+
# ==== Returns
|
186
|
+
#
|
187
|
+
# * document uploaded date long.
|
188
|
+
|
189
|
+
def getUploadedDateLong
|
190
|
+
return @uploadedDateLong
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Parser
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Bug'
|
7
|
+
|
8
|
+
|
9
|
+
# * Parse the JSON response into respective objects.
|
10
|
+
|
11
|
+
class BugParser
|
12
|
+
include Projects::Model
|
13
|
+
# * Parse the JSON response and make it into List of Bug object.
|
14
|
+
#
|
15
|
+
# ==== Parameters
|
16
|
+
#
|
17
|
+
# * response:: - This JSON response contains the details of bugs.
|
18
|
+
#
|
19
|
+
# ==== Returns
|
20
|
+
#
|
21
|
+
# * List of Bug object.
|
22
|
+
|
23
|
+
|
24
|
+
def getBugs(response)
|
25
|
+
bugs_all_json = JSON.parse response
|
26
|
+
bugs_all_array = bugs_all_json["bugs"]
|
27
|
+
bugs_class_array = Array.new
|
28
|
+
for i in 0...bugs_all_array.length
|
29
|
+
bugs_class_array.push(jsonToBug(bugs_all_array[i]))
|
30
|
+
end
|
31
|
+
return bugs_class_array
|
32
|
+
end
|
33
|
+
|
34
|
+
# * Parse the JSON response and make it into Bug object.
|
35
|
+
#
|
36
|
+
# ==== Parameters
|
37
|
+
#
|
38
|
+
# * response:: - This JSON response contains the details of a bug.
|
39
|
+
#
|
40
|
+
# ==== Returns
|
41
|
+
#
|
42
|
+
# * Bug object.
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
def getBug(response)
|
47
|
+
bug_json = JSON.parse response
|
48
|
+
bug_array = bug_json["bugs"]
|
49
|
+
return jsonToBug(bug_array[0])
|
50
|
+
end
|
51
|
+
|
52
|
+
# * Parse the JSONObject into Bug object.
|
53
|
+
#
|
54
|
+
# ==== Parameters
|
55
|
+
#
|
56
|
+
# * jsonObject:: - JSONObject contains the details of a bug.
|
57
|
+
#
|
58
|
+
# ==== Returns
|
59
|
+
#
|
60
|
+
# * Bug object.
|
61
|
+
|
62
|
+
|
63
|
+
def jsonToBug(jsonObject)
|
64
|
+
bug = Bug.new
|
65
|
+
|
66
|
+
if jsonObject.has_key?("id")
|
67
|
+
bug.setId(jsonObject["id"])
|
68
|
+
end
|
69
|
+
if jsonObject.has_key?("key")
|
70
|
+
bug.setKey(jsonObject["key"])
|
71
|
+
end
|
72
|
+
|
73
|
+
if jsonObject.has_key?("project")
|
74
|
+
bug.setProjectId(jsonObject["project"]["id"])
|
75
|
+
end
|
76
|
+
|
77
|
+
if jsonObject.has_key?("flag")
|
78
|
+
bug.setFlag(jsonObject["flag"])
|
79
|
+
end
|
80
|
+
if jsonObject.has_key?("title")
|
81
|
+
bug.setTitle(jsonObject["title"])
|
82
|
+
end
|
83
|
+
if jsonObject.has_key?("description")
|
84
|
+
bug.setDescription(jsonObject["description"])
|
85
|
+
end
|
86
|
+
if jsonObject.has_key?("reporter_id")
|
87
|
+
bug.setReporterId(jsonObject["reporter_id"])
|
88
|
+
end
|
89
|
+
if jsonObject.has_key?("reported_person")
|
90
|
+
bug.setReportedPerson(jsonObject["reported_person"])
|
91
|
+
end
|
92
|
+
if jsonObject.has_key?("created_time")
|
93
|
+
bug.setCreatedTime(jsonObject["created_time"])
|
94
|
+
end
|
95
|
+
if jsonObject.has_key?("created_time_format")
|
96
|
+
bug.setCreatedTimeFormat(jsonObject["created_time_format"])
|
97
|
+
end
|
98
|
+
if jsonObject.has_key?("created_time_long")
|
99
|
+
bug.setCreatedTimeLong(jsonObject["created_time_long"])
|
100
|
+
end
|
101
|
+
if jsonObject.has_key?("assignee_id")
|
102
|
+
bug.setAssigneeId(jsonObject["assignee_id"])
|
103
|
+
end
|
104
|
+
if jsonObject.has_key?("assignee_name")
|
105
|
+
bug.setAssigneeName(jsonObject["assignee_name"])
|
106
|
+
end
|
107
|
+
if jsonObject.has_key?("closed")
|
108
|
+
bug.setClosed(jsonObject["closed"])
|
109
|
+
end
|
110
|
+
if jsonObject.has_key?("due_date")
|
111
|
+
bug.setDueDate(jsonObject["due_date"])
|
112
|
+
end
|
113
|
+
if jsonObject.has_key?("due_date_format")
|
114
|
+
bug.setDueDateFormat(jsonObject["due_date_format"])
|
115
|
+
end
|
116
|
+
if jsonObject.has_key?("due_date_long")
|
117
|
+
bug.setDueDateLong(jsonObject["due_date_long"])
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
if jsonObject.has_key?("classification")
|
122
|
+
classification = jsonObject["classification"]
|
123
|
+
|
124
|
+
if classification.has_key?("id")
|
125
|
+
bug.setClassificationId(classification["id"])
|
126
|
+
end
|
127
|
+
if classification.has_key?("type")
|
128
|
+
bug.setClassificationType(classification["type"])
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
if jsonObject.has_key?("severity")
|
133
|
+
severity = jsonObject["severity"]
|
134
|
+
|
135
|
+
if severity.has_key?("id")
|
136
|
+
bug.setSeverityId(severity["id"])
|
137
|
+
end
|
138
|
+
if severity.has_key?("type")
|
139
|
+
bug.setSeverityType(severity["type"])
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
if jsonObject.has_key?("status")
|
144
|
+
status = jsonObject["status"]
|
145
|
+
|
146
|
+
if status.has_key?("id")
|
147
|
+
bug.setStatusId(status["id"])
|
148
|
+
end
|
149
|
+
if status.has_key?("type")
|
150
|
+
bug.setStatusType(status["type"])
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
if jsonObject.has_key?("reproducible")
|
155
|
+
reproducible = jsonObject["reproducible"]
|
156
|
+
|
157
|
+
if reproducible.has_key?("id")
|
158
|
+
bug.setReproducibleId(reproducible["id"])
|
159
|
+
end
|
160
|
+
if reproducible.has_key?("type")
|
161
|
+
bug.setReproducibleType(reproducible["type"])
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
if jsonObject.has_key?("module")
|
166
|
+
mod = jsonObject["module"]
|
167
|
+
|
168
|
+
if mod.has_key?("id")
|
169
|
+
bug.setModuleId(mod["id"])
|
170
|
+
end
|
171
|
+
if mod.has_key?("name")
|
172
|
+
bug.setModuleName(mod["name"])
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
if jsonObject.has_key?("link")
|
177
|
+
link = jsonObject["link"]
|
178
|
+
|
179
|
+
if link.has_key?("self")
|
180
|
+
bug.setURL(link["self"]["url"])
|
181
|
+
end
|
182
|
+
|
183
|
+
if link.has_key?("timesheet")
|
184
|
+
bug.setTimesheetURL(link["timesheet"]["url"])
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
return bug
|
189
|
+
end
|
190
|
+
|
191
|
+
# * Parse the JSON response and get the success message.
|
192
|
+
#
|
193
|
+
# ==== Parameters
|
194
|
+
#
|
195
|
+
# * response:: - This JSON response contains the success message.
|
196
|
+
#
|
197
|
+
# ==== Returns
|
198
|
+
#
|
199
|
+
# * String object.
|
200
|
+
|
201
|
+
def getResult(response)
|
202
|
+
jsonObject = JSON.parse response
|
203
|
+
result = jsonObject["response"]
|
204
|
+
return result
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|