class Biro::CredDefense::Response

Public Class Methods

new(response) click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 6
def initialize(response)
  @body = response.body
end

Public Instance Methods

addresses() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 69
def addresses
  data.fetch('dmlistaenderecos', nil).map do |a|
    parts =  a['nologradouro'].split('-')
    street = parts[0]&.split[0..-2].join(' ')
    number = parts[0]&.split&.pop
    city_parts = a['cdibgemunicipio']&.split('/')
    city = city_parts && city_parts[0]
    state = city_parts && city_parts[1]


    {
      street: street,
      number: number,
      complement: parts[1]&.strip,
      city: city,
      state: state,
      zipcode: a['nrcep']
    }
  end
end
birthdate() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 14
def birthdate
  text('dtnascimento')
end
cpf() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 10
def cpf
  text('nrcpf').gsub(/\D/, '')
end
emails() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 34
def emails
  email = text('noemail')
  Array.wrap(email)
end
equities() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 47
def equities
  data.dig('dmlistaparticipacaosocietaria')&.map do |e|
    cpf = e.dig('nrdocumentosocio')&.gsub(/\D/, '')
    cnpj = e.dig('nrcnpj')&.gsub(/\D/, '')
    name = e.dig('nosocio')&.strip
    company = e.dig('norazaosocial')&.strip
    shares = e.dig('qtpercentualcapitalsocial')
    position = e.dig('noqualificacaosocio')&.strip
    since = e.dig('dtentradasociedade')&.strip

    {
      cpf: cpf,
      cnpj: cnpj,
      name: name,
      company: company,
      shares: shares,
      position: position,
      since: since,
    }
  end
end
error() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 110
def error
  if json['result'] == 'error'
    json['messages']&.first
  end
end
income() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 26
def income
  text('nrrenda')
end
mothers_name() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 18
def mothers_name
  text('nomae')
end
name() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 22
def name
  text('nopessoa')
end
phones() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 90
def phones
  data.fetch('dmlistatelefones', nil).map do |p|
    parts = p['nrtelefone']&.split(' ')
    ddd = parts&.fetch(0, nil)&.gsub(/\D/, '')
    number = parts&.fetch(1)
    kind = (number.to_s[0] == '9' ? :mobile : :landline) if number

    {
      ddd: ddd,
      number: number,
      kind: kind
    }
  end

end
profession() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 30
def profession
  text('nrcbo')
end
receita_federal() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 39
def receita_federal
  rf = data.dig('dmcomprovantereceita')&.first

  return nil unless rf

  { name: rf.dig('nopessoa'), status: rf.dig('nosituacao'), date: rf.dig('dhprocessamento'), death: text('boobito') }
end
success?() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 106
def success?
  error.blank?
end

Private Instance Methods

data() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 122
def data
  json.dig('advancedsearch')
end
json() click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 126
def json
  JSON.parse(@body)
end
text(field) click to toggle source
# File lib/biro/gateways/cred_defense/response.rb, line 118
def text(field)
  data.dig('dmlistapessoafisica', field).strip
end