zaig 1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 30513348586e4a10175c951a36ef1ccadce659a39297cb48126d0d9ff12e7273
4
+ data.tar.gz: 92392c3685c0ef19300d596dd366e2be4db979fad0ac90011df0631d4c0762cb
5
+ SHA512:
6
+ metadata.gz: 202bc4d5ed18dd3bf5fb64c287a7964221ade5f56cfd009b23284011da45143c84e5f8700c37bd0e3126cc4a96c272deb629fd46af8e75ae0fcafd3604ef5de8
7
+ data.tar.gz: eca0bb1e343286657059cf407076bd15e1a32a08bf5ff6e693ac713c95fde29fa0501ac0b56f6f29d6f2aafcf1dbd875106379fc26be9d8c0dbd4f9c73d649bd
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env rake
2
+ # frozen_string_literal: true
3
+
4
+ begin
5
+ require "bundler/setup"
6
+ rescue LoadError
7
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
8
+ end
9
+
10
+ Bundler::GemHelper.install_tasks
11
+
12
+ begin
13
+ require "rake/testtask"
14
+ require "rubocop/rake_task"
15
+
16
+ RuboCop::RakeTask.new(:rubocop) do |t|
17
+ t.options = ["--display-cop-names"]
18
+ end
19
+ rescue LoadError
20
+ # no rspec available
21
+ end
22
+
23
+ begin
24
+ require "rspec/core/rake_task"
25
+
26
+ RSpec::Core::RakeTask.new(:spec)
27
+ rescue LoadError
28
+ # no rspec available
29
+ end
30
+
31
+ task default: %i[rubocop spec]
@@ -0,0 +1,5 @@
1
+ api:
2
+ base_url: https://integra-o-zaig.dev.qflash.com.br
3
+ endpoints:
4
+ inquiry:
5
+ credit: zaig/consulta_de_credito
@@ -0,0 +1,5 @@
1
+ api:
2
+ base_url: https://integra-o-zaig.prod.qflash.com.br/
3
+ endpoints:
4
+ inquiry:
5
+ credit: zaig/consulta_de_credito
@@ -0,0 +1,6 @@
1
+ en:
2
+ name: Zaig
3
+ zaig:
4
+ errors:
5
+ field_not_found: Field not found in the server response '{field_name}'
6
+ unexpected_error: Integration returned an unexpected status code
@@ -0,0 +1,6 @@
1
+ :'pt-BR':
2
+ name: Zaig
3
+ zaig:
4
+ errors:
5
+ field_not_found: Campo não encontrado na resposta do servidor '{field_name}'
6
+ unexpected_error: Integração retornou um estado inesperado
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class AlreadyExistsError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ # Default library error
5
+ class BaseError < StandardError
6
+ def initialize(message = self.class.default_message)
7
+ super
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ # Class to instance a authenticated connection object.
5
+ class Connection < Flash::Integration::Connection
6
+ def initialize(request_class: Faraday, base_url: Zaig.configuration.base_url, access_token: Zaig.configuration.access_token)
7
+ @access_token = access_token
8
+
9
+ super(request_class: request_class, base_url: base_url)
10
+ end
11
+
12
+ def default_headers
13
+ {
14
+ "Content-Type": "application/json",
15
+ Accept: "application/json",
16
+ "x-api-key": @access_token
17
+ }
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Address
4
+ attr_accessor :city, :complement, :country, :neighborhood, :number, :postal_code,
5
+ :street, :uf
6
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Company
4
+ attr_accessor :address, :client_category, :constitution_date, :constitution_type,
5
+ :document_number, :email, :financial, :guarantors,
6
+ :id, :legal_name, :monthly_revenue, :phones, :shareholders, :source,
7
+ :scr_parameters, :trading_name, :warrants
8
+
9
+ enum client_category: { cedente: 0, sacado: 1 }
10
+
11
+ enum constitution_type: { llc: 0, corp: 1 }
12
+
13
+ enum credit_type: { clean: 0, credit_card_limit: 1, student_loan: 2 }
14
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Phone
4
+ attr_accessor :area_code, :international_dial_code, :number, :type
5
+
6
+ enum type: { commercial: 0, mobile: 1, residential: 2 }
7
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ module Entities
5
+ # Class to create registration response objects.
6
+ class Response
7
+ attr_reader :analysis_status, :credit_proposal_legal_person_key, :message,
8
+ :raw_data, :reason, :request, :status_code, :zaig_id
9
+
10
+ def initialize(analysis_status: nil, credit_proposal_legal_person_key: nil, message: nil,
11
+ raw_data: nil, reason: nil, request: nil, status_code: nil, zaig_id: nil)
12
+ @analysis_status = analysis_status
13
+ @credit_proposal_legal_person_key = credit_proposal_legal_person_key
14
+ @message = message
15
+ @raw_data = raw_data
16
+ @reason = reason
17
+ @request = request
18
+ @status_code = status_code
19
+ @zaig_id = zaig_id
20
+ end
21
+
22
+ def approved?
23
+ analysis_status == "automatically_approved"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shareholder
4
+ attr_accessor :address, :birthdate, :declared_assets, :document_number, :email, :fathername, :gender,
5
+ :mothername, :monthly_income, :name, :nationality, :occupation, :phone
6
+
7
+ enum gender: { male: 0, female: 1, undefined: 2 }
8
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class ExternalTimeoutError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class FieldValidationError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "singleton"
4
+
5
+ module Zaig
6
+ # Class to request a registration to the remote server.
7
+ class Registration
8
+ attr_reader :connection
9
+
10
+ include Singleton
11
+
12
+ def initialize(connection: Zaig::Connection.new, registration_payload: Zaig::RegistrationPayload.instance)
13
+ @connection = connection
14
+ @registration_payload = registration_payload
15
+ end
16
+
17
+ def call(obj)
18
+ endpoint = Zaig.configuration.defaults.api.endpoints.inquiry.credit.freeze
19
+ payload = @registration_payload.call(obj)
20
+ res = @connection.post(url: endpoint, body: payload.to_json)
21
+
22
+ verify_response(res)
23
+
24
+ # Lets parse the clueless response
25
+ parsed_res = JSON.parse(res.body, symbolize_names: true)
26
+ res_zaig = parsed_res[:resposta_zaig]
27
+
28
+ ::Zaig::Entities::Response.new(
29
+ analysis_status: res_zaig[:analysis_status],
30
+ credit_proposal_legal_person_key: res_zaig[:credit_proposal_legal_person_key],
31
+ message: parsed_res[:msg],
32
+ raw_data: res.body,
33
+ reason: res_zaig[:reason],
34
+ request: res,
35
+ status_code: res.status,
36
+ zaig_id: res_zaig[:id]
37
+ )
38
+ end
39
+
40
+ private
41
+ def verify_response(res)
42
+ return if res.status.between?(200, 299)
43
+
44
+ raise ::Zaig::UnexpectedError, I18n.t("zaig.errors.unexpected_error") if res.status != 500
45
+
46
+ parsed_res = JSON.parse(res.body, symbolize_names: true)
47
+
48
+ raise ::Zaig::ServerError, I18n.t("zaig.errors.field_not_found", field_name: "resposta_zaig") unless parsed_res.key?(:resposta_zaig)
49
+
50
+ zaig_msg = parsed_res[:resposta_zaig][:msg]
51
+ zaig_http_status = parsed_res[:resposta_zaig][:status]
52
+
53
+ raise_error_by_zaig_status(zaig_msg, zaig_http_status)
54
+ end
55
+
56
+ def raise_error_by_zaig_status(msg, status)
57
+ case status
58
+ when 209
59
+ raise ::Zaig::AlreadyExistsError, msg
60
+ when 400
61
+ raise ::Zaig::FieldValidationError, msg
62
+ when 408
63
+ raise ::Zaig::ExternalTimeoutError, msg
64
+ when 422
65
+ raise ::Zaig::UnprocessableEntityError, msg
66
+ else
67
+ raise ::Zaig::UnexpectedError, msg
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "singleton"
4
+
5
+ module Zaig
6
+ # Service class to build a registration payload request.
7
+ class RegistrationPayload
8
+ include Singleton
9
+
10
+ def call(obj)
11
+ {
12
+ address: build_address(obj["address"]),
13
+ client_category: obj["client_category"],
14
+ constitution_date: obj["constitution_date"],
15
+ constitution_type: obj["constitution_type"],
16
+ credit_request_date: obj["credit_request_date"],
17
+ credit_type: obj["credit_type"] || "clean",
18
+ document_number: CNPJ.new(obj["document_number"]).number,
19
+ email: obj["email"],
20
+ financial: obj.key?("financial") ? build_financial(obj["financial"]) : nil,
21
+ guarantors: obj.key?("guarantors") ? build_shareholders(obj["guarantors"]) : nil,
22
+ id: obj["id"],
23
+ legal_name: obj["legal_name"],
24
+ monthly_revenue: obj["monthly_revenue"].to_f,
25
+ phones: build_phones(obj["phones"]),
26
+ shareholders: build_shareholders(obj["shareholders"]),
27
+ source: build_source(obj["source"]),
28
+ scr_parameters: build_scr_parameters(obj["scr_parameters"]),
29
+ trading_name: obj["trading_name"],
30
+ warrants: build_warrants(obj["warrants"])
31
+ }
32
+ end
33
+
34
+ private
35
+ def build_address(obj_address)
36
+ {
37
+ city: obj_address["city"],
38
+ complement: obj_address["complement"] || "",
39
+ country: obj_address["country"] || "BRA",
40
+ neighborhood: obj_address["neighborhood"],
41
+ number: obj_address["number"],
42
+ postal_code: obj_address["postal_code"],
43
+ street: obj_address["street"],
44
+ uf: obj_address["uf"]
45
+ }
46
+ end
47
+
48
+ def build_phone(obj)
49
+ {
50
+ area_code: obj["area_code"],
51
+ international_dial_code: obj["international_dial_code"],
52
+ number: obj["number"],
53
+ type: obj["type"]
54
+ }
55
+ end
56
+
57
+ def build_phones(obj_phones)
58
+ phones = []
59
+
60
+ obj_phones.each { |p| phones << build_phone(p) }
61
+
62
+ phones
63
+ end
64
+
65
+ def build_shareholders(obj_shareholders)
66
+ shareholders = []
67
+
68
+ obj_shareholders.each do |s|
69
+ shareholders << {
70
+ address: build_address(s["address"]),
71
+ birthdate: Date.parse(s["birthdate"]).to_s,
72
+ declared_assets: s["declared_assets"],
73
+ document_number: CPF.new(s["document_number"]).number,
74
+ email: s["email"],
75
+ father_name: s["father_name"],
76
+ gender: s["gender"],
77
+ monthly_income: s["monthly_income"].to_f,
78
+ mother_name: s["mother_name"],
79
+ name: s["name"],
80
+ nationality: s["nationality"],
81
+ occupation: s["occupation"],
82
+ phones: build_phones(s["phones"])
83
+ }
84
+ end
85
+ shareholders
86
+ end
87
+
88
+ def build_financial(fin)
89
+ {
90
+ amount: fin["amount"],
91
+ annual_interest_rate: fin["annual_interest_rate"],
92
+ cdi_percentage: fin["cdi_percentage"],
93
+ currency: fin["currency"] || "BRL",
94
+ interest_type: fin["interest_type"],
95
+ number_of_installments: fin.key?("number_of_installments") ? fin["number_of_installments"].to_i : 0
96
+ }
97
+ end
98
+
99
+ def build_warrants(obj_warrants)
100
+ warrants = []
101
+
102
+ obj_warrants.each do |w|
103
+ warrants << {
104
+ warrant_type: w["warrant_type"],
105
+ address: build_address(w["address"]),
106
+ property_type: w["property_type"],
107
+ estimated_value: w["estimated_value"],
108
+ forced_selling_value: w["forced_selling_value"]
109
+ }
110
+ end
111
+ warrants
112
+ end
113
+
114
+ def build_source(obj_source)
115
+ {
116
+ channel: obj_source["channel"],
117
+ ip: obj_source["ip"],
118
+ session_id: obj_source["session_id"]
119
+ }
120
+ end
121
+
122
+ def build_scr_parameters(obj_src)
123
+ {
124
+ signers: build_signers(obj_src["signers"]),
125
+ signature_evidence: {
126
+ access_token: obj_src["signature_evidence"]["access_token"],
127
+ additional_data: obj_src["signature_evidence"]["additional_data"],
128
+ ip_address: obj_src["signature_evidence"]["ip_address"],
129
+ session_id: obj_src["signature_evidence"]["session_id"],
130
+ signed_term: {
131
+ raw_text: obj_src["signature_evidence"]["signed_term"]["raw_text"]
132
+ }
133
+ }
134
+ }
135
+ end
136
+
137
+ def build_signers(obj_signers)
138
+ signers = []
139
+ obj_signers.each do |s|
140
+ signers << {
141
+ document_number: CNPJ.new(s["document_number"]).number,
142
+ name: s["name"],
143
+ email: s["email"],
144
+ phone: build_phone(s["phone"])
145
+ }
146
+ end
147
+ signers
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class ServerError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class ServerTimeoutError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class UnexpectedError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class UnprocessableEntityError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ class ValidationError < BaseError
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zaig
4
+ # When updating version, keep in mind Semantic Versioning http://semver.org/
5
+ # TL;DR; (Major.Minor.Patch)
6
+ # Releases before 1.0.0 are in active development and can change anytime
7
+ # 1.0.0 and up is indication and declaration of a stable public API
8
+ # Major - Incremented for incompatible changes with previous release (or big enough new features)
9
+ # Minor - Incremented for new backwards-compatible features + deprecations
10
+ # Patch - Incremented for backwards-compatible bug fixes
11
+ VERSION = "1.0.0"
12
+ end
data/lib/zaig.rb ADDED
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "confset"
4
+ require "cpf_cnpj"
5
+ require "flash_integration"
6
+ require "i18n"
7
+
8
+ require "zaig/base_error"
9
+ require "zaig/already_exists_error"
10
+ require "zaig/external_timeout_error"
11
+ require "zaig/field_validation_error"
12
+ require "zaig/server_error"
13
+ require "zaig/server_timeout_error"
14
+ require "zaig/unexpected_error"
15
+ require "zaig/unprocessable_entity_error"
16
+ require "zaig/validation_error"
17
+
18
+ require "zaig/entities/response"
19
+
20
+ require "zaig/registration_payload"
21
+ require "zaig/connection"
22
+ require "zaig/registration"
23
+ require "zaig/version"
24
+
25
+ I18n.load_path += Dir[File.join(__dir__, "locales", "**/*.yml")]
26
+ I18n.reload! if I18n.backend.initialized?
27
+
28
+ # Zaig integration module
29
+ module Zaig
30
+ # rubocop:disable ThreadSafety/ClassAndModuleAttributes
31
+ # rubocop:disable ThreadSafety/InstanceVariableInClassMethod
32
+ class << self
33
+ attr_writer :configuration
34
+
35
+ def configuration
36
+ @configuration ||= Configuration.new
37
+ end
38
+ end
39
+
40
+ def self.configure
41
+ self.configuration ||= Configuration.new
42
+
43
+ yield(configuration)
44
+ end
45
+
46
+ # rubocop:enable ThreadSafety/ClassAndModuleAttributes
47
+ # rubocop:enable ThreadSafety/InstanceVariableInClassMethod
48
+
49
+ # Basic configuration settings
50
+ class Configuration
51
+ attr_accessor :access_token, :base_url, :env
52
+ attr_reader :defaults
53
+
54
+ def initialize
55
+ @env = "development"
56
+
57
+ load_defaults
58
+ end
59
+
60
+ def load_defaults
61
+ @defaults = Confset.load_files("lib/config/settings/#{@env}.yml")
62
+ @base_url = @defaults.api.base_url
63
+ end
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,344 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zaig
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Danilo Carolino
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-07-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: confset
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: cpf_cnpj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: flash_integration
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: singleton
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.3'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 2.3.0
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '2.3'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 2.3.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: factory_bot
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '6.2'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '6.2'
103
+ - !ruby/object:Gem::Dependency
104
+ name: pry
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.14.1
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 0.14.1
117
+ - !ruby/object:Gem::Dependency
118
+ name: rake
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 13.0.6
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 10.0.0
127
+ type: :development
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 13.0.6
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 10.0.0
137
+ - !ruby/object:Gem::Dependency
138
+ name: rspec
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: 3.11.0
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: 3.11.0
151
+ - !ruby/object:Gem::Dependency
152
+ name: rubocop
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: 1.31.1
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: 1.31.1
165
+ - !ruby/object:Gem::Dependency
166
+ name: rubocop-faker
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: rubocop-i18n
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rubocop-packaging
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rubocop-performance
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rubocop-rspec
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: rubocop-thread_safety
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: simplecov
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - "~>"
254
+ - !ruby/object:Gem::Version
255
+ version: 0.21.2
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - "~>"
261
+ - !ruby/object:Gem::Version
262
+ version: 0.21.2
263
+ - !ruby/object:Gem::Dependency
264
+ name: simplecov-json
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - "~>"
268
+ - !ruby/object:Gem::Version
269
+ version: 0.2.3
270
+ type: :development
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - "~>"
275
+ - !ruby/object:Gem::Version
276
+ version: 0.2.3
277
+ - !ruby/object:Gem::Dependency
278
+ name: webmock
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - "~>"
282
+ - !ruby/object:Gem::Version
283
+ version: 3.14.0
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - "~>"
289
+ - !ruby/object:Gem::Version
290
+ version: 3.14.0
291
+ description: SDK to consume the Zaig services
292
+ email: danilo.carolino@qflash.com.br
293
+ executables: []
294
+ extensions: []
295
+ extra_rdoc_files: []
296
+ files:
297
+ - Rakefile
298
+ - lib/config/settings/development.yml
299
+ - lib/config/settings/production.yml
300
+ - lib/locales/en.yml
301
+ - lib/locales/pt-BR.yml
302
+ - lib/zaig.rb
303
+ - lib/zaig/already_exists_error.rb
304
+ - lib/zaig/base_error.rb
305
+ - lib/zaig/connection.rb
306
+ - lib/zaig/entities/address.rb
307
+ - lib/zaig/entities/company.rb
308
+ - lib/zaig/entities/phone.rb
309
+ - lib/zaig/entities/response.rb
310
+ - lib/zaig/entities/shareholder.rb
311
+ - lib/zaig/external_timeout_error.rb
312
+ - lib/zaig/field_validation_error.rb
313
+ - lib/zaig/registration.rb
314
+ - lib/zaig/registration_payload.rb
315
+ - lib/zaig/server_error.rb
316
+ - lib/zaig/server_timeout_error.rb
317
+ - lib/zaig/unexpected_error.rb
318
+ - lib/zaig/unprocessable_entity_error.rb
319
+ - lib/zaig/validation_error.rb
320
+ - lib/zaig/version.rb
321
+ homepage:
322
+ licenses: []
323
+ metadata:
324
+ rubygems_mfa_required: 'true'
325
+ post_install_message:
326
+ rdoc_options: []
327
+ require_paths:
328
+ - lib
329
+ required_ruby_version: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - ">="
332
+ - !ruby/object:Gem::Version
333
+ version: '2.7'
334
+ required_rubygems_version: !ruby/object:Gem::Requirement
335
+ requirements:
336
+ - - ">="
337
+ - !ruby/object:Gem::Version
338
+ version: '0'
339
+ requirements: []
340
+ rubygems_version: 3.1.6
341
+ signing_key:
342
+ specification_version: 4
343
+ summary: Zaig SDK
344
+ test_files: []