dotloop_api 3.0.0 → 3.0.1

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
2
  SHA256:
3
- metadata.gz: a89d1a970e62f316651c5ad4e388a4b3889c013b7e5347ed49211b3268ec78df
4
- data.tar.gz: 2056947d1efe2b07e1353f1f01d8fee5c37df3b8cf12e76b41c70c196b799a37
3
+ metadata.gz: 9a18aa288212b96c03545a353aa2cbe69288d41fcaa9acad92b37a8fd3d4b4ee
4
+ data.tar.gz: b5df2749877178c8a8b4c6b4390e82df8cf9d0818cf10717c7f9f894ca06f591
5
5
  SHA512:
6
- metadata.gz: 4b7f604a892d20adf0f03542a6e12ca187e5fd83b00b665cceecf7c67c3e5aae78ffc1b038fc56834c94b52d5ccb8c22eea0ab862f380b8f961017f6fb3f52d4
7
- data.tar.gz: 9b6f84cc9aa551d170fdb704c4bb1852b2aced97d73dc0640fdc62666a0ec26e3227743f3e18868580ddb3c776a5115a8a39f83d815f80ff573c9c18893ad77d
6
+ metadata.gz: def1e062ab41bdd7084d076a4e0a835f7c9428f330b44515fff09c22da26d68bb80d68737704a4402cf200d5d1b5261f10a9e8697231c5cb925c5f6b4093e066
7
+ data.tar.gz: bbc299ba0514b8fd7a7ff6524277e359dbb95819aea6e46684c0e49b0426954f1a9f221977dcf25b6cdb2b2f6560a3351be9af009884fd9bc6fdce5d1d703b04
checksums.yaml.gz.sig CHANGED
Binary file
data/.rubocop.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.7
2
+ NewCops: enable
3
+ TargetRubyVersion: 3.2.2
3
4
  Exclude:
4
5
  - '**/Guardfile'
5
6
  - 'db/**/*'
data/Gemfile CHANGED
@@ -2,3 +2,13 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in dotloop_api.gemspec
4
4
  gemspec
5
+
6
+ gem 'bundler', '~> 2'
7
+ gem 'coveralls_reborn', '~> 0.25.0'
8
+ gem 'pry', '~> 0.14'
9
+ gem 'rake', '~> 13'
10
+ gem 'rspec', '~> 3'
11
+ gem 'rubocop', '~> 1'
12
+ gem 'simplecov', '~> 0.21'
13
+ gem 'travis', '~> 1.8'
14
+ gem 'webmock', '~> 3'
data/dotloop_api.gemspec CHANGED
@@ -2,7 +2,7 @@ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'dotloop_api/version'
4
4
 
5
- Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
5
+ Gem::Specification.new do |spec|
6
6
  spec.name = 'dotloop_api'
7
7
  spec.version = DotloopApi::VERSION
8
8
  spec.authors = ['Loft47']
@@ -30,13 +30,5 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
30
30
  spec.add_runtime_dependency 'httparty', '~> 0.20'
31
31
  spec.add_runtime_dependency 'plissken', '~> 2'
32
32
  spec.add_runtime_dependency 'virtus', '~> 1.0'
33
- spec.add_development_dependency 'bundler', '~> 2'
34
- spec.add_development_dependency 'coveralls_reborn', '~> 0.25.0'
35
- spec.add_development_dependency 'pry', '~> 0.14'
36
- spec.add_development_dependency 'rake', '~> 13'
37
- spec.add_development_dependency 'rspec', '~> 3'
38
- spec.add_development_dependency 'rubocop', '~> 1'
39
- spec.add_development_dependency 'simplecov', '~> 0.21'
40
- spec.add_development_dependency 'travis', '~> 1.8'
41
- spec.add_development_dependency 'webmock', '~> 3'
33
+ spec.metadata['rubygems_mfa_required'] = 'true'
42
34
  end
@@ -5,11 +5,11 @@ module DotloopApi
5
5
 
6
6
  def initialize(client_id:, client_secret:, redirect_uri:, redirect_on_deny: true, application: 'dotloop')
7
7
  @config = DotloopApi::Models::Config.new(
8
- application: application,
9
- client_id: client_id,
10
- client_secret: client_secret,
11
- redirect_on_deny: redirect_on_deny,
12
- redirect_uri: redirect_uri,
8
+ application:,
9
+ client_id:,
10
+ client_secret:,
11
+ redirect_on_deny:,
12
+ redirect_uri:,
13
13
  state: SecureRandom.uuid
14
14
  )
15
15
  end
@@ -22,18 +22,18 @@ module DotloopApi
22
22
 
23
23
  def request(code:, state: nil)
24
24
  check_state(state)
25
- response = self.class.post("#{base_uri}token", query: request_params(code), headers: headers, timeout: 60)
25
+ response = self.class.post("#{base_uri}token", query: request_params(code), headers:, timeout: 60)
26
26
  handle_error(response)
27
27
  @config.attributes = response.parsed_response
28
28
  end
29
29
 
30
30
  def request_from_url(url)
31
- request(parse_url_response(url))
31
+ request(**parse_url_response(url))
32
32
  end
33
33
 
34
34
  def refresh
35
35
  check_refresh_token
36
- response = self.class.post("#{base_uri}token", query: refresh_params, headers: headers, timeout: 60)
36
+ response = self.class.post("#{base_uri}token", query: refresh_params, headers:, timeout: 60)
37
37
  handle_error(response)
38
38
  @config.attributes = response.parsed_response
39
39
  end
@@ -41,7 +41,7 @@ module DotloopApi
41
41
  def revoke
42
42
  check_revoke_token
43
43
  params = { token: @config.access_token }
44
- response = self.class.post("#{base_uri}token/revoke", query: params, headers: headers, timeout: 60)
44
+ response = self.class.post("#{base_uri}token/revoke", query: params, headers:, timeout: 60)
45
45
  handle_error(response)
46
46
  clear_auth
47
47
  end
@@ -56,14 +56,14 @@ module DotloopApi
56
56
  {
57
57
  'Content-Type': 'application/x-www-form-urlencoded',
58
58
  'User-Agent': @config.application.to_s,
59
- 'Accept': '*/*',
60
- 'Authorization': "Basic #{encoded_client_id}"
59
+ Accept: '*/*',
60
+ Authorization: "Basic #{encoded_client_id}"
61
61
  }
62
62
  end
63
63
 
64
64
  def request_params(code)
65
65
  {
66
- code: code,
66
+ code:,
67
67
  grant_type: :authorization_code,
68
68
  redirect_uri: @config.redirect_uri,
69
69
  state: @config.state
@@ -20,28 +20,28 @@ module DotloopApi
20
20
  end
21
21
 
22
22
  def patch(page, model)
23
- response = self.class.patch(page, query: model.attributes, headers: headers, timeout: 60)
23
+ response = self.class.patch(page, query: model.attributes, headers:, timeout: 60)
24
24
  limits_from_headers(response.headers)
25
25
  handle_dotloop_error(response.code) if response.code != 200
26
26
  self.class.snakify(response.parsed_response)
27
27
  end
28
28
 
29
29
  def post(page, model)
30
- response = self.class.post(page, query: model.attributes, headers: headers, timeout: 60)
30
+ response = self.class.post(page, query: model.attributes, headers:, timeout: 60)
31
31
  limits_from_headers(response.headers)
32
32
  handle_dotloop_error(response.code) if response.code != 200
33
33
  self.class.snakify(response.parsed_response)
34
34
  end
35
35
 
36
36
  def delete(page)
37
- response = self.class.delete(page, headers: headers, timeout: 60)
37
+ response = self.class.delete(page, headers:, timeout: 60)
38
38
  limits_from_headers(response.headers)
39
39
  handle_dotloop_error(response.code) if response.code != 200
40
40
  self.class.snakify(response.parsed_response)
41
41
  end
42
42
 
43
43
  def raw(page, params = {})
44
- response = self.class.get(page, query: params, headers: headers, timeout: 60)
44
+ response = self.class.get(page, query: params, headers:, timeout: 60)
45
45
  limits_from_headers(response.headers)
46
46
  handle_dotloop_error(response.code) if response.code != 200
47
47
  response.parsed_response
@@ -11,7 +11,7 @@ module DotloopApi
11
11
  def initialize(client:, profile_id: nil, loop_id: nil)
12
12
  @profile_id = profile_id
13
13
  @loop_id = loop_id
14
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::Activity)
14
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::Activity)
15
15
  end
16
16
 
17
17
  def path
@@ -2,7 +2,7 @@ module DotloopApi
2
2
  module EndPoints
3
3
  class Contact < DotloopApi::EndPoints::Batch
4
4
  def initialize(client:)
5
- super(client: client, path: '/contact', type: DotloopApi::Models::Contact)
5
+ super(client:, path: '/contact', type: DotloopApi::Models::Contact)
6
6
  end
7
7
  end
8
8
  end
@@ -9,7 +9,7 @@ module DotloopApi
9
9
  def initialize(client:, profile_id: nil, loop_id: nil)
10
10
  @profile_id = profile_id
11
11
  @loop_id = loop_id
12
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::Detail)
12
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::Detail)
13
13
  end
14
14
 
15
15
  def find
@@ -9,7 +9,7 @@ module DotloopApi
9
9
  @profile_id = profile_id
10
10
  @loop_id = loop_id
11
11
  @folder_id = folder_id
12
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::Folder::Document)
12
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::Folder::Document)
13
13
  end
14
14
 
15
15
  def path
@@ -8,12 +8,12 @@ module DotloopApi
8
8
  def initialize(client:, profile_id: nil, loop_id: nil)
9
9
  @profile_id = profile_id
10
10
  @loop_id = loop_id
11
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::Folder)
11
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::Folder)
12
12
  end
13
13
 
14
14
  def all(options = {})
15
15
  options_to_params(options)
16
- @client.get(path, @params)[:data].map { |attrs| build_model(attrs) }
16
+ @client.get(path, **@params)[:data].map { |attrs| build_model(attrs) }
17
17
  end
18
18
 
19
19
  def path
@@ -7,7 +7,7 @@ module DotloopApi
7
7
 
8
8
  def initialize(client:, profile_id: nil)
9
9
  @profile_id = profile_id
10
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop)
10
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop)
11
11
  end
12
12
 
13
13
  def path
@@ -9,7 +9,7 @@ module DotloopApi
9
9
 
10
10
  def initialize(client:, profile_id: nil)
11
11
  @profile_id = profile_id
12
- super(client: client, path: path, type: DotloopApi::Models::Profile::LoopTemplate)
12
+ super(client:, path:, type: DotloopApi::Models::Profile::LoopTemplate)
13
13
  end
14
14
 
15
15
  def path
@@ -20,7 +20,7 @@ module DotloopApi
20
20
  batch_size: size,
21
21
  filter: filter_string,
22
22
  include_details: @include_details,
23
- sort: sort
23
+ sort:
24
24
  }.delete_if { |_, v| should_delete(v) }
25
25
  end
26
26
 
@@ -6,7 +6,7 @@ module DotloopApi
6
6
  def initialize(client:, profile_id: nil, loop_id: nil)
7
7
  @profile_id = profile_id
8
8
  @loop_id = loop_id
9
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::Participant)
9
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::Participant)
10
10
  end
11
11
 
12
12
  def path
@@ -3,7 +3,7 @@ module DotloopApi
3
3
  class Profile < DotloopApi::EndPoints::Base
4
4
  undef_method :delete
5
5
  def initialize(client:)
6
- super(client: client, path: '/profile', type: DotloopApi::Models::Profile)
6
+ super(client:, path: '/profile', type: DotloopApi::Models::Profile)
7
7
  end
8
8
  end
9
9
  end
@@ -11,7 +11,7 @@ module DotloopApi
11
11
  @profile_id = profile_id
12
12
  @loop_id = loop_id
13
13
  @task_list_id = task_list_id
14
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::TaskList::Task)
14
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::TaskList::Task)
15
15
  end
16
16
 
17
17
  def path
@@ -10,7 +10,7 @@ module DotloopApi
10
10
  def initialize(client:, profile_id: nil, loop_id: nil)
11
11
  @profile_id = profile_id
12
12
  @loop_id = loop_id
13
- super(client: client, path: path, type: DotloopApi::Models::Profile::Loop::TaskList)
13
+ super(client:, path:, type: DotloopApi::Models::Profile::Loop::TaskList)
14
14
  end
15
15
 
16
16
  def path
@@ -121,7 +121,7 @@ module DotloopApi
121
121
 
122
122
  def save
123
123
  DotloopApi::EndPoints::Detail.new(
124
- client: client, profile_id: profile_id, loop_id: loop_id
124
+ client:, profile_id:, loop_id:
125
125
  ).save(self)
126
126
  end
127
127
  end
@@ -13,7 +13,7 @@ module DotloopApi
13
13
 
14
14
  def download
15
15
  DotloopApi::EndPoints::Document.new(
16
- client: client, profile_id: profile_id, loop_id: loop_id, folder_id: folder_id
16
+ client:, profile_id:, loop_id:, folder_id:
17
17
  ).download(id: @id)
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ module DotloopApi
13
13
 
14
14
  def document_list
15
15
  @docuements = DotloopApi::EndPoints::Document.new(
16
- client: client, profile_id: profile_id, loop_id: loop_id, folder_id: id
16
+ client:, profile_id:, loop_id:, folder_id: id
17
17
  ).all
18
18
  end
19
19
  end
@@ -10,7 +10,7 @@ module DotloopApi
10
10
 
11
11
  def tasks
12
12
  DotloopApi::EndPoints::Task.new(
13
- client: client, profile_id: profile_id, loop_id: loop_id, task_list_id: id
13
+ client:, profile_id:, loop_id:, task_list_id: id
14
14
  ).all
15
15
  end
16
16
  end
@@ -28,29 +28,29 @@ module DotloopApi
28
28
  attr_accessor :client
29
29
 
30
30
  def activities
31
- DotloopApi::EndPoints::Activity.new(client: client, profile_id: profile_id, loop_id: id).all
31
+ DotloopApi::EndPoints::Activity.new(client:, profile_id:, loop_id: id).all
32
32
  end
33
33
 
34
34
  def detail
35
35
  @details = DotloopApi::EndPoints::Detail.new(
36
- client: client, profile_id: profile_id, loop_id: id
36
+ client:, profile_id:, loop_id: id
37
37
  ).find
38
38
  end
39
39
 
40
40
  def folders(options = {})
41
41
  DotloopApi::EndPoints::Folder.new(
42
- client: client, profile_id: profile_id, loop_id: id
42
+ client:, profile_id:, loop_id: id
43
43
  ).all(options)
44
44
  end
45
45
 
46
46
  def participants
47
47
  @all_participants = DotloopApi::EndPoints::Participant.new(
48
- client: client, profile_id: profile_id, loop_id: id
48
+ client:, profile_id:, loop_id: id
49
49
  ).all
50
50
  end
51
51
 
52
52
  def task_lists
53
- DotloopApi::EndPoints::TaskList.new(client: client, profile_id: profile_id, loop_id: id).all
53
+ DotloopApi::EndPoints::TaskList.new(client:, profile_id:, loop_id: id).all
54
54
  end
55
55
  end
56
56
  end
@@ -3,32 +3,32 @@ module DotloopApi
3
3
  class Profile
4
4
  # define nested classes first for dependency resolution
5
5
  class Loop
6
- class Activity; end
6
+ class Activity; end # rubocop:disable Lint/EmptyClass
7
7
 
8
8
  class Detail
9
- class ContractDates; end
10
- class ContractInfo; end
11
- class Financials; end
12
- class GeographicDescription; end
13
- class ListingInformation; end
14
- class OfferDates; end
15
- class Property; end
16
- class PropertyAddress; end
17
- class Referral; end
9
+ class ContractDates; end # rubocop:disable Lint/EmptyClass
10
+ class ContractInfo; end # rubocop:disable Lint/EmptyClass
11
+ class Financials; end # rubocop:disable Lint/EmptyClass
12
+ class GeographicDescription; end # rubocop:disable Lint/EmptyClass
13
+ class ListingInformation; end # rubocop:disable Lint/EmptyClass
14
+ class OfferDates; end # rubocop:disable Lint/EmptyClass
15
+ class Property; end # rubocop:disable Lint/EmptyClass
16
+ class PropertyAddress; end # rubocop:disable Lint/EmptyClass
17
+ class Referral; end # rubocop:disable Lint/EmptyClass
18
18
  end
19
19
 
20
20
  class Folder
21
- class Document; end
21
+ class Document; end # rubocop:disable Lint/EmptyClass
22
22
  end
23
23
 
24
24
  class Participant < ::DotloopApi::Models::Contact; end
25
25
 
26
26
  class TaskList
27
- class Task; end
27
+ class Task; end # rubocop:disable Lint/EmptyClass
28
28
  end
29
29
  end
30
30
 
31
- class LoopTemplate; end
31
+ class LoopTemplate; end # rubocop:disable Lint/EmptyClass
32
32
 
33
33
  PROFILE_TYPES = %w[ASSOCIATION COMPANY INDIVIDUAL NATIONAL_PARTNER OFFICE TEAM].freeze
34
34
  include Virtus.model
@@ -51,17 +51,17 @@ module DotloopApi
51
51
  end
52
52
 
53
53
  def loop(id)
54
- loop_endpoint.find(id: id)
54
+ loop_endpoint.find(id:)
55
55
  end
56
56
 
57
57
  def loop_templates
58
- DotloopApi::EndPoints::LoopTemplate.new(client: client, profile_id: id).all
58
+ DotloopApi::EndPoints::LoopTemplate.new(client:, profile_id: id).all
59
59
  end
60
60
 
61
61
  private
62
62
 
63
63
  def loop_endpoint
64
- DotloopApi::EndPoints::Loop.new(client: client, profile_id: id)
64
+ DotloopApi::EndPoints::Loop.new(client:, profile_id: id)
65
65
  end
66
66
  end
67
67
  end
@@ -1,3 +1,3 @@
1
1
  module DotloopApi
2
- VERSION = '3.0.0'.freeze
2
+ VERSION = '3.0.1'.freeze
3
3
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotloop_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loft47
@@ -34,7 +34,7 @@ cert_chain:
34
34
  UyzDcZlUIYsg0YEfJoAEA8+i0f7YdJoCNefHMv0cfBZ7fb1+QVd+CZMW0MjdOpMR
35
35
  BGRKAowqGARaXExDn/ww/1javLv4ss7RKZOw7Q==
36
36
  -----END CERTIFICATE-----
37
- date: 2023-07-24 00:00:00.000000000 Z
37
+ date: 2023-10-02 00:00:00.000000000 Z
38
38
  dependencies:
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: activesupport
@@ -92,132 +92,6 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '1.0'
95
- - !ruby/object:Gem::Dependency
96
- name: bundler
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '2'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '2'
109
- - !ruby/object:Gem::Dependency
110
- name: coveralls_reborn
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: 0.25.0
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: 0.25.0
123
- - !ruby/object:Gem::Dependency
124
- name: pry
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '0.14'
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '0.14'
137
- - !ruby/object:Gem::Dependency
138
- name: rake
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '13'
144
- type: :development
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
149
- - !ruby/object:Gem::Version
150
- version: '13'
151
- - !ruby/object:Gem::Dependency
152
- name: rspec
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: '3'
158
- type: :development
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: '3'
165
- - !ruby/object:Gem::Dependency
166
- name: rubocop
167
- requirement: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: '1'
172
- type: :development
173
- prerelease: false
174
- version_requirements: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - "~>"
177
- - !ruby/object:Gem::Version
178
- version: '1'
179
- - !ruby/object:Gem::Dependency
180
- name: simplecov
181
- requirement: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - "~>"
184
- - !ruby/object:Gem::Version
185
- version: '0.21'
186
- type: :development
187
- prerelease: false
188
- version_requirements: !ruby/object:Gem::Requirement
189
- requirements:
190
- - - "~>"
191
- - !ruby/object:Gem::Version
192
- version: '0.21'
193
- - !ruby/object:Gem::Dependency
194
- name: travis
195
- requirement: !ruby/object:Gem::Requirement
196
- requirements:
197
- - - "~>"
198
- - !ruby/object:Gem::Version
199
- version: '1.8'
200
- type: :development
201
- prerelease: false
202
- version_requirements: !ruby/object:Gem::Requirement
203
- requirements:
204
- - - "~>"
205
- - !ruby/object:Gem::Version
206
- version: '1.8'
207
- - !ruby/object:Gem::Dependency
208
- name: webmock
209
- requirement: !ruby/object:Gem::Requirement
210
- requirements:
211
- - - "~>"
212
- - !ruby/object:Gem::Version
213
- version: '3'
214
- type: :development
215
- prerelease: false
216
- version_requirements: !ruby/object:Gem::Requirement
217
- requirements:
218
- - - "~>"
219
- - !ruby/object:Gem::Version
220
- version: '3'
221
95
  description: Ruby library for Dotloop API V2.
222
96
  email:
223
97
  - support@loft47.com
@@ -278,6 +152,7 @@ licenses:
278
152
  - MIT
279
153
  metadata:
280
154
  allowed_push_host: https://rubygems.org
155
+ rubygems_mfa_required: 'true'
281
156
  post_install_message:
282
157
  rdoc_options: []
283
158
  require_paths:
metadata.gz.sig CHANGED
Binary file