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