zoho_hub 0.1.56 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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