class ViaCep::Address
Attributes
zipcode[R]
Public Class Methods
new(zipcode)
click to toggle source
Initialize an instance of ViaCep::Address
and retrieve the CEP using the ViaCep
WS API.
Retrieve a zipcode
ViaCep::Address.new('01001000') #=> #<ViaCep::Address:0x0000558da60b3770 @zipcode="01001-000", @street="Praca da Se", @complement="lado impar", @neighborhood="Se", @city="Sao Paulo", @state="SP", @ibge="3550308", @gia="1004", @error=nil>
Retrieve a zipcode with a formatted string
ViaCep::Address.new('01001-000') #=> #<ViaCep::Address:0x000055e5429aef98 @zipcode="01001-000", @street="Praca da Se", @complement="lado impar", @neighborhood="Se", @city="Sao Paulo", @state="SP", @ibge="3550308", @gia="1004", @error=nil>
raise [ArgumentError] Error raised when zipcode is nil. raise [ViaCep::Errors::InvalidZipcodeFormat] Errorraised when zipcode format is invalid. raise [ViaCep::Errors::ZipcodeNotFound] Error raised when the external API is down or the CEP does not exist.
return [ViaCep::Address]
# File lib/via_cep/address.rb, line 28 def initialize(zipcode) @zipcode = zipcode valid? call_service rescue JSON::ParserError, Net::HTTPBadRequest raise ViaCep::Errors::ZipcodeNotFound end
Private Instance Methods
call_service()
click to toggle source
# File lib/via_cep/address.rb, line 38 def call_service response = JSON.parse(ViaCep::HTTP.get(path: zipcode).body) raise ViaCep::Errors::ZipcodeNotFound if response['erro'] define_attributes(response) end
valid?()
click to toggle source
# File lib/via_cep/address.rb, line 45 def valid? raise ViaCep::Errors::InvalidZipcodeFormat unless ViaCep::Validators::Zipcode.valid?(zipcode) end