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
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OWU1ZWNhYWY5OGQ3ODU1YTk3N2FhMThjNjk2YzU4Mzg5YjMzYmEyYg==
5
+ data.tar.gz: !binary |-
6
+ YmVhOTk3MGY5YjIyMmVjMTdjMzU2NDdkNjAyZWQ4MWY3NmI2NGNiYQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MWZkNGRmZWQzMzRlNWY4OWE3NmQxMzkwOWQ0YmRlYzA4ZTJkZWRiYWI2ZmRh
10
+ ZmVmOTdkOGI1MjA0ZDE3MDg1ZDVjMzQzOWM4MjgyMDllYTlhZTM2MGU5MDA4
11
+ ZjVkM2EyNDRjYjE2YmFlODE5YzQ0NDc0YmFlMDg2MmE2NWRmNGE=
12
+ data.tar.gz: !binary |-
13
+ MzgwMTc3ZjU5YzNmMGRlMDIxYjA5MmZkYzk2NjU1ZDg4ZmM0ODE5NGM5MDMz
14
+ ZTcwMDZmOTg2MzE2YWFlODQ4MjczZTBhZDE4Nzc3ZGFiODFkN2IxM2NjNDk5
15
+ ZTJiNTE4MjY0YzAwZGFkOTk0OGE5YzUyMTRhOTU5NmM2YjM0ZWE=
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in zohoProjects.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,17 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ zohoProjects (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ rake (10.3.2)
10
+
11
+ PLATFORMS
12
+ x86-mingw32
13
+
14
+ DEPENDENCIES
15
+ bundler (~> 1.6)
16
+ rake
17
+ zohoProjects!
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 TODO: Write your name
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,145 @@
1
+ # ZohoProjects
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'zohoProjects'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install zohoProjects
18
+
19
+ ## Documentation
20
+
21
+ [API Documentation](http://cms.zohocorp.com/export/zoho/projects/help/rest-api/portals-api.html)
22
+
23
+ ## Usage
24
+
25
+ If you want to use all our zoho projects services API you should have a valid Zoho username, password and a valid authtoken.
26
+
27
+ How to generate your authtoken? [Refer Here](http://cms.zohocorp.com/export/zoho/projects/help/rest-api/get-tickets-api.html)
28
+
29
+ If you have a valid authtoken, you are able to access our Zoho projects API wrappers.
30
+
31
+ How to access our wrapper classes? Here is a sample example code for accessing Zoho Projects.
32
+
33
+ You have to add our gem file:
34
+
35
+ require "zohoProjects"
36
+
37
+ Pass your authToken to create an instance for PortalsAPI.
38
+
39
+ You have two ways to create an instance for PortalsAPI. Here is the example code,
40
+
41
+ 1) Pass your authToken and create a PortalsAPI instance:
42
+
43
+ portalsAPI = PortalsAPI.new("{auth_token}")
44
+
45
+ 2) Pass your authToken and portalId to create an instance for ZohoProjects and then get the instance for PortalsAPI:
46
+
47
+ zohoProject = ZohoProject.new("{auth_token}", "{portal_id}")
48
+
49
+ portalsAPI = zohoProject.getPortalsAPI
50
+
51
+
52
+ queryMap = Hash.new
53
+
54
+ queryMap["status"] = "open"
55
+
56
+ begin
57
+
58
+ ## Get the list of portals:
59
+
60
+ - - -
61
+
62
+ If you want to get all your portals, you need to call the 'getPortals' method. It returns the List of Portal object.
63
+
64
+ portals = portalsAPI.getPortals
65
+
66
+ If you want to parse the portal id from the List of Portal object then you need to write your code as mentioned below:
67
+
68
+ portalId = portals[0].getId
69
+
70
+ ## Get the list of projects:
71
+
72
+ - - -
73
+
74
+ If you want to get all the projects from the portal, you need to call the 'getProjects' method by passing query string parameters.
75
+
76
+ projects = projectsAPI.getProjects(queryMap)
77
+
78
+ If you want to parse the project id from the List of Project object then you need to write your code as mentioned below:
79
+
80
+ projectId = String(projects[0].getId)
81
+
82
+ ## Get the details of a project:
83
+
84
+ - - -
85
+
86
+ If you want to get the details of project, you need to call the 'get' method by passing projectId.
87
+
88
+ get = projectsAPI.get(projectId)
89
+
90
+ ## Create a new project:
91
+
92
+ - - -
93
+
94
+ If you want to create a new project for the portal, you need to call the 'create' method by passing the Project object.
95
+
96
+ project = Project.new
97
+
98
+ project.setName("Test")
99
+ project.setDescription("Test project")
100
+
101
+ create = projectsAPI.create(project)
102
+
103
+ ## Update the details of a project:
104
+
105
+ - - -
106
+
107
+ If you want to update the project details of a portal, you need to fetch the project details by calling the 'get' method.
108
+
109
+ If you want update the name of the project then you need to write your code as mentioned below:
110
+
111
+ get = projectsAPI.get(projectId)
112
+
113
+ get.setName("API")
114
+
115
+ update = projectsAPI.update(get)
116
+
117
+
118
+ ## Delete an existing project:
119
+
120
+ - - -
121
+
122
+ If you want to delete an existing project for the portal, you need to call the `delete()` method by passing projectId.
123
+
124
+ delete = projectsAPI.delete(projectId)
125
+
126
+
127
+ ## Catch the exception:
128
+
129
+ - - -
130
+
131
+ When calling Zoho Projects API wrappers if there is any error then the respective class throws the ProjectsException. You need to catch the ProjectsException as mentioned below:
132
+
133
+ rescue ProjectsException => pe
134
+ puts "Code: " + String(pe.getCode)
135
+ puts "Message: " + pe.getMessage
136
+ end
137
+
138
+ See [Here](../../tree/master/lib/test) for full examples.
139
+ ## Contributing
140
+
141
+ 1. Fork it ( https://github.com/[my-github-username]/zohoProjects/fork )
142
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
143
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
144
+ 4. Push to the branch (`git push origin my-new-feature`)
145
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,57 @@
1
+ # $Id$
2
+ module Projects
3
+ module Api
4
+ # * API is used to maintain the base URL and makes a query map using User's authToken and filters.
5
+
6
+ class API
7
+
8
+ public
9
+ @@baseURL = "https://projectsapi.zoho.com/restapi/";
10
+ protected
11
+ attr_accessor :authToken, :portalId
12
+
13
+ public
14
+
15
+ # * Construct a new API using User's authToken and portalId.
16
+ #
17
+ # ==== Parameters
18
+ #
19
+ # * authToken:: - User's authToken.
20
+ #
21
+ # * portalId:: - User's portalId.
22
+
23
+ def initialize(authToken, portalId)
24
+ @authToken = authToken
25
+ @portalId = portalId
26
+ end
27
+
28
+ public
29
+
30
+ # * Get the base URL of the service.
31
+ #
32
+ # ==== Returns
33
+ #
34
+ # * Base URL.
35
+
36
+ def getBaseURL
37
+ return @@baseURL+"portal/"+String(portalId)+"/";
38
+ end
39
+
40
+ # * Creates a query map using User's authToken and filters.
41
+ # ==== Returns
42
+ #
43
+ # * HashMap.
44
+
45
+ def getQueryMap(queryMap=nil)
46
+ if queryMap != nil
47
+ queryMap1 = queryMap
48
+ queryMap1["authtoken"] = authToken
49
+ else
50
+ queryMap1 = Hash.new
51
+ queryMap1["authtoken"] = authToken
52
+ end
53
+ return queryMap1
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,135 @@
1
+ # $Id$
2
+ module Projects
3
+ module Api
4
+
5
+ require File.dirname(__FILE__).chomp("/projects/api") + '/projects/api/API'
6
+ require File.dirname(__FILE__).chomp("/projects/api") + '/projects/util/ZohoHTTPClient'
7
+ require File.dirname(__FILE__).chomp("/projects/api") + '/projects/parser/BugParser'
8
+
9
+ # * BugsAPI is used to:
10
+ #
11
+ # * Get list of bugs.
12
+ #
13
+ # * Get the details of a bug.
14
+ #
15
+ # * Creates a bug.
16
+ #
17
+ # * Update the details of a bug.
18
+ #
19
+ # * Delete an existing bug.
20
+
21
+ class BugsAPI < API
22
+ include Projects::Parser
23
+ include Projects::Util
24
+ # * BugParser is used to parse the JSON response into respective objects.
25
+
26
+ $bugParser = BugParser.new
27
+
28
+ # * Construct a BugsAPI using User's authToken and portalId.
29
+ #
30
+ # ==== Parameters
31
+ #
32
+ # * authToken:: - User's authToken.
33
+ #
34
+ # * portalId:: - User's portalId.
35
+
36
+
37
+ def initialize(authToken,portalId)
38
+ super(authToken,portalId)
39
+ end
40
+
41
+ # * Get list of bugs for the project.
42
+ #
43
+ # ==== Parameters
44
+ #
45
+ # * projectId:: - ID of the project.
46
+ #
47
+ # * queryMap:: - This queryMap contains the filters in the form of key-value pair.
48
+ #
49
+ # ==== Returns
50
+ #
51
+ # * List of Bug object.
52
+
53
+
54
+ def getBugs(projectId, queryMap)
55
+ url = getBaseURL+"projects/"+String(projectId)+"/bugs/"
56
+ response = ZohoHTTPClient.get(url, getQueryMap(queryMap))
57
+ return $bugParser.getBugs(response)
58
+ end
59
+
60
+ # * Get the details of a bug.
61
+ #
62
+ # ==== Parameters
63
+ #
64
+ # * projectId:: - ID of the project.
65
+ #
66
+ # * bugId:: - ID of the bug.
67
+ #
68
+ # ==== Return
69
+ #
70
+ # * Bug object.
71
+
72
+
73
+ def get(projectId, bugId)
74
+ url = getBaseURL+"projects/"+String(projectId)+"/bugs/"+String(bugId)+"/"
75
+ response = ZohoHTTPClient.get(url, getQueryMap)
76
+ return $bugParser.getBug(response)
77
+ end
78
+
79
+ # * Create a Bug for the project.
80
+ #
81
+ # ==== Parameters
82
+ #
83
+ # * projectId:: - ID of the project.
84
+ #
85
+ # * bug:: - Bug object.
86
+ #
87
+ # ==== Returns
88
+ #
89
+ # * Bug object.
90
+
91
+
92
+ def create(projectId, bug)
93
+ url = getBaseURL+"projects/"+String(projectId)+"/bugs/"
94
+ response = ZohoHTTPClient.post(url, getQueryMap, bug.toParamMAP)
95
+ return $bugParser.getBug(response)
96
+ end
97
+
98
+ # * Update the details of a bug.
99
+ #
100
+ # ==== Parameters
101
+ #
102
+ # * projectId:: - ID of the project.
103
+ #
104
+ # * bug:: - Bug object.
105
+ #
106
+ # ==== Returns
107
+ #
108
+ # * Bug object.
109
+
110
+ def update(projectId, bug)
111
+ url = getBaseURL+"projects/"+String(projectId)+"/bugs/"+String(bug.getId)+"/"
112
+ response = ZohoHTTPClient.post(url, getQueryMap, bug.toParamMAP)
113
+ return $bugParser.getBug(response)
114
+ end
115
+
116
+ # * Delete an existing bug for the project.
117
+ #
118
+ # ==== Parameters
119
+ #
120
+ # * projectId:: - ID of the project.
121
+ #
122
+ # * bugId:: - ID of the bug.
123
+ #
124
+ # ==== Returns
125
+ #
126
+ # * String containg result of delete.
127
+
128
+ def delete(projectId, bugId)
129
+ url = getBaseURL+"projects/"+String(projectId)+"/bugs/"+String(bugId)+"/"
130
+ response = ZohoHTTPClient.delete(url, getQueryMap)
131
+ return $bugParser.getResult(response)
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,145 @@
1
+ # $Id$
2
+ module Projects
3
+ module Api
4
+
5
+ require File.dirname(__FILE__).chomp("/projects/api") + '/projects/api/API'
6
+ require File.dirname(__FILE__).chomp("/projects/api") + '/projects/util/ZohoHTTPClient'
7
+ require File.dirname(__FILE__).chomp("/projects/api") + '/projects/parser/DocumentParser'
8
+
9
+ # * DocumentsAPI is used to:
10
+ #
11
+ # * Get list of documents.
12
+ #
13
+ # * Get the details of a document.
14
+ #
15
+ # * Add a document.
16
+ #
17
+ # * Update the details of a document.
18
+ #
19
+ # * Delete an existing document.
20
+
21
+
22
+ class DocumentsAPI < API
23
+ include Projects::Parser
24
+ include Projects::Util
25
+ # * DocumentParser is used to parse the JSON response into respective objects.
26
+
27
+ $documentParser = DocumentParser.new
28
+
29
+ # * Construct a new DocumentsAPI using User's authToken and portalId.
30
+ #
31
+ # ==== Parameters
32
+ #
33
+ # * authToken:: - User's authToken.
34
+ #
35
+ # * portalId:: - User's portalId.
36
+
37
+
38
+ def initialize(authToken,portalId)
39
+ super(authToken,portalId)
40
+ end
41
+
42
+
43
+ # * Get list of documents for the project.
44
+ #
45
+ # ==== Parameters
46
+ #
47
+ # * projectId:: - ID of the project.
48
+ #
49
+ # * queryMap:: - This queryMap contains the filters in the form of key-value pair.
50
+ #
51
+ # ==== Returns
52
+ #
53
+ # * List of Document object.
54
+
55
+
56
+ def getDocuments(projectId, queryMap)
57
+ url = getBaseURL+"projects/"+String(projectId)+"/documents/"
58
+ response = ZohoHTTPClient.get(url, getQueryMap(queryMap))
59
+ return $documentParser.getDocuments(response)
60
+ end
61
+
62
+ # * Get the details of a document.
63
+ #
64
+ # ==== Parameters
65
+ #
66
+ # * projectId:: - ID of the project.
67
+ #
68
+ # * documentId:: - ID of the document.
69
+ #
70
+ # * queryMap:: - This queryMap contains the filters in the form of key-value pair.
71
+ #
72
+ # ==== Returns
73
+ #
74
+ # * Document object.
75
+
76
+
77
+ def get(projectId, documentId, queryMap)
78
+ url = getBaseURL+"projects/"+String(projectId)+"/documents/"+String(documentId)+"/"
79
+ response = ZohoHTTPClient.get(url, getQueryMap(queryMap))
80
+ return $documentParser.getDocument(response)
81
+ end
82
+
83
+ # * Add a document for the project.
84
+ #
85
+ # ==== Parameters
86
+ #
87
+ # * projectId:: - Id of the project.
88
+ #
89
+ # * document:: - Document object.
90
+ #
91
+ # ==== Returns
92
+ #
93
+ # * Document object.
94
+
95
+ def add(projectId, document)
96
+ url = getBaseURL+"projects/"+String(projectId)+"/documents/"
97
+ fileBody = Hash.new
98
+ fileBody["uploaddoc"] = document.getUploaddoc
99
+ response = ZohoHTTPClient.post(url, getQueryMap, document.toParamMAP, fileBody)
100
+ return $documentParser.getDocument(response)
101
+ end
102
+
103
+ # * Update the details of a document.
104
+ #
105
+ # ==== Attributes
106
+ #
107
+ # * projectId:: - ID of the project.
108
+ #
109
+ # * document:: - Document object.
110
+ #
111
+ # ==== Returns
112
+ #
113
+ # * Document object.
114
+
115
+
116
+ def update(projectId, document)
117
+ url = getBaseURL+"projects/"+String(projectId)+"/documents/"+String(document.getId)+"/"
118
+ fileBody = Hash.new
119
+ fileBody["uploaddoc"] = document.getUploaddoc
120
+ response = ZohoHTTPClient.post(url, getQueryMap, document.toParamMAP, fileBody)
121
+ return $documentParser.getDocument(response)
122
+ end
123
+
124
+
125
+ # * Delete an existing document for the project.
126
+ #
127
+ # ==== Attributes
128
+ #
129
+ # * projectId:: - ID of the project.
130
+ #
131
+ # * documentId:: - ID of the document.
132
+ #
133
+ # ==== Returns
134
+ #
135
+ # * return Returns the String object.
136
+
137
+
138
+ def delete(projectId, documentId)
139
+ url = getBaseURL+"projects/"+String(projectId)+"/documents/"+String(documentId)+"/"
140
+ response = Projects::Util::ZohoHTTPClient.delete(url, getQueryMap)
141
+ return $documentParser.getResult(response)
142
+ end
143
+ end
144
+ end
145
+ end