Sha256: cbe20919b5c2c0755690d4767c85b3aca620b137950ef8459762b4253d2e2a69

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

require 'net/https'
require 'uri'

module Correios
  module CEP
    class WebService
      URL = "https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente"

      def initialize
        @uri = URI.parse(URL)
      end

      def request!(zipcode)
        http = build_http

        request = build_request zipcode
        Correios::CEP.log_request request, @uri.to_s

        response = http.request request
        Correios::CEP.log_response response

        response.body
      end

      private

      def build_http
        http = Net::HTTP.new(@uri.host, @uri.port)
        http.open_timeout = Correios::CEP.request_timeout
        http.use_ssl = true
        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
        http
      end

      def build_request(zipcode)
        request = Net::HTTP::Post.new(@uri.path)
        request["Content-Type"] = "text/xml; charset=utf-8"
        request.body = request_body zipcode
        request
      end

      def request_body(zipcode)
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
        "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cli=\"http://cliente.bean.master.sigep.bsb.correios.com.br/\">" +
           "<soapenv:Header />" +
           "<soapenv:Body>" +
              "<cli:consultaCEP>" +
                "<cep>#{zipcode}</cep>" +
              "</cli:consultaCEP>" +
           "</soapenv:Body>" +
        "</soapenv:Envelope>"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
correios-cep-0.3.1 lib/correios/cep/web_service.rb
correios-cep-0.3.0 lib/correios/cep/web_service.rb