basecrm 1.3.7 → 2.0.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.
- checksums.yaml +5 -5
- data/LICENSE +1 -1
- data/README.md +11 -3
- data/lib/basecrm/configuration.rb +4 -0
- data/lib/basecrm/http_client.rb +9 -1
- data/lib/basecrm/models/deal.rb +4 -1
- data/lib/basecrm/services/deals_service.rb +3 -1
- data/lib/basecrm/version.rb +1 -1
- data/spec/factories/contact.rb +2 -2
- data/spec/factories/deal_source.rb +1 -1
- data/spec/factories/deal_unqualified_reason.rb +1 -1
- data/spec/factories/lead.rb +2 -2
- data/spec/factories/lead_source.rb +1 -1
- data/spec/factories/loss_reason.rb +1 -1
- data/spec/factories/source.rb +1 -1
- data/spec/factories/tag.rb +1 -1
- data/spec/http_client_spec.rb +15 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/client_helpers.rb +4 -0
- metadata +53 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2cbaf008b35c02a9330bcc937cce7b22193ae82a12aedfbdad924701490227c0
|
4
|
+
data.tar.gz: fed5a5badb4163c281be2f271503507f17cc385bca983e9489519f074a8d9da6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d70a8c2558153ba60f3af7fd27d8ecd25ee116c7f21a9438c1785e80668761c1773a5fb8b2794219c9a5a11b39800363e548971d6d25016aa468c6d1e0260cd
|
7
|
+
data.tar.gz: 595a8e756d8b3638901165380d07e491f6f65c3ec6e181dcb7295a92487a4393e4db48711ed3fa99f7a634daf4af1e2580af0de0c2814f8c40de74bc6897a85f
|
data/LICENSE
CHANGED
@@ -186,7 +186,7 @@
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
187
187
|
identification within third-party archives.
|
188
188
|
|
189
|
-
Copyright
|
189
|
+
Copyright 2013 Zendesk
|
190
190
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
192
192
|
you may not use this file except in compliance with the License.
|
data/README.md
CHANGED
@@ -21,7 +21,7 @@ gem 'basecrm'
|
|
21
21
|
To get the latest version, put this in your Gemfile:
|
22
22
|
|
23
23
|
```ruby
|
24
|
-
gem 'basecrm', :git => 'git://github.com/
|
24
|
+
gem 'basecrm', :git => 'git://github.com/zendesk/basecrm-ruby.git'
|
25
25
|
```
|
26
26
|
|
27
27
|
## Usage
|
@@ -49,6 +49,8 @@ The following options are available while instantiating a client:
|
|
49
49
|
* __timeout__: Request timeout
|
50
50
|
* __verbose__: Verbose/debug mode
|
51
51
|
* __logger__: Logger used in verbose mode
|
52
|
+
* __max_retry__: Number of retries on failed requests. Passed to Faraday
|
53
|
+
* __retry_statuses__: By default only timeout error will be retries. This allows to retry on specific HTTP statuses. Passed to Faraday
|
52
54
|
|
53
55
|
### Architecture
|
54
56
|
|
@@ -481,10 +483,16 @@ Actions:
|
|
481
483
|
* Retrieve visit outcomes - `client.visit_outcomes.all`
|
482
484
|
|
483
485
|
## Bug Reports
|
484
|
-
Report [here](https://github.com/
|
486
|
+
Report [here](https://github.com/zendesk/basecrm-ruby/issues).
|
487
|
+
|
488
|
+
## Releasing new version of gem
|
489
|
+
|
490
|
+
1. Update version [lib/basecrm/version.rb](lib/basecrm/version.rb) and [VERSION](VERSION) and push to `master`
|
491
|
+
2. Create new GitHub release with tag name starting with `v` and the version, for example `v1.0.0`
|
492
|
+
3. Gem will be automatically built and pushed to rubygems.org with GitHub Action
|
485
493
|
|
486
494
|
## Copyright and license
|
487
495
|
|
488
|
-
Copyright
|
496
|
+
Copyright 2013 Zendesk
|
489
497
|
|
490
498
|
Licensed under the [Apache License, Version 2.0](LICENSE)
|
@@ -7,6 +7,8 @@ module BaseCRM
|
|
7
7
|
attr_reader :user_agent
|
8
8
|
attr_reader :timeout
|
9
9
|
attr_reader :verify_ssl
|
10
|
+
attr_reader :max_retry
|
11
|
+
attr_reader :retry_statuses
|
10
12
|
|
11
13
|
attr_reader :logger, :verbose
|
12
14
|
alias_method :debug?, :verbose
|
@@ -19,6 +21,8 @@ module BaseCRM
|
|
19
21
|
@verbose = !!options[:verbose]
|
20
22
|
@timeout = options[:timeout] || 30
|
21
23
|
@verify_ssl = options.fetch(:verify_ssl, true)
|
24
|
+
@max_retry = options[:max_retry]
|
25
|
+
@retry_statuses = options[:retry_statuses]
|
22
26
|
end
|
23
27
|
|
24
28
|
def validate!
|
data/lib/basecrm/http_client.rb
CHANGED
@@ -22,6 +22,7 @@ module BaseCRM
|
|
22
22
|
options[:ssl] = { verify: false } unless config.verify_ssl
|
23
23
|
|
24
24
|
@client = Faraday.new(config.base_url, options) do |faraday|
|
25
|
+
faraday.request :retry, retry_options
|
25
26
|
faraday.use BaseCRM::Middlewares::OAuthBearerToken, config.access_token
|
26
27
|
faraday.use BaseCRM::Middlewares::RaiseError
|
27
28
|
faraday.response :logger, config.logger if config.debug?
|
@@ -74,7 +75,7 @@ module BaseCRM
|
|
74
75
|
body = extract_body(res)
|
75
76
|
@config.logger.debug body if @config.debug? && body && @config.logger
|
76
77
|
[res.status, res.headers, body]
|
77
|
-
rescue Faraday::
|
78
|
+
rescue Faraday::ConnectionFailed => e
|
78
79
|
raise ConnectionError, e.message
|
79
80
|
end
|
80
81
|
|
@@ -89,5 +90,12 @@ module BaseCRM
|
|
89
90
|
content_type = res.headers['Content-Type']
|
90
91
|
content_type && content_type.include?('json') ? JSON.parse(res.body, symbolize_names: true) : res.body
|
91
92
|
end
|
93
|
+
|
94
|
+
def retry_options
|
95
|
+
retry_options = {}
|
96
|
+
retry_options[:max] = @config.max_retry if @config.max_retry
|
97
|
+
retry_options[:retry_statuses] = @config.retry_statuses if @config.retry_statuses
|
98
|
+
retry_options
|
99
|
+
end
|
92
100
|
end
|
93
101
|
end
|
data/lib/basecrm/models/deal.rb
CHANGED
@@ -34,7 +34,7 @@ module BaseCRM
|
|
34
34
|
# @return [Hash] Custom fields are key-value data attached to a deal. See more at [Custom Fields](/docs/rest/articles/requests#custom_fields).
|
35
35
|
# attr_accessor :custom_fields
|
36
36
|
# @!attribute [rw] customized_win_likelihood
|
37
|
-
# @return [Integer] User-provided win likelihood with value range 0
|
37
|
+
# @return [Integer] User-provided win likelihood with value range 0-100.
|
38
38
|
# attr_accessor :customized_win_likelihood
|
39
39
|
# @!attribute [rw] estimated_close_date
|
40
40
|
# @return [String] Estimated close date of the deal
|
@@ -63,6 +63,9 @@ module BaseCRM
|
|
63
63
|
# @!attribute [rw] tags
|
64
64
|
# @return [Array<String>] An array of tags for a deal. See more at [Tags](/docs/rest/articles/requests#tags).
|
65
65
|
# attr_accessor :tags
|
66
|
+
# @!attribute [rw] added_on
|
67
|
+
# @return [DateTime] Date and time when the deal was added in UTC (ISO8601 format).
|
68
|
+
# attr_accessor :added_on
|
66
69
|
# @!attribute [rw] value
|
67
70
|
# @return [BigDecimal] Value of the deal in a currency specified in the `currency` field.
|
68
71
|
# attr_accessor :value
|
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
module BaseCRM
|
4
4
|
class DealsService
|
5
|
-
OPTS_KEYS_TO_PERSIST = Set[:contact_id, :currency, :custom_fields, :hot, :loss_reason_id,
|
5
|
+
OPTS_KEYS_TO_PERSIST = Set[:contact_id, :currency, :custom_fields, :hot, :loss_reason_id,
|
6
|
+
:unqualified_reason_id, :name, :owner_id, :source_id, :stage_id, :tags, :value, :last_stage_change_at,
|
7
|
+
:estimated_close_date, :customized_win_likelihood, :added_on]
|
6
8
|
|
7
9
|
def initialize(client)
|
8
10
|
@client = client
|
data/lib/basecrm/version.rb
CHANGED
data/spec/factories/contact.rb
CHANGED
@@ -2,7 +2,7 @@ FactoryBot.define do
|
|
2
2
|
factory :contact, class: BaseCRM::Contact do
|
3
3
|
|
4
4
|
description { "I know him via Tom" }
|
5
|
-
email { "mark@
|
5
|
+
email { "mark#{SecureRandom.hex}@example.com" }
|
6
6
|
facebook { "mjohnson" }
|
7
7
|
fax { "+44-208-1234567" }
|
8
8
|
first_name { Faker::Name.first_name }
|
@@ -17,7 +17,7 @@ FactoryBot.define do
|
|
17
17
|
tags { ["important"] }
|
18
18
|
title { "CEO" }
|
19
19
|
twitter { "mjohnson" }
|
20
|
-
website { "www.
|
20
|
+
website { "www.example.com" }
|
21
21
|
|
22
22
|
|
23
23
|
to_create do |contact|
|
data/spec/factories/lead.rb
CHANGED
@@ -2,7 +2,7 @@ FactoryBot.define do
|
|
2
2
|
factory :lead, class: BaseCRM::Lead do
|
3
3
|
|
4
4
|
description { "I know him via Tom" }
|
5
|
-
email { "mark@
|
5
|
+
email { "mark#{SecureRandom.hex}@example.com" }
|
6
6
|
facebook { "mjohnson" }
|
7
7
|
fax { "+44-208-1234567" }
|
8
8
|
first_name { Faker::Name.first_name }
|
@@ -16,7 +16,7 @@ FactoryBot.define do
|
|
16
16
|
tags { ["important"] }
|
17
17
|
title { "CEO" }
|
18
18
|
twitter { "mjohnson" }
|
19
|
-
website { "www.
|
19
|
+
website { "www.example.com" }
|
20
20
|
|
21
21
|
|
22
22
|
to_create do |lead|
|
data/spec/factories/source.rb
CHANGED
data/spec/factories/tag.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BaseCRM::HttpClient do
|
4
|
+
describe 'Retries' do
|
5
|
+
let(:statuses_to_retry) { [503] }
|
6
|
+
let(:max_retry) { 3 }
|
7
|
+
subject(:client_with_retry) { client_with_basic_retry(max_retry: max_retry, on_statuses: statuses_to_retry) }
|
8
|
+
|
9
|
+
it "should pass retry statues to Faraday and do a valid request" do
|
10
|
+
expect(client_with_retry.http_client.client.app.options.retry_statuses).to match_array(statuses_to_retry)
|
11
|
+
expect(client_with_retry.http_client.client.app.options.max).to eq(max_retry)
|
12
|
+
expect(client_with_retry.accounts.self).to be_instance_of BaseCRM::Account
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,6 +3,10 @@ module ClientHelpers
|
|
3
3
|
@client ||= BaseCRM::Client.new(access_token: access_token, base_url: base_url)
|
4
4
|
end
|
5
5
|
|
6
|
+
def client_with_basic_retry(max_retry: 1, on_statuses: [])
|
7
|
+
@client_with_basic_retry ||= BaseCRM::Client.new(access_token: access_token, base_url: base_url, max_retry: max_retry, retry_statuses: on_statuses)
|
8
|
+
end
|
9
|
+
|
6
10
|
def access_token
|
7
11
|
@access_token ||= ENV.fetch("BASECRM_ACCESS_TOKEN") { raise '"BASECRM_ACCESS_TOKEN" has not been found.' }
|
8
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: basecrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zendesk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.9.0
|
19
|
+
version: '1.0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.9.0
|
26
|
+
version: '1.0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: json
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +108,7 @@ dependencies:
|
|
114
108
|
- - "~>"
|
115
109
|
- !ruby/object:Gem::Version
|
116
110
|
version: '1.4'
|
117
|
-
description:
|
111
|
+
description: Zendesk Sell Official API V2 library client for ruby
|
118
112
|
email:
|
119
113
|
- opensource@zendesk.com
|
120
114
|
executables: []
|
@@ -211,6 +205,7 @@ files:
|
|
211
205
|
- spec/factories/tag.rb
|
212
206
|
- spec/factories/task.rb
|
213
207
|
- spec/factories/text_message.rb
|
208
|
+
- spec/http_client_spec.rb
|
214
209
|
- spec/middlewares/raise_error_spec.rb
|
215
210
|
- spec/models/sync_meta_spec.rb
|
216
211
|
- spec/services/accounts_service_spec.rb
|
@@ -243,7 +238,7 @@ files:
|
|
243
238
|
- spec/support/client_helpers.rb
|
244
239
|
- spec/utils/coercion.rb
|
245
240
|
- spec/utils/coercion_spec.rb
|
246
|
-
homepage: https://github.com/
|
241
|
+
homepage: https://github.com/zendesk/basecrm-ruby
|
247
242
|
licenses:
|
248
243
|
- Apache License Version 2.0
|
249
244
|
metadata: {}
|
@@ -262,60 +257,60 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
257
|
- !ruby/object:Gem::Version
|
263
258
|
version: '0'
|
264
259
|
requirements: []
|
265
|
-
|
266
|
-
rubygems_version: 2.5.2.3
|
260
|
+
rubygems_version: 3.0.3.1
|
267
261
|
signing_key:
|
268
262
|
specification_version: 4
|
269
|
-
summary:
|
263
|
+
summary: Zendesk Sell Official API V2 library client for ruby
|
270
264
|
test_files:
|
271
265
|
- spec/spec_helper.rb
|
272
|
-
- spec/
|
273
|
-
- spec/
|
274
|
-
- spec/
|
275
|
-
- spec/
|
266
|
+
- spec/services/calls_service_spec.rb
|
267
|
+
- spec/services/deals_service_spec.rb
|
268
|
+
- spec/services/stages_service_spec.rb
|
269
|
+
- spec/services/users_service_spec.rb
|
270
|
+
- spec/services/tasks_service_spec.rb
|
271
|
+
- spec/services/lead_unqualified_reasons_service_spec.rb
|
272
|
+
- spec/services/deal_sources_service_spec.rb
|
273
|
+
- spec/services/products_service_spec.rb
|
274
|
+
- spec/services/accounts_service_spec.rb
|
275
|
+
- spec/services/call_outcomes_service_spec.rb
|
276
|
+
- spec/services/pipelines_service_spec.rb
|
277
|
+
- spec/services/contacts_service_spec.rb
|
278
|
+
- spec/services/orders_service_spec.rb
|
279
|
+
- spec/services/visits_service_spec.rb
|
280
|
+
- spec/services/leads_service_spec.rb
|
281
|
+
- spec/services/sources_service_spec.rb
|
282
|
+
- spec/services/lead_sources_service_spec.rb
|
283
|
+
- spec/services/sync_service_spec.rb
|
284
|
+
- spec/services/visit_outcomes_service_spec.rb
|
285
|
+
- spec/services/loss_reasons_service_spec.rb
|
286
|
+
- spec/services/associated_contacts_service_spec.rb
|
287
|
+
- spec/services/notes_service_spec.rb
|
288
|
+
- spec/services/deal_unqualified_reasons_service_spec.rb
|
289
|
+
- spec/services/tags_service_spec.rb
|
290
|
+
- spec/services/line_items_service_spec.rb
|
291
|
+
- spec/services/text_messages_service_spec.rb
|
292
|
+
- spec/basecrm/sync_spec.rb
|
276
293
|
- spec/support/client_helpers.rb
|
277
|
-
- spec/factories/
|
278
|
-
- spec/factories/
|
294
|
+
- spec/factories/lead_unqualified_reason.rb
|
295
|
+
- spec/factories/order.rb
|
279
296
|
- spec/factories/tag.rb
|
280
|
-
- spec/factories/contact.rb
|
281
297
|
- spec/factories/deal.rb
|
282
|
-
- spec/factories/
|
283
|
-
- spec/factories/product.rb
|
298
|
+
- spec/factories/source.rb
|
284
299
|
- spec/factories/text_message.rb
|
285
|
-
- spec/factories/
|
286
|
-
- spec/factories/
|
287
|
-
- spec/factories/lead_unqualified_reason.rb
|
288
|
-
- spec/factories/deal_source.rb
|
289
|
-
- spec/factories/order.rb
|
290
|
-
- spec/factories/lead_source.rb
|
300
|
+
- spec/factories/task.rb
|
301
|
+
- spec/factories/contact.rb
|
291
302
|
- spec/factories/associated_contact.rb
|
292
303
|
- spec/factories/line_item.rb
|
304
|
+
- spec/factories/deal_source.rb
|
305
|
+
- spec/factories/deal_unqualified_reason.rb
|
306
|
+
- spec/factories/call.rb
|
307
|
+
- spec/factories/note.rb
|
308
|
+
- spec/factories/lead_source.rb
|
293
309
|
- spec/factories/loss_reason.rb
|
294
|
-
- spec/factories/
|
295
|
-
- spec/
|
296
|
-
- spec/
|
297
|
-
- spec/
|
298
|
-
- spec/
|
299
|
-
- spec/
|
300
|
-
- spec/
|
301
|
-
- spec/services/tasks_service_spec.rb
|
302
|
-
- spec/services/stages_service_spec.rb
|
303
|
-
- spec/services/tags_service_spec.rb
|
304
|
-
- spec/services/products_service_spec.rb
|
305
|
-
- spec/services/call_outcomes_service_spec.rb
|
306
|
-
- spec/services/lead_sources_service_spec.rb
|
307
|
-
- spec/services/associated_contacts_service_spec.rb
|
308
|
-
- spec/services/users_service_spec.rb
|
309
|
-
- spec/services/leads_service_spec.rb
|
310
|
-
- spec/services/line_items_service_spec.rb
|
311
|
-
- spec/services/loss_reasons_service_spec.rb
|
312
|
-
- spec/services/deal_sources_service_spec.rb
|
313
|
-
- spec/services/visit_outcomes_service_spec.rb
|
314
|
-
- spec/services/calls_service_spec.rb
|
315
|
-
- spec/services/deal_unqualified_reasons_service_spec.rb
|
316
|
-
- spec/services/visits_service_spec.rb
|
317
|
-
- spec/services/sync_service_spec.rb
|
318
|
-
- spec/services/lead_unqualified_reasons_service_spec.rb
|
319
|
-
- spec/services/accounts_service_spec.rb
|
320
|
-
- spec/services/contacts_service_spec.rb
|
321
|
-
- spec/services/deals_service_spec.rb
|
310
|
+
- spec/factories/product.rb
|
311
|
+
- spec/factories/lead.rb
|
312
|
+
- spec/utils/coercion.rb
|
313
|
+
- spec/utils/coercion_spec.rb
|
314
|
+
- spec/models/sync_meta_spec.rb
|
315
|
+
- spec/http_client_spec.rb
|
316
|
+
- spec/middlewares/raise_error_spec.rb
|