zohoProjects 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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,197 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Parser
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Document'
|
7
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Version'
|
8
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Folder'
|
9
|
+
|
10
|
+
# * Parse the JSON response into respective objects.
|
11
|
+
|
12
|
+
class DocumentParser
|
13
|
+
include Projects::Model
|
14
|
+
# * Parse the JSON response and make it into List of Document object.
|
15
|
+
#
|
16
|
+
# ==== Parameters
|
17
|
+
#
|
18
|
+
# * response:: - This JSON response contains the details of a documents.
|
19
|
+
#
|
20
|
+
# ==== Returns
|
21
|
+
#
|
22
|
+
# * List of Document object.
|
23
|
+
|
24
|
+
def getDocuments(response)
|
25
|
+
documents_all_json = JSON.parse response
|
26
|
+
documents_all_array = documents_all_json["documents"]
|
27
|
+
documents_class_array = Array.new
|
28
|
+
for i in 0...documents_all_array.length
|
29
|
+
documents_class_array.push(jsonToDocument(documents_all_array[i]))
|
30
|
+
end
|
31
|
+
return documents_class_array
|
32
|
+
end
|
33
|
+
|
34
|
+
# * Parse the JSON response and make it into Document object.
|
35
|
+
#
|
36
|
+
# ==== Parameters
|
37
|
+
#
|
38
|
+
# * response:: - This JSON response contains the details of a document.
|
39
|
+
#
|
40
|
+
# ==== Returns
|
41
|
+
#
|
42
|
+
# * Document object.
|
43
|
+
|
44
|
+
def getDocument(response)
|
45
|
+
document_json = JSON.parse response
|
46
|
+
document_array = document_json["documents"]
|
47
|
+
return jsonToDocument(document_array[0])
|
48
|
+
end
|
49
|
+
|
50
|
+
# * Parse the JSONObject into Document object.
|
51
|
+
#
|
52
|
+
# ==== Parameters
|
53
|
+
#
|
54
|
+
# * jsonObject:: - JSONObject contains the details of the document.
|
55
|
+
#
|
56
|
+
# ==== Returns
|
57
|
+
#
|
58
|
+
# * Document object.
|
59
|
+
|
60
|
+
def jsonToDocument(jsonObject)
|
61
|
+
document = Document.new
|
62
|
+
|
63
|
+
if jsonObject.has_key?("id")
|
64
|
+
document.setId(jsonObject["id"])
|
65
|
+
end
|
66
|
+
if jsonObject.has_key?("file_name")
|
67
|
+
document.setFilename(jsonObject["file_name"])
|
68
|
+
end
|
69
|
+
if jsonObject.has_key?("content_type")
|
70
|
+
document.setContenttype(jsonObject["content_type"])
|
71
|
+
end
|
72
|
+
|
73
|
+
if jsonObject.has_key?("versions")
|
74
|
+
versions = jsonObject["versions"]
|
75
|
+
|
76
|
+
versionList = Array.new
|
77
|
+
|
78
|
+
for i in 0...versions.length
|
79
|
+
version = versions[i]
|
80
|
+
versionList.push(jsonToVersion(version))
|
81
|
+
end
|
82
|
+
|
83
|
+
document.setVersions(versionList)
|
84
|
+
end
|
85
|
+
|
86
|
+
if jsonObject.has_key?("folder")
|
87
|
+
folder = jsonObject["folder"]
|
88
|
+
document.setFolder(jsonToFolder(folder))
|
89
|
+
end
|
90
|
+
|
91
|
+
if jsonObject.has_key?("link")
|
92
|
+
link = jsonObject["link"]
|
93
|
+
|
94
|
+
if link.has_key?("self")
|
95
|
+
document.setURL(link["self"]["url"])
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
return document
|
100
|
+
end
|
101
|
+
|
102
|
+
# * Parse the JSONObject into Version object.
|
103
|
+
#
|
104
|
+
# ==== Parameters
|
105
|
+
#
|
106
|
+
# * jsonObject:: - JSONObject contains the details of a version.
|
107
|
+
#
|
108
|
+
# ==== Returns
|
109
|
+
#
|
110
|
+
# * Version object.
|
111
|
+
|
112
|
+
def jsonToVersion(jsonObject)
|
113
|
+
version = Version.new
|
114
|
+
|
115
|
+
if jsonObject.has_key?("id")
|
116
|
+
version.setId(jsonObject["id"])
|
117
|
+
end
|
118
|
+
if jsonObject.has_key?("uploaded_by")
|
119
|
+
version.setUploadedBy(jsonObject["uploaded_by"])
|
120
|
+
end
|
121
|
+
if jsonObject.has_key?("description")
|
122
|
+
version.setDescription(jsonObject["description"])
|
123
|
+
end
|
124
|
+
if jsonObject.has_key?("version")
|
125
|
+
version.setVersion(jsonObject["version"])
|
126
|
+
end
|
127
|
+
if jsonObject.has_key?("uploaded_on")
|
128
|
+
version.setUploadedOn(jsonObject["uploaded_on"])
|
129
|
+
end
|
130
|
+
if jsonObject.has_key?("file_size")
|
131
|
+
version.setFileSize(jsonObject["file_size"])
|
132
|
+
end
|
133
|
+
if jsonObject.has_key?("uploaded_date")
|
134
|
+
version.setUploadedDate(jsonObject["uploaded_date"])
|
135
|
+
end
|
136
|
+
if jsonObject.has_key?("uploaded_date_format")
|
137
|
+
version.setUploadedDateFormat(jsonObject["uploaded_date_format"])
|
138
|
+
end
|
139
|
+
if jsonObject.has_key?("uploaded_date_long")
|
140
|
+
version.setUploadedDateLong(jsonObject["uploaded_date_long"])
|
141
|
+
end
|
142
|
+
|
143
|
+
return version
|
144
|
+
end
|
145
|
+
|
146
|
+
# * Parse the JSONObject into Folder object.
|
147
|
+
#
|
148
|
+
# ==== Parameters
|
149
|
+
#
|
150
|
+
# * jsonObject:: - JSONObject contains the details of a folder.
|
151
|
+
#
|
152
|
+
# ==== Returns
|
153
|
+
#
|
154
|
+
# * Folder object.
|
155
|
+
|
156
|
+
def jsonToFolder(jsonObject)
|
157
|
+
folder = Folder.new
|
158
|
+
|
159
|
+
if jsonObject.has_key?("id")
|
160
|
+
folder.setId(jsonObject["id"])
|
161
|
+
end
|
162
|
+
if jsonObject.has_key?("name")
|
163
|
+
folder.setName(jsonObject["name"])
|
164
|
+
end
|
165
|
+
if jsonObject.has_key?("is_discussion")
|
166
|
+
folder.setIsDicussion(jsonObject["is_discussion"])
|
167
|
+
end
|
168
|
+
|
169
|
+
if jsonObject.has_key?("link")
|
170
|
+
link = jsonObject["link"]
|
171
|
+
|
172
|
+
if link.has_key?("self")
|
173
|
+
folder.setURL(link["self"]["url"])
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
return folder
|
178
|
+
end
|
179
|
+
|
180
|
+
# * Parse the JSON response and get the success message.
|
181
|
+
#
|
182
|
+
# ==== Parameters
|
183
|
+
#
|
184
|
+
# * response:: - This JSON response contains the success message.
|
185
|
+
#
|
186
|
+
# ==== Returns
|
187
|
+
#
|
188
|
+
# * String object.
|
189
|
+
|
190
|
+
def getResult(response)
|
191
|
+
jsonObject = JSON.parse response
|
192
|
+
result = jsonObject["response"]
|
193
|
+
return result
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Parser
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Event'
|
7
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Participant'
|
8
|
+
|
9
|
+
|
10
|
+
# * Parse the JSON response into respective objects.
|
11
|
+
|
12
|
+
class EventParser
|
13
|
+
include Projects::Model
|
14
|
+
# * Parse the JSON response and make it into List of Event object.
|
15
|
+
#
|
16
|
+
# ==== Parameters
|
17
|
+
#
|
18
|
+
# * response:: - This JSON response contains the details of events.
|
19
|
+
#
|
20
|
+
# ==== Returns
|
21
|
+
#
|
22
|
+
# * List of Event object.
|
23
|
+
|
24
|
+
def getEvents(response)
|
25
|
+
events_all_json = JSON.parse response
|
26
|
+
events_all_array = events_all_json["events"]
|
27
|
+
events_class_array = Array.new
|
28
|
+
for i in 0...events_all_array.length
|
29
|
+
events_class_array.push(jsonToEvent(events_all_array[i]))
|
30
|
+
end
|
31
|
+
return events_class_array
|
32
|
+
end
|
33
|
+
|
34
|
+
# * Parse the JSON response and make it into Event object.
|
35
|
+
#
|
36
|
+
# ==== Parameters
|
37
|
+
#
|
38
|
+
# * response:: - This JSON response contains the details of an event.
|
39
|
+
#
|
40
|
+
# ==== Returns
|
41
|
+
#
|
42
|
+
# * Event object.
|
43
|
+
|
44
|
+
def getEvent(response)
|
45
|
+
event_json = JSON.parse response
|
46
|
+
event_array = event_json["events"]
|
47
|
+
return jsonToEvent(event_array[0])
|
48
|
+
end
|
49
|
+
|
50
|
+
# * Parse the JSONObject into Event object.
|
51
|
+
#
|
52
|
+
# ==== Parameters
|
53
|
+
#
|
54
|
+
# * jsonObject:: - JSONObject contains the details of an event.
|
55
|
+
#
|
56
|
+
# ==== Returns
|
57
|
+
#
|
58
|
+
# * Event object.
|
59
|
+
|
60
|
+
def jsonToEvent(jsonObject)
|
61
|
+
|
62
|
+
event = Event.new
|
63
|
+
|
64
|
+
if jsonObject.has_key?("id")
|
65
|
+
event.setId(jsonObject["id"])
|
66
|
+
end
|
67
|
+
if jsonObject.has_key?("title")
|
68
|
+
event.setTitle(jsonObject["title"])
|
69
|
+
end
|
70
|
+
if jsonObject.has_key?("location")
|
71
|
+
event.setLocation(jsonObject["location"])
|
72
|
+
end
|
73
|
+
if jsonObject.has_key?("scheduled_on")
|
74
|
+
event.setScheduledOn(jsonObject["scheduled_on"])
|
75
|
+
end
|
76
|
+
if jsonObject.has_key?("scheduled_on_long")
|
77
|
+
event.setScheduledOnLong(jsonObject["scheduled_on_long"])
|
78
|
+
end
|
79
|
+
if jsonObject.has_key?("reminder")
|
80
|
+
event.setReminder(jsonObject["reminder"])
|
81
|
+
end
|
82
|
+
if jsonObject.has_key?("repeat")
|
83
|
+
event.setRepeat(jsonObject["repeat"])
|
84
|
+
end
|
85
|
+
if jsonObject.has_key?("occurrence(s)")
|
86
|
+
event.setOccurrences(jsonObject["occurrence(s)"])
|
87
|
+
end
|
88
|
+
if jsonObject.has_key?("occurred")
|
89
|
+
event.setOccurred(jsonObject["occurred"])
|
90
|
+
end
|
91
|
+
if jsonObject.has_key?("duration_hour")
|
92
|
+
event.setDurationHours(jsonObject["duration_hour"])
|
93
|
+
end
|
94
|
+
if jsonObject.has_key?("duration_minutes")
|
95
|
+
event.setDurationMinutes(jsonObject["duration_minutes"])
|
96
|
+
end
|
97
|
+
|
98
|
+
if jsonObject.has_key?("participants")
|
99
|
+
participants = jsonObject["participants"]
|
100
|
+
|
101
|
+
participantList = Array.new
|
102
|
+
|
103
|
+
for j in 0...participants.length
|
104
|
+
participant = participants[j]
|
105
|
+
participantList.push(jsonToParticipant(participant))
|
106
|
+
end
|
107
|
+
|
108
|
+
event.setParticipants(participantList)
|
109
|
+
end
|
110
|
+
|
111
|
+
return event
|
112
|
+
end
|
113
|
+
|
114
|
+
# * Parse the JSONObject into Participant object.
|
115
|
+
#
|
116
|
+
# ==== Parameters
|
117
|
+
#
|
118
|
+
# * jsonObject:: - JSONObject contains the details of a participant.
|
119
|
+
#
|
120
|
+
# ==== Returns
|
121
|
+
#
|
122
|
+
# * Participant object.
|
123
|
+
|
124
|
+
def jsonToParticipant(jsonObject)
|
125
|
+
|
126
|
+
participant = Participant.new
|
127
|
+
|
128
|
+
if jsonObject.has_key?("participant_id")
|
129
|
+
participant.setParticipantId(jsonObject["participant_id"])
|
130
|
+
end
|
131
|
+
if jsonObject.has_key?("participant_person")
|
132
|
+
participant.setParticipantPerson(jsonObject["participant_person"])
|
133
|
+
end
|
134
|
+
|
135
|
+
return participant
|
136
|
+
end
|
137
|
+
|
138
|
+
# * Parse the JSON response and get the success message.
|
139
|
+
#
|
140
|
+
# ==== Parameters
|
141
|
+
#
|
142
|
+
# * response:: - This JSON response contains the success message.
|
143
|
+
#
|
144
|
+
# ==== Returns
|
145
|
+
#
|
146
|
+
# * String object.
|
147
|
+
|
148
|
+
def getResult(response)
|
149
|
+
jsonObject = JSON.parse response
|
150
|
+
result = jsonObject["response"]
|
151
|
+
return result
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# $Id$
|
2
|
+
module Projects
|
3
|
+
module Parser
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
require File.dirname(__FILE__).chomp("/projects/parser") + '/projects/model/Folder'
|
7
|
+
|
8
|
+
# * Parse the JSON response into respective objects.
|
9
|
+
|
10
|
+
class FolderParser
|
11
|
+
include Projects::Model
|
12
|
+
# * Parse the JSON response and make it into List of Folder object.
|
13
|
+
#
|
14
|
+
# ==== Parameters
|
15
|
+
#
|
16
|
+
# * response:: - This JSON response contains the details of folders.
|
17
|
+
#
|
18
|
+
# ==== Returns
|
19
|
+
#
|
20
|
+
# * List of Folder object.
|
21
|
+
|
22
|
+
def getFolders(response)
|
23
|
+
folders_all_json = JSON.parse response
|
24
|
+
folders_all_array = folders_all_json["folders"]
|
25
|
+
folders_class_array = Array.new
|
26
|
+
for i in 0...folders_all_array.length
|
27
|
+
folders_class_array.push(jsonToFolder(folders_all_array[i]))
|
28
|
+
end
|
29
|
+
return folders_class_array
|
30
|
+
end
|
31
|
+
|
32
|
+
# * Parse the JSON response and make it into Folder object.
|
33
|
+
#
|
34
|
+
# ==== Parameters
|
35
|
+
#
|
36
|
+
# * response:: - This JSON response contains the details of a folder.
|
37
|
+
#
|
38
|
+
# ==== Returns
|
39
|
+
#
|
40
|
+
# * Folder object.
|
41
|
+
|
42
|
+
def getFolder(response)
|
43
|
+
folder_json = JSON.parse response
|
44
|
+
folder_array = folder_json["folders"]
|
45
|
+
return jsonToFolder(folder_array[0])
|
46
|
+
end
|
47
|
+
|
48
|
+
# * Parse the JSONObject into Folder object.
|
49
|
+
#
|
50
|
+
# ==== Parameters
|
51
|
+
#
|
52
|
+
# * jsonObject:: - JSONObject contains the details of a folder.
|
53
|
+
#
|
54
|
+
# ==== Returns
|
55
|
+
#
|
56
|
+
# * Folder object.
|
57
|
+
|
58
|
+
def jsonToFolder(jsonObject)
|
59
|
+
folder = Folder.new
|
60
|
+
|
61
|
+
if jsonObject.has_key?("id")
|
62
|
+
folder.setId(jsonObject["id"])
|
63
|
+
end
|
64
|
+
if jsonObject.has_key?("name")
|
65
|
+
folder.setName(jsonObject["name"])
|
66
|
+
end
|
67
|
+
if jsonObject.has_key?("is_discussion")
|
68
|
+
folder.setIsDicussion(jsonObject["is_discussion"])
|
69
|
+
end
|
70
|
+
|
71
|
+
if jsonObject.has_key?("link")
|
72
|
+
link = jsonObject["link"]
|
73
|
+
|
74
|
+
if link.has_key?("self")
|
75
|
+
folder.setURL(link["self"]["url"])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
return folder
|
80
|
+
end
|
81
|
+
|
82
|
+
# * Parse the JSON response and get the success message.
|
83
|
+
#
|
84
|
+
# ==== Parameters
|
85
|
+
#
|
86
|
+
# * response:: - This JSON response contains the success message.
|
87
|
+
#
|
88
|
+
# ==== Returns
|
89
|
+
#
|
90
|
+
# * String object.
|
91
|
+
|
92
|
+
def getResult(response)
|
93
|
+
jsonObject = JSON.parse response
|
94
|
+
result = jsonObject["response"]
|
95
|
+
return result
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|