basecrm 1.3.7 → 2.0.0

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