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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 81e618bee05571f2a52e708272b1a98e2df15fea
4
- data.tar.gz: c666efadef83778b816dac13d211d285e1db3cd4
2
+ SHA256:
3
+ metadata.gz: 2cbaf008b35c02a9330bcc937cce7b22193ae82a12aedfbdad924701490227c0
4
+ data.tar.gz: fed5a5badb4163c281be2f271503507f17cc385bca983e9489519f074a8d9da6
5
5
  SHA512:
6
- metadata.gz: 49547fc7c42a6bcba273dda105f3615b08840f4ffdcc2398e6b619e2aeb1bac7307ff453514769cc93abd6f4af32fc8cd895089a27bb275ed54b9fa847cefb7b
7
- data.tar.gz: 863811e19747374fb1710e8a08a3fc3ccc768a31b1fd0fdd301aec47e02d4698e9c99eb5dfd59b5c744b2649afd99e6685ffba218ba7cf4df8e15d7b8e61f89f
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 2020 Zendesk
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/basecrm/basecrm-ruby.git'
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/basecrm/basecrm-ruby/issues).
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 2020 Zendesk
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!
@@ -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::Error::ConnectionFailed => e
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
@@ -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 0100.
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, :name, :owner_id, :source_id, :stage_id, :tags, :value, :last_stage_change_at, :estimated_close_date, :customized_win_likelihood]
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
@@ -1,3 +1,3 @@
1
1
  module BaseCRM
2
- VERSION = "1.3.7"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -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@designservices.com" }
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.designservices.com" }
20
+ website { "www.example.com" }
21
21
 
22
22
 
23
23
  to_create do |contact|
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :deal_source, class: BaseCRM::DealSource do
3
3
 
4
- name { Faker::Name.name }
4
+ name { "source#{SecureRandom.hex}" }
5
5
 
6
6
 
7
7
  to_create do |deal_source|
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :deal_unqualified_reason, class: BaseCRM::DealUnqualifiedReason do
3
3
 
4
- name { Faker::Name.name }
4
+ name { "unqualified_reason#{SecureRandom.hex}" }
5
5
 
6
6
 
7
7
  to_create do |deal_unqualified_reason|
@@ -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@designservices.com" }
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.designservices.com" }
19
+ website { "www.example.com" }
20
20
 
21
21
 
22
22
  to_create do |lead|
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :lead_source, class: BaseCRM::LeadSource do
3
3
 
4
- name { Faker::Name.name }
4
+ name { "source#{SecureRandom.hex}" }
5
5
 
6
6
 
7
7
  to_create do |lead_source|
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :loss_reason, class: BaseCRM::LossReason do
3
3
 
4
- name { Faker::Name.name }
4
+ name { "loss_reason#{Time.now.to_i}" }
5
5
 
6
6
 
7
7
  to_create do |loss_reason|
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :source, class: BaseCRM::Source do
3
3
 
4
- name { Faker::Name.name }
4
+ name { "source#{SecureRandom.hex}" }
5
5
 
6
6
 
7
7
  to_create do |source|
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :tag, class: BaseCRM::Tag do
3
3
 
4
- name { Faker::Name.name }
4
+ name { "tag#{SecureRandom.hex}" }
5
5
 
6
6
  resource_type { :contact }
7
7
 
@@ -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
@@ -1,6 +1,7 @@
1
1
  require 'rspec/collection_matchers'
2
2
  require 'factory_bot'
3
3
  require 'faker'
4
+ require 'securerandom'
4
5
 
5
6
  require 'basecrm'
6
7
 
@@ -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: 1.3.7
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: 2020-04-22 00:00:00.000000000 Z
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.9'
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.9'
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: BaseCRM Official API V2 library client for ruby
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/basecrm/basecrm-ruby
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
- rubyforge_project:
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: BaseCRM Official API V2 library client for ruby
263
+ summary: Zendesk Sell Official API V2 library client for ruby
270
264
  test_files:
271
265
  - spec/spec_helper.rb
272
- - spec/middlewares/raise_error_spec.rb
273
- - spec/utils/coercion_spec.rb
274
- - spec/utils/coercion.rb
275
- - spec/models/sync_meta_spec.rb
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/note.rb
278
- - spec/factories/source.rb
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/call.rb
283
- - spec/factories/product.rb
298
+ - spec/factories/source.rb
284
299
  - spec/factories/text_message.rb
285
- - spec/factories/lead.rb
286
- - spec/factories/deal_unqualified_reason.rb
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/task.rb
295
- - spec/basecrm/sync_spec.rb
296
- - spec/services/notes_service_spec.rb
297
- - spec/services/text_messages_service_spec.rb
298
- - spec/services/pipelines_service_spec.rb
299
- - spec/services/sources_service_spec.rb
300
- - spec/services/orders_service_spec.rb
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