zoho_hub 0.1.56 → 0.2.0

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -2
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +5 -2
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +5 -2
  7. data/Gemfile +0 -10
  8. data/README.md +91 -7
  9. data/bin/console +6 -7
  10. data/bin/read +44 -0
  11. data/bin/setup +0 -2
  12. data/bin/zoho_hub +62 -0
  13. data/cache/.git_keep +0 -0
  14. data/lib/zoho_hub/auth.rb +38 -47
  15. data/lib/zoho_hub/base_record.rb +122 -0
  16. data/lib/zoho_hub/configuration.rb +3 -4
  17. data/lib/zoho_hub/connection.rb +12 -17
  18. data/lib/zoho_hub/{records → deprecated_and_only_for_reference_records}/account.rb +1 -1
  19. data/lib/zoho_hub/{records → deprecated_and_only_for_reference_records}/contact.rb +3 -9
  20. data/lib/zoho_hub/deprecated_and_only_for_reference_records/funder.rb +9 -0
  21. data/lib/zoho_hub/{records → deprecated_and_only_for_reference_records}/potential.rb +1 -25
  22. data/lib/zoho_hub/deprecated_and_only_for_reference_records/product.rb +9 -0
  23. data/lib/zoho_hub/deprecated_and_only_for_reference_records/quote.rb +34 -0
  24. data/lib/zoho_hub/errors.rb +0 -3
  25. data/lib/zoho_hub/module_builder.rb +61 -0
  26. data/lib/zoho_hub/oauth_callback_server.rb +26 -0
  27. data/lib/zoho_hub/response.rb +1 -4
  28. data/lib/zoho_hub/settings/field.rb +33 -0
  29. data/lib/zoho_hub/settings/module.rb +49 -0
  30. data/lib/zoho_hub/string_utils.rb +34 -0
  31. data/lib/zoho_hub/version.rb +1 -1
  32. data/lib/zoho_hub/views/variables.erb +72 -0
  33. data/lib/zoho_hub/with_attributes.rb +74 -0
  34. data/lib/zoho_hub/with_connection.rb +36 -0
  35. data/lib/zoho_hub.rb +21 -23
  36. data/zoho_hub.gemspec +21 -8
  37. metadata +180 -45
  38. data/lib/zoho_hub/records/adverse_criteria.rb +0 -43
  39. data/lib/zoho_hub/records/attachment.rb +0 -106
  40. data/lib/zoho_hub/records/base_record.rb +0 -189
  41. data/lib/zoho_hub/records/credit_score.rb +0 -36
  42. data/lib/zoho_hub/records/product.rb +0 -33
  43. data/lib/zoho_hub/records/quote.rb +0 -44
  44. data/lib/zoho_hub/records/sms_message.rb +0 -32
  45. data/lib/zoho_hub/records/vendor.rb +0 -34
  46. /data/lib/zoho_hub/{records → deprecated_and_only_for_reference_records}/campaign.rb +0 -0
data/lib/zoho_hub.rb CHANGED
@@ -1,36 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/core_ext/object/blank'
4
- require 'active_support/core_ext/string/inflections'
3
+ require 'backports/2.3.0/hash' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
5
4
 
6
5
  require 'zoho_hub/version'
7
6
  require 'zoho_hub/auth'
8
7
  require 'zoho_hub/configuration'
9
8
  require 'zoho_hub/connection'
10
9
  require 'zoho_hub/errors'
11
- require 'zoho_hub/records/contact'
12
- require 'zoho_hub/records/potential'
13
- require 'zoho_hub/records/campaign'
14
- require 'zoho_hub/records/account'
15
- require 'zoho_hub/records/quote'
16
- require 'zoho_hub/records/vendor'
17
- require 'zoho_hub/records/product'
18
- require 'zoho_hub/records/attachment'
19
- require 'zoho_hub/records/credit_score'
20
- require 'zoho_hub/records/adverse_criteria'
21
- require 'zoho_hub/records/sms_message'
10
+ require 'zoho_hub/base_record'
11
+ require 'zoho_hub/settings/module'
12
+ require 'zoho_hub/module_builder'
13
+
14
+ require 'multi_json'
22
15
 
23
16
  module ZohoHub
24
17
  module_function
25
18
 
19
+ def root
20
+ File.expand_path(File.join(__dir__, '..'))
21
+ end
22
+
26
23
  def configuration
27
24
  @configuration ||= Configuration.new
28
25
  end
29
26
 
30
- def connection
31
- @connection
27
+ def configure
28
+ yield(configuration)
32
29
  end
33
30
 
31
+ # Callback for when the token is refreshed.
34
32
  def on_refresh(&block)
35
33
  @connection.on_refresh_cb = block
36
34
  end
@@ -38,24 +36,24 @@ module ZohoHub
38
36
  def setup_connection(params = {})
39
37
  raise "ERROR: #{params[:error]}" if params[:error]
40
38
 
41
- connection_params = params.slice(:access_token, :expires_in, :api_domain, :refresh_token)
39
+ connection_params = params.dup.slice(:access_token, :expires_in, :api_domain, :refresh_token)
42
40
 
43
- @connection = Connection.new(**connection_params)
41
+ @connection = Connection.new(connection_params)
42
+ end
43
+
44
+ def connection
45
+ @connection
44
46
  end
45
47
 
46
48
  def refresh_token?
47
- return false unless connection.present?
49
+ return false unless connection
48
50
 
49
51
  connection.refresh_token?
50
52
  end
51
53
 
52
54
  def access_token?
53
- return false unless connection.present?
55
+ return false unless connection
54
56
 
55
57
  connection.access_token?
56
58
  end
57
-
58
- def configure
59
- yield(configuration)
60
- end
61
59
  end
data/zoho_hub.gemspec CHANGED
@@ -19,14 +19,27 @@ Gem::Specification.new do |spec|
19
19
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
20
  f.match(%r{^(test|spec|features)/})
21
21
  end
22
- spec.bindir = 'exe'
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.bindir = 'bin'
23
+ spec.executables = ['zoho_hub']
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_dependency 'activesupport', '> 6'
27
- spec.add_dependency 'addressable', '~> 2.8'
28
- spec.add_dependency 'faraday', '~> 2.7'
29
- spec.add_dependency 'faraday-multipart'
30
- spec.add_dependency 'multi_json', '~> 1.15'
31
- spec.add_dependency 'rainbow', '~> 3.1'
26
+ spec.required_ruby_version = '>= 2.1.0'
27
+
28
+ spec.add_dependency 'addressable'
29
+ spec.add_dependency 'backports' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
30
+ spec.add_dependency 'faraday'
31
+ spec.add_dependency 'faraday_middleware'
32
+ spec.add_dependency 'launchy'
33
+ spec.add_dependency 'multi_json'
34
+ spec.add_dependency 'rainbow'
35
+ spec.add_dependency 'sinatra'
36
+
37
+ spec.add_development_dependency 'bundler'
38
+ spec.add_development_dependency 'dotenv'
39
+ spec.add_development_dependency 'pry-byebug'
40
+ spec.add_development_dependency 'rake'
41
+ spec.add_development_dependency 'rspec'
42
+ spec.add_development_dependency 'rubocop'
43
+ spec.add_development_dependency 'rubocop-rspec'
44
+ spec.add_development_dependency 'simplecov'
32
45
  end
metadata CHANGED
@@ -1,59 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zoho_hub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.56
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Otero
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-31 00:00:00.000000000 Z
11
+ date: 2018-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: addressable
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: addressable
28
+ name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '2.8'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '2.8'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday
42
+ name: faraday_middleware
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '2.7'
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '2.7'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: faraday-multipart
56
+ name: launchy
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -70,34 +70,161 @@ dependencies:
70
70
  name: multi_json
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '1.15'
75
+ version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '1.15'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rainbow
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '3.1'
89
+ version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sinatra
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: bundler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: dotenv
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry-byebug
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
95
179
  - !ruby/object:Gem::Version
96
- version: '3.1'
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop-rspec
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
97
223
  description: Simple gem to connect to Zoho CRM API V2
98
224
  email:
99
225
  - oterosantos@gmail.com
100
- executables: []
226
+ executables:
227
+ - zoho_hub
101
228
  extensions: []
102
229
  extra_rdoc_files: []
103
230
  files:
@@ -111,32 +238,39 @@ files:
111
238
  - README.md
112
239
  - Rakefile
113
240
  - bin/console
241
+ - bin/read
114
242
  - bin/setup
243
+ - bin/zoho_hub
244
+ - cache/.git_keep
115
245
  - lib/zoho_hub.rb
116
246
  - lib/zoho_hub/auth.rb
247
+ - lib/zoho_hub/base_record.rb
117
248
  - lib/zoho_hub/configuration.rb
118
249
  - lib/zoho_hub/connection.rb
250
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/account.rb
251
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/campaign.rb
252
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/contact.rb
253
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/funder.rb
254
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/potential.rb
255
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/product.rb
256
+ - lib/zoho_hub/deprecated_and_only_for_reference_records/quote.rb
119
257
  - lib/zoho_hub/errors.rb
120
- - lib/zoho_hub/records/account.rb
121
- - lib/zoho_hub/records/adverse_criteria.rb
122
- - lib/zoho_hub/records/attachment.rb
123
- - lib/zoho_hub/records/base_record.rb
124
- - lib/zoho_hub/records/campaign.rb
125
- - lib/zoho_hub/records/contact.rb
126
- - lib/zoho_hub/records/credit_score.rb
127
- - lib/zoho_hub/records/potential.rb
128
- - lib/zoho_hub/records/product.rb
129
- - lib/zoho_hub/records/quote.rb
130
- - lib/zoho_hub/records/sms_message.rb
131
- - lib/zoho_hub/records/vendor.rb
258
+ - lib/zoho_hub/module_builder.rb
259
+ - lib/zoho_hub/oauth_callback_server.rb
132
260
  - lib/zoho_hub/response.rb
261
+ - lib/zoho_hub/settings/field.rb
262
+ - lib/zoho_hub/settings/module.rb
263
+ - lib/zoho_hub/string_utils.rb
133
264
  - lib/zoho_hub/version.rb
265
+ - lib/zoho_hub/views/variables.erb
266
+ - lib/zoho_hub/with_attributes.rb
267
+ - lib/zoho_hub/with_connection.rb
134
268
  - zoho_hub.gemspec
135
269
  homepage: https://github.com/rikas/zoho_hub
136
270
  licenses:
137
271
  - MIT
138
272
  metadata: {}
139
- post_install_message:
273
+ post_install_message:
140
274
  rdoc_options: []
141
275
  require_paths:
142
276
  - lib
@@ -144,15 +278,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
278
  requirements:
145
279
  - - ">="
146
280
  - !ruby/object:Gem::Version
147
- version: '0'
281
+ version: 2.1.0
148
282
  required_rubygems_version: !ruby/object:Gem::Requirement
149
283
  requirements:
150
284
  - - ">="
151
285
  - !ruby/object:Gem::Version
152
286
  version: '0'
153
287
  requirements: []
154
- rubygems_version: 3.4.4
155
- signing_key:
288
+ rubyforge_project:
289
+ rubygems_version: 2.7.6
290
+ signing_key:
156
291
  specification_version: 4
157
292
  summary: Simple gem to connect to Zoho CRM API V2
158
293
  test_files: []
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'zoho_hub/records/base_record'
4
-
5
- module ZohoHub
6
- class AdverseCriteria < BaseRecord
7
- request_path 'Adverse_Criteria'
8
-
9
- attributes :id, :account_id, :date_decided, :date_paid
10
- attributes :status, :amount, :currency, :court
11
- attributes :case_reference, :entity_details, :data_source
12
-
13
- attribute_translation(
14
- id: :id,
15
- case_reference: :Name,
16
- status: :CCJ_Status,
17
- amount: :CCJ_Amount,
18
- data_source: :CCJ_Data_Source,
19
- date_paid: :Date_paid,
20
- date_decided: :Date_decided,
21
- entity_details: :Entity_details
22
- )
23
-
24
- def initialize(params)
25
- attributes.each do |attr|
26
- zoho_key = attr_to_zoho_key(attr)
27
-
28
- send("#{attr}=", params[zoho_key] || params[attr])
29
- end
30
-
31
- # Setup values as they come from the Zoho API if needed
32
- @account_id ||= params.dig(:Account, :id)
33
- end
34
-
35
- def to_params
36
- params = super
37
-
38
- params[:Account] = { id: @account_id } if @account_id
39
-
40
- params
41
- end
42
- end
43
- end
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'zoho_hub/records/base_record'
4
- require 'faraday/multipart'
5
-
6
- module ZohoHub
7
- class Attachment < BaseRecord
8
- attributes :id, :parent_id, :file_name, :link_url, :type, :created_time
9
- attributes :parent, :attachment_url
10
-
11
- # The translation from attribute name to the JSON field on Zoho. The default behaviour will be
12
- # to Camel_Case the attribute so on this list we should only have exceptions to this rule.
13
- attribute_translation(
14
- id: :id,
15
- link_url: :'$link_url',
16
- type: :'$type'
17
- )
18
-
19
- def initialize(params)
20
- attributes.each do |attr|
21
- zoho_key = attr_to_zoho_key(attr)
22
-
23
- send("#{attr}=", params[zoho_key] || params[attr])
24
- end
25
-
26
- @parent_id = params.dig(:Parent_Id, :id)
27
- end
28
-
29
- class << self
30
- def exists?(id, parent:)
31
- !find(id, parent: parent).nil?
32
- rescue RecordNotFound
33
- false
34
- end
35
-
36
- def find(id, parent:)
37
- body = get(File.join(request_path, id.to_s), parent: parent)
38
- response = build_response(body)
39
-
40
- if response.empty?
41
- raise RecordNotFound, "Couldn't find #{request_path.singularize} with 'id'=#{id}"
42
- end
43
-
44
- new(response.data)
45
- end
46
-
47
- def get(path, params = {}, &block)
48
- parent = params.fetch(:parent)
49
- # remove /search added by where method
50
- path = path.sub('/search', '')
51
- ZohoHub.connection.get(parent_module_path(path, parent), params, &block)
52
- end
53
-
54
- def post(path, parent:, **params)
55
- ZohoHub.connection.post(parent_module_path(path, parent), params) do |conn|
56
- conn.request :multipart
57
- conn.request :url_encoded
58
- end
59
- end
60
-
61
- def put(_path, _params = {})
62
- raise NotImplementedError
63
- end
64
-
65
- def parent_module_path(path, parent)
66
- File.join(
67
- parent.class.request_path,
68
- parent.id,
69
- path
70
- )
71
- end
72
- end
73
-
74
- def post(path, _params = {})
75
- self.class.post(path, parent: parent, **to_params)
76
- end
77
-
78
- def put(_path, _params = {})
79
- raise NotImplementedError
80
- end
81
-
82
- def save(*, **)
83
- super
84
- rescue => e
85
- if e.message.include?('Attachment link already exists')
86
- raise AttachmentLinkTakenError, e.message
87
- else
88
- raise e
89
- end
90
- end
91
-
92
- def to_params
93
- { attachmentUrl: attachment_url }
94
- end
95
-
96
- private
97
-
98
- def to_input(**)
99
- to_params
100
- end
101
-
102
- def parent_module_path(path)
103
- self.class.parent_module_path(path, parent)
104
- end
105
- end
106
- end