rubyzoho 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.travis.yml +1 -1
- data/Gemfile +2 -3
- data/README.rdoc +20 -15
- data/Rakefile +0 -15
- data/lib/crud_methods.rb +3 -7
- data/lib/zoho_api.rb +35 -34
- data/lib/zoho_api_finders.rb +1 -0
- data/rubyzoho.gemspec +34 -99
- data/spec/ruby_zoho_spec.rb +320 -219
- data/spec/spec_helper.rb +5 -8
- data/spec/zoho_api_spec.rb +231 -172
- metadata +41 -56
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
M2Y4NjYzNWY4MzNmNzAzMTg3NWY3MGIwYjUwMmY5OTZjOTkyN2Q4Ng==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c1dcbd48a28e9971f571530505526efa3a9383e8
|
4
|
+
data.tar.gz: 6fd06bdff4b5ec40cd24f26ac2657a1b22738971
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZWE3NzhhNjgxMDAzNDkxZGE0ZTBhODU3YWUzNzI2YzYxYTI1ZDc4YTQwY2Ni
|
11
|
-
MWQ2YzNiYzdmMjEwYzcyNTBlZmM3OTc0ZTgzOGQ0YzY1MGEyOGU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZWJhYjdkNjlkZDNkMjc3MjMyM2VmYTJkNDU4ZTg3YzIyMjkxNTViOTc5ZmM4
|
14
|
-
OThmYTdhMjg1ZjU2YTg2NzRkMzExYTBhNDcyNTBhMzFmY2E3NjNmMGY2ZDMz
|
15
|
-
ZmRkZTRiMWZkZTY3NzU4MzAwMTI3MmM4ZGM5MTM2YWE2ZTJlNTM=
|
6
|
+
metadata.gz: 15e4343551f80f8f804cd97d77dc4ef40d27c9a820b412893dea490f97d505fb6d29cb49ea62a2a4154477dbd7e2210e3689fa2fdc576a84e38b82fbbcc57b73
|
7
|
+
data.tar.gz: 4d5ac8739764d4c2c5a5d310bb8820e62e14b5d32e9ce23ffe16501214b9f778a740f1271bd516e99148e6c5076acb2f7df5ea4555e15abbfb96dd1580881c7a
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -6,7 +6,6 @@ gem 'roxml'
|
|
6
6
|
gem 'multipart-post'
|
7
7
|
|
8
8
|
group :test do
|
9
|
-
gem 'rspec', '>= 2.12.0'
|
10
9
|
gem 'simplecov', '>= 0.7.1', :require => false, :group => :test
|
11
10
|
gem 'coveralls', require: false
|
12
11
|
end
|
@@ -14,12 +13,12 @@ end
|
|
14
13
|
group :development do
|
15
14
|
gem 'bundler', '>= 1.2'
|
16
15
|
gem 'holepicker'
|
17
|
-
gem 'jeweler'
|
18
16
|
gem 'rdoc', '>= 3.12.1'
|
19
|
-
gem 'rspec', '>= 2.12.0'
|
20
17
|
end
|
21
18
|
|
22
19
|
group :development, :test do
|
20
|
+
gem 'rake'
|
21
|
+
gem 'rspec', '>= 2.12.0'
|
23
22
|
gem 'vcr'
|
24
23
|
gem 'webmock'
|
25
24
|
gem 'xml-simple', '>=1.1.2'
|
data/README.rdoc
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
= rubyzoho
|
2
|
-
{<img src="https://travis-ci.org/amalc/rubyzoho.png?branch=master" alt="Build Status" />}[https://travis-ci.org/amalc/rubyzoho] {<img src="https://gemnasium.com/amalc/rubyzoho.png" alt="Dependency Status" />}[https://gemnasium.com/amalc/rubyzoho] {<img src="https://codeclimate.com/github/amalc/rubyzoho.png" />}[https://codeclimate.com/github/amalc/rubyzoho] {<img src="https://coveralls.io/repos/amalc/rubyzoho/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/amalc/rubyzoho] {<img src="https://badge.fury.io/rb/rubyzoho.
|
3
|
-
|
2
|
+
{<img src="https://travis-ci.org/amalc/rubyzoho.png?branch=master" alt="Build Status" />}[https://travis-ci.org/amalc/rubyzoho] {<img src="https://gemnasium.com/amalc/rubyzoho.png" alt="Dependency Status" />}[https://gemnasium.com/amalc/rubyzoho] {<img src="https://codeclimate.com/github/amalc/rubyzoho.png" />}[https://codeclimate.com/github/amalc/rubyzoho] {<img src="https://coveralls.io/repos/amalc/rubyzoho/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/amalc/rubyzoho] {<img src="https://badge.fury.io/rb/rubyzoho.svg" alt="Gem Version" />}[http://badge.fury.io/rb/rubyzoho]
|
4
3
|
|
5
4
|
|
6
5
|
|
@@ -217,6 +216,7 @@ Please open an issue on GitHub. Or better yet, send in a pull request with the f
|
|
217
216
|
|
218
217
|
=== Known Bugs or Issues
|
219
218
|
1. If you're having trouble with updating custom fields, be sure to check the permission of the user that created the custom field.
|
219
|
+
2. Only text fields can be updated as custom fields. At this point it isn't clear what to send the Zoho API to have it accept anything else. Please send in a PR if you figure it out.
|
220
220
|
|
221
221
|
=== Roadmap (Ranked)
|
222
222
|
1. AR style master/detail updates e.g. where +a+ is an account.
|
@@ -259,27 +259,32 @@ Zoho, the Zoho suite and related applications are owned, trademarked and copyrig
|
|
259
259
|
This software is not associated in anyway with the Zoho Corporation Pvt. Ltd.
|
260
260
|
|
261
261
|
== Copyright
|
262
|
-
Copyright (c) 2013 amalc (\@\amalc). Released under the MIT license. See LICENSE.txt for further details.
|
262
|
+
Copyright (c) 2013 - 2015 amalc (\@\amalc). Released under the MIT license. See LICENSE.txt for further details.
|
263
263
|
|
264
264
|
---
|
265
265
|
= Releases
|
266
266
|
== Release Candidates (Uses {Semantic Versioning}[http://semver.org/])
|
267
267
|
|
268
268
|
== Development
|
269
|
-
[0.
|
270
|
-
1.
|
269
|
+
[0.7.0]
|
270
|
+
1. << syntax for Account/Tasks on Master/Detail relationships
|
271
271
|
2. ActiveRecord style syntax for Class.\new, Class.delete, Class.find, Class.update, Object.save
|
272
|
-
3.
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
1. Refresh dependencies
|
278
|
-
2. Remove Cucumber
|
279
|
-
3. Remove Relish
|
280
|
-
4. Fix production dependencies to reduce gem footprint
|
281
|
-
|
272
|
+
3. Modules Supported: Accounts, Contacts, Leads, Potentials, Quotes, Tasks and Users
|
273
|
+
[0.6.0]
|
274
|
+
1. Option in config to ignore fields with improper field names
|
275
|
+
[0.5.0]
|
276
|
+
1. Support for testing without calling Zoho to prevent crushing API call limits in CI.
|
282
277
|
== Released
|
278
|
+
[0.4.0]
|
279
|
+
1. Fixed major bug with retrieving records thanks to @kjcpass PR#28
|
280
|
+
[0.3.0]
|
281
|
+
1. Added activating workflows thanks to @pjsim PR#23
|
282
|
+
[0.2.0]
|
283
|
+
1. Added related entities feature thanks to @richkettle and @swithik.
|
284
|
+
2. Refresh dependencies
|
285
|
+
3. Remove Cucumber
|
286
|
+
4. Remove Relish
|
287
|
+
5. Fix production dependencies to reduce gem footprint
|
283
288
|
[0.1.11]
|
284
289
|
1. Incorporate fix to namespace collision between Devise and RubyZoho, User renamed to CRMUser thanks to @qume.
|
285
290
|
2. Other fixes from @tjsousa, @aeldaly and @fheemeyer.
|
data/Rakefile
CHANGED
@@ -19,21 +19,6 @@ rescue Bundler::BundlerError => e
|
|
19
19
|
end
|
20
20
|
require 'rake'
|
21
21
|
|
22
|
-
require 'jeweler'
|
23
|
-
Jeweler::Tasks.new do |gem|
|
24
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
25
|
-
gem.name = 'rubyzoho'
|
26
|
-
gem.homepage = 'http://github.com/amalc/rubyzoho'
|
27
|
-
gem.license = 'MIT'
|
28
|
-
gem.summary = 'A set of Ruby classes supporting the ActiveRecord lifecycle for the Zoho API. Supports Rails and Devise.'
|
29
|
-
gem.description = ''
|
30
|
-
gem.email = ''
|
31
|
-
gem.authors = ['amalc']
|
32
|
-
# dependencies defined in Gemfile
|
33
|
-
end
|
34
|
-
|
35
|
-
Jeweler::RubygemsDotOrgTasks.new
|
36
|
-
|
37
22
|
require 'rake/testtask'
|
38
23
|
Rake::TestTask.new(:test) do |test|
|
39
24
|
test.libs << 'lib' << 'test'
|
data/lib/crud_methods.rb
CHANGED
@@ -14,14 +14,10 @@ module CrudMethods
|
|
14
14
|
def all #TODO Refactor into low level API
|
15
15
|
max_records = 200
|
16
16
|
result = []
|
17
|
-
|
18
|
-
|
19
|
-
until batch.nil?
|
20
|
-
batch = RubyZoho.configuration.api.some(self.module_name, i, max_records)
|
17
|
+
begin
|
18
|
+
batch = RubyZoho.configuration.api.some(self.module_name, result.count + 1, max_records)
|
21
19
|
result.concat(batch) unless batch.nil?
|
22
|
-
|
23
|
-
i += max_records
|
24
|
-
end
|
20
|
+
end until batch.nil? || (batch.length < max_records)
|
25
21
|
result.collect { |r| new(r) }
|
26
22
|
end
|
27
23
|
|
data/lib/zoho_api.rb
CHANGED
@@ -16,6 +16,7 @@ module ZohoApi
|
|
16
16
|
|
17
17
|
include ApiUtils
|
18
18
|
|
19
|
+
# noinspection RubyStringKeysInHashInspection
|
19
20
|
class Crm
|
20
21
|
|
21
22
|
include HTTMultiParty
|
@@ -36,12 +37,12 @@ module ZohoApi
|
|
36
37
|
def add_record(module_name, fields_values_hash)
|
37
38
|
x = REXML::Document.new
|
38
39
|
element = x.add_element module_name
|
39
|
-
row = element.add_element 'row', {
|
40
|
+
row = element.add_element 'row', {'no' => '1'}
|
40
41
|
fields_values_hash.each_pair { |k, v| add_field(row, ApiUtils.symbol_to_string(k), v) }
|
41
42
|
r = self.class.post(create_url(module_name, 'insertRecords'),
|
42
|
-
:query => {
|
43
|
-
|
44
|
-
:headers => {
|
43
|
+
:query => {:newFormat => 1, :authtoken => @auth_token,
|
44
|
+
:scope => 'crmapi', :xmlData => x, :wfTrigger => 'true'},
|
45
|
+
:headers => {'Content-length' => '0'})
|
45
46
|
check_for_errors(r)
|
46
47
|
x_r = REXML::Document.new(r.body).elements.to_a('//recorddetail')
|
47
48
|
to_hash(x_r, module_name)[0]
|
@@ -68,12 +69,12 @@ module ZohoApi
|
|
68
69
|
|
69
70
|
# updateRelatedRecords returns two codes one in the status tag and another in a success tag, we want the
|
70
71
|
# code under the success tag in this case
|
71
|
-
code = REXML::XPath.first(x, '//success/code') ||
|
72
|
+
code = REXML::XPath.first(x, '//success/code') || REXML::XPath.first(x, '//code')
|
72
73
|
|
73
74
|
# 4422 code is no records returned, not really an error
|
74
75
|
# TODO: find out what 5000 is
|
75
76
|
# 4800 code is returned when building an association. i.e Adding a product to a lead. Also this doesn't return a message
|
76
|
-
raise(RuntimeError, "Zoho Error Code #{code.text}: #{REXML::XPath.first(x, '//message').text}.") unless code.nil? ||
|
77
|
+
raise(RuntimeError, "Zoho Error Code #{code.text}: #{REXML::XPath.first(x, '//message').text}.") unless code.nil? || %w(4422 5000 4800).index(code.text)
|
77
78
|
|
78
79
|
return code.text unless code.nil?
|
79
80
|
response.code
|
@@ -92,20 +93,20 @@ module ZohoApi
|
|
92
93
|
end
|
93
94
|
|
94
95
|
def method_name?(n)
|
95
|
-
|
96
|
+
/[@$"]/ !~ n.inspect
|
96
97
|
end
|
97
98
|
|
98
99
|
def post_action(module_name, record_id, action_type)
|
99
100
|
r = self.class.post(create_url(module_name, action_type),
|
100
|
-
:query => {
|
101
|
-
|
102
|
-
:headers => {
|
101
|
+
:query => {:newFormat => 1, :authtoken => @auth_token,
|
102
|
+
:scope => 'crmapi', :id => record_id},
|
103
|
+
:headers => {'Content-length' => '0'})
|
103
104
|
raise('Adding contact failed', RuntimeError, r.response.body.to_s) unless r.response.code == '200'
|
104
105
|
check_for_errors(r)
|
105
106
|
end
|
106
107
|
|
107
108
|
def primary_key(module_name)
|
108
|
-
activity_keys = {
|
109
|
+
activity_keys = {'Tasks' => :activityid, 'Events' => :activityid, 'Calls' => :activityid}
|
109
110
|
return activity_keys[module_name] unless activity_keys[module_name].nil?
|
110
111
|
(module_name.downcase.chop + 'id').to_sym
|
111
112
|
end
|
@@ -127,18 +128,18 @@ module ZohoApi
|
|
127
128
|
|
128
129
|
def related_records(parent_module, parent_record_id, related_module)
|
129
130
|
r = self.class.get(create_url("#{related_module}", 'getRelatedRecords'),
|
130
|
-
:query => {
|
131
|
-
|
131
|
+
:query => {:newFormat => 1, :authtoken => @auth_token, :scope => 'crmapi',
|
132
|
+
:parentModule => parent_module, :id => parent_record_id})
|
132
133
|
|
133
|
-
|
134
|
+
REXML::Document.new(r.body).elements.to_a("/response/result/#{parent_module}/row")
|
134
135
|
check_for_errors(r)
|
135
136
|
end
|
136
137
|
|
137
138
|
def some(module_name, index = 1, number_of_records = nil, sort_column = :id, sort_order = :asc)
|
138
139
|
r = self.class.get(create_url(module_name, 'getRecords'),
|
139
|
-
:query => {
|
140
|
-
|
141
|
-
|
140
|
+
:query => {:newFormat => 2, :authtoken => @auth_token, :scope => 'crmapi',
|
141
|
+
:sortColumnString => sort_column, :sortOrderString => sort_order,
|
142
|
+
:fromIndex => index, :toIndex => index + (number_of_records || NUMBER_OF_RECORDS_TO_GET) - 1})
|
142
143
|
return nil unless r.response.code == '200'
|
143
144
|
check_for_errors(r)
|
144
145
|
x = REXML::Document.new(r.body).elements.to_a("/response/result/#{module_name}/row")
|
@@ -148,16 +149,16 @@ module ZohoApi
|
|
148
149
|
def update_related_records(parent_module, parent_record_id, related_module_fields)
|
149
150
|
x = REXML::Document.new
|
150
151
|
leads = x.add_element related_module_fields[:related_module]
|
151
|
-
row = leads.add_element 'row', {
|
152
|
+
row = leads.add_element 'row', {'no' => '1'}
|
152
153
|
related_module_fields[:xml_data].each_pair { |k, v| add_field(row, ApiUtils.symbol_to_string(k), v) }
|
153
|
-
|
154
|
+
|
154
155
|
r = self.class.post(create_url("#{parent_module}", 'updateRelatedRecords'),
|
155
|
-
:query => {
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
:headers => {
|
156
|
+
:query => {:newFormat => 1,
|
157
|
+
:id => parent_record_id,
|
158
|
+
:authtoken => @auth_token, :scope => 'crmapi',
|
159
|
+
:relatedModule => related_module_fields[:related_module],
|
160
|
+
:xmlData => x, :wfTrigger => 'true'},
|
161
|
+
:headers => {'Content-length' => '0'})
|
161
162
|
|
162
163
|
check_for_errors(r)
|
163
164
|
end
|
@@ -165,13 +166,13 @@ module ZohoApi
|
|
165
166
|
def update_record(module_name, id, fields_values_hash)
|
166
167
|
x = REXML::Document.new
|
167
168
|
contacts = x.add_element module_name
|
168
|
-
row = contacts.add_element 'row', {
|
169
|
+
row = contacts.add_element 'row', {'no' => '1'}
|
169
170
|
fields_values_hash.each_pair { |k, v| add_field(row, ApiUtils.symbol_to_string(k), v) }
|
170
171
|
r = self.class.post(create_url(module_name, 'updateRecords'),
|
171
|
-
:query => {
|
172
|
-
|
173
|
-
|
174
|
-
:headers => {
|
172
|
+
:query => {:newFormat => 1, :authtoken => @auth_token,
|
173
|
+
:scope => 'crmapi', :id => id,
|
174
|
+
:xmlData => x, :wfTrigger => 'true'},
|
175
|
+
:headers => {'Content-length' => '0'})
|
175
176
|
check_for_errors(r)
|
176
177
|
x_r = REXML::Document.new(r.body).elements.to_a('//recorddetail')
|
177
178
|
to_hash_with_id(x_r, module_name)[0]
|
@@ -180,8 +181,8 @@ module ZohoApi
|
|
180
181
|
def users(user_type = 'AllUsers')
|
181
182
|
return @@users unless @@users == [] || user_type == 'Refresh'
|
182
183
|
r = self.class.get(create_url('Users', 'getUsers'),
|
183
|
-
:query => {
|
184
|
-
|
184
|
+
:query => {:newFormat => 1, :authtoken => @auth_token, :scope => 'crmapi',
|
185
|
+
:type => 'AllUsers'})
|
185
186
|
check_for_errors(r)
|
186
187
|
result = extract_users_from_xml_response(r)
|
187
188
|
@@users = result
|
@@ -201,9 +202,9 @@ module ZohoApi
|
|
201
202
|
|
202
203
|
def extract_user_name_and_attribs(node)
|
203
204
|
record = {}
|
204
|
-
record.merge!({
|
205
|
+
record.merge!({:user_name => node.text})
|
205
206
|
node.attributes.each_pair do |k, v|
|
206
|
-
record.merge!({
|
207
|
+
record.merge!({k.to_s.to_sym => v.to_string.match(/'(.*?)'/).to_s.gsub('\'', '')})
|
207
208
|
end
|
208
209
|
record
|
209
210
|
end
|
data/lib/zoho_api_finders.rb
CHANGED
@@ -3,6 +3,7 @@ module ZohoApiFinders
|
|
3
3
|
|
4
4
|
def find_records(module_name, field, condition, value)
|
5
5
|
sc_field = field == :id ? primary_key(module_name) : ApiUtils.symbol_to_string(field)
|
6
|
+
related_id?(module_name, sc_field)
|
6
7
|
return find_record_by_related_id(module_name, sc_field, value) if related_id?(module_name, sc_field)
|
7
8
|
primary_key?(module_name, sc_field) == false ? find_record_by_field(module_name, sc_field, condition, value) :
|
8
9
|
find_record_by_id(module_name, value)
|
data/rubyzoho.gemspec
CHANGED
@@ -1,104 +1,39 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: rubyzoho 0.2.0 ruby lib
|
6
|
-
|
7
1
|
Gem::Specification.new do |s|
|
8
|
-
s.name =
|
9
|
-
s.version =
|
10
|
-
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.authors = ["amalc"]
|
13
|
-
s.date = "2014-01-29"
|
14
|
-
s.description = ""
|
15
|
-
s.email = ""
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE.txt",
|
18
|
-
"README.rdoc"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".coverall.yml",
|
22
|
-
".document",
|
23
|
-
".rspec",
|
24
|
-
".ruby-gemset",
|
25
|
-
".ruby-version",
|
26
|
-
".travis.yml",
|
27
|
-
"Gemfile",
|
28
|
-
"LICENSE.txt",
|
29
|
-
"README.rdoc",
|
30
|
-
"Rakefile",
|
31
|
-
"VERSION",
|
32
|
-
"lib/api_utils.rb",
|
33
|
-
"lib/crm.rb",
|
34
|
-
"lib/crud_methods.rb",
|
35
|
-
"lib/ruby_zoho.rb",
|
36
|
-
"lib/zoho_api.rb",
|
37
|
-
"lib/zoho_api_field_utils.rb",
|
38
|
-
"lib/zoho_api_finders.rb",
|
39
|
-
"lib/zoho_crm_users.rb",
|
40
|
-
"lib/zoho_crm_utils.rb",
|
41
|
-
"rubyzoho.gemspec",
|
42
|
-
"spec/api_utils_spec.rb",
|
43
|
-
"spec/fixtures/sample.pdf",
|
44
|
-
"spec/fixtures/sample_contact.xml",
|
45
|
-
"spec/fixtures/sample_contact_search.xml",
|
46
|
-
"spec/fixtures/sample_contacts.xml",
|
47
|
-
"spec/fixtures/sample_contacts_list.xml",
|
48
|
-
"spec/fixtures/sample_leads_list.xml",
|
49
|
-
"spec/ruby_zoho_spec.rb",
|
50
|
-
"spec/spec_helper.rb",
|
51
|
-
"spec/zoho_api_spec.rb"
|
52
|
-
]
|
53
|
-
s.homepage = "http://github.com/amalc/rubyzoho"
|
54
|
-
s.licenses = ["MIT"]
|
55
|
-
s.require_paths = ["lib"]
|
56
|
-
s.rubygems_version = "2.1.11"
|
57
|
-
s.summary = "A set of Ruby classes supporting the ActiveRecord lifecycle for the Zoho API. Supports Rails and Devise."
|
2
|
+
s.name = 'rubyzoho'
|
3
|
+
s.version = '0.3.0'
|
58
4
|
|
59
|
-
if s.respond_to? :
|
60
|
-
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
6
|
+
s.authors = ['amalc']
|
7
|
+
s.date = '2015-02-22'
|
8
|
+
s.description = 'A set of Ruby classes supporting the ActiveRecord lifecycle for the Zoho CRM API.'
|
9
|
+
s.email = 'amalc@github.com'
|
10
|
+
s.extra_rdoc_files = %w(LICENSE.txt README.rdoc)
|
11
|
+
s.files = %w(
|
12
|
+
.coverall.yml .document .rspec .travis.yml Gemfile
|
13
|
+
LICENSE.txt README.rdoc Rakefile VERSION lib/api_utils.rb lib/crm.rb lib/crud_methods.rb
|
14
|
+
lib/ruby_zoho.rb lib/zoho_api.rb lib/zoho_api_field_utils.rb lib/zoho_api_finders.rb
|
15
|
+
lib/zoho_crm_users.rb lib/zoho_crm_utils.rb rubyzoho.gemspec spec/api_utils_spec.rb
|
16
|
+
spec/fixtures/sample.pdf spec/fixtures/sample_contact.xml spec/fixtures/sample_contact_search.xml
|
17
|
+
spec/fixtures/sample_contacts.xml spec/fixtures/sample_contacts_list.xml
|
18
|
+
spec/fixtures/sample_leads_list.xml spec/ruby_zoho_spec.rb spec/spec_helper.rb spec/zoho_api_spec.rb
|
19
|
+
)
|
20
|
+
s.homepage = 'http://github.com/amalc/rubyzoho'
|
21
|
+
s.licenses = ['MIT']
|
22
|
+
s.platform = Gem::Platform::RUBY
|
23
|
+
s.require_paths = ['lib']
|
24
|
+
s.required_ruby_version = '>= 1.9.3'
|
25
|
+
s.summary = 'A set of Ruby classes supporting the ActiveRecord lifecycle for the Zoho API. Supports Rails and Devise.'
|
61
26
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
s.add_development_dependency(%q<webmock>, [">= 0"])
|
74
|
-
s.add_development_dependency(%q<xml-simple>, [">= 1.1.2"])
|
75
|
-
else
|
76
|
-
s.add_dependency(%q<activemodel>, [">= 0"])
|
77
|
-
s.add_dependency(%q<httmultiparty>, [">= 0"])
|
78
|
-
s.add_dependency(%q<roxml>, [">= 0"])
|
79
|
-
s.add_dependency(%q<multipart-post>, [">= 0"])
|
80
|
-
s.add_dependency(%q<bundler>, [">= 1.2"])
|
81
|
-
s.add_dependency(%q<holepicker>, [">= 0"])
|
82
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
83
|
-
s.add_dependency(%q<rdoc>, [">= 3.12.1"])
|
84
|
-
s.add_dependency(%q<rspec>, [">= 2.12.0"])
|
85
|
-
s.add_dependency(%q<vcr>, [">= 0"])
|
86
|
-
s.add_dependency(%q<webmock>, [">= 0"])
|
87
|
-
s.add_dependency(%q<xml-simple>, [">= 1.1.2"])
|
88
|
-
end
|
89
|
-
else
|
90
|
-
s.add_dependency(%q<activemodel>, [">= 0"])
|
91
|
-
s.add_dependency(%q<httmultiparty>, [">= 0"])
|
92
|
-
s.add_dependency(%q<roxml>, [">= 0"])
|
93
|
-
s.add_dependency(%q<multipart-post>, [">= 0"])
|
94
|
-
s.add_dependency(%q<bundler>, [">= 1.2"])
|
95
|
-
s.add_dependency(%q<holepicker>, [">= 0"])
|
96
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
97
|
-
s.add_dependency(%q<rdoc>, [">= 3.12.1"])
|
98
|
-
s.add_dependency(%q<rspec>, [">= 2.12.0"])
|
99
|
-
s.add_dependency(%q<vcr>, [">= 0"])
|
100
|
-
s.add_dependency(%q<webmock>, [">= 0"])
|
101
|
-
s.add_dependency(%q<xml-simple>, [">= 1.1.2"])
|
102
|
-
end
|
27
|
+
s.add_runtime_dependency(%q<activemodel>, ['~> 0'])
|
28
|
+
s.add_runtime_dependency(%q<httmultiparty>, ['~> 0'])
|
29
|
+
s.add_runtime_dependency(%q<roxml>, ['~> 0'])
|
30
|
+
s.add_runtime_dependency(%q<multipart-post>, ['~> 0'])
|
31
|
+
s.add_development_dependency(%q<bundler>, ['~> 1.2'])
|
32
|
+
s.add_development_dependency(%q<holepicker>, ['~> 0'])
|
33
|
+
s.add_development_dependency(%q<rdoc>, ['~> 3.12'])
|
34
|
+
s.add_development_dependency(%q<rspec>, ['~> 2.12'])
|
35
|
+
s.add_development_dependency(%q<vcr>, ['~> 0'])
|
36
|
+
s.add_development_dependency(%q<webmock>, ['~> 0'])
|
37
|
+
s.add_development_dependency(%q<xml-simple>, ['~> 1.1'])
|
103
38
|
end
|
104
39
|
|