brcep 3.0.8 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/brcep/busca_endereco.rb +25 -55
- data/lib/brcep/version.rb +2 -2
- data/test/busca_endereco_test.rb +35 -125
- data/test/test_helper.rb +0 -1
- metadata +42 -70
- data/test/mocks/zip_04006000_bronze_business.xml +0 -33
- data/test/mocks/zip_20230024_buscar_cep.xml +0 -2
- data/test/mocks/zip_22640100.xml +0 -33
- data/test/mocks/zip_22640100_bronze_business.xml +0 -33
- data/test/mocks/zip_22640100_buscar_cep.xml +0 -12
- data/test/mocks/zip_invalid.xml +0 -23
- data/test/mocks/zip_not_found_bronze_business.xml +0 -23
- data/test/mocks/zip_not_found_buscar_cep.xml +0 -2
data/lib/brcep/busca_endereco.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'net/http'
|
3
|
-
require '
|
3
|
+
require 'cgi'
|
4
|
+
require 'iconv'
|
4
5
|
|
5
6
|
# Este recurso tem como finalidade encontrar um endereço através de um CEP, e
|
6
|
-
# para isso ele utiliza o web service da
|
7
|
-
# e o web service do Buscar CEP (http://www.buscarcep.com.br). O segundo só é utilizado quando
|
8
|
-
# o primeiro está indisponível ou quando ele não encontra o endereço associado ao CEP informado.
|
7
|
+
# para isso ele utiliza o web service da Republica Virtual (http://cep.republicavirtual.com.br/web_cep.php)
|
9
8
|
# Obviamente, para utilizar este serviço é necessário uma conexão com a Internet.
|
10
9
|
#
|
11
10
|
#Como fazer a busca de endereço por cep?
|
12
11
|
#
|
13
|
-
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das
|
14
|
-
# BuscaEndereco.por_cep('22640100') ==> ['Avenida', 'das
|
15
|
-
# BuscaEndereco.por_cep('22640-100') ==> ['Avenida', 'das
|
16
|
-
# BuscaEndereco.por_cep('22.640-100') ==> ['Avenida', 'das
|
12
|
+
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das Américas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
13
|
+
# BuscaEndereco.por_cep('22640100') ==> ['Avenida', 'das Américas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
14
|
+
# BuscaEndereco.por_cep('22640-100') ==> ['Avenida', 'das Américas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
15
|
+
# BuscaEndereco.por_cep('22.640-100') ==> ['Avenida', 'das Américas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
17
16
|
# BuscaEndereco.por_cep('04006000') ==> ["Rua", "Doutor Tomaz Carvalhal", "Paraiso", "SP", "Sao Paulo", "04006000"]
|
18
17
|
#
|
19
18
|
# É feita uma validação para ver se o cep possui 8 caracteres após a remoção de '.' e '-'.
|
@@ -45,59 +44,30 @@ class BuscaEndereco
|
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
48
|
-
|
49
|
-
URL_WEB_SERVICE_BUSCAR_CEP = 'http://www.buscarcep.com.br/?cep=' #:nodoc:
|
50
|
-
|
51
|
-
# Elementos do XML retornado pelos web services
|
52
|
-
ELEMENTOS_XML_BRONZE_BUSINESS = %w(logradouro nome bairro UF cidade) #:nodoc:
|
53
|
-
ELEMENTOS_XML_BUSCAR_CEP = %w(tipo_logradouro logradouro bairro uf cidade) #:nodoc:
|
47
|
+
WEB_SERVICE_REPUBLICA_VIRTUAL_URL = "http://cep.republicavirtual.com.br/web_cep.php?formato=query_string&cep="
|
54
48
|
|
55
49
|
# Retorna um array com os dados de endereçamento para o cep informado ou um erro quando o serviço está indisponível,
|
56
50
|
# quando o cep informado possui um formato inválido ou quando o endereço não foi encontrado.
|
57
51
|
#
|
58
52
|
# Exemplo:
|
59
|
-
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das
|
53
|
+
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das Américas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
60
54
|
def self.por_cep(numero)
|
61
|
-
|
62
|
-
raise "O CEP informado possui um formato inválido."
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
private
|
76
|
-
|
77
|
-
def self.usar_web_service_da_bronze_business
|
78
|
-
@@response = Net::HTTP.Proxy(self.proxy_addr, self.proxy_port).get_response(URI.parse("#{URL_WEB_SERVICE_BRONZE_BUSINESS}#{@@cep}"))
|
79
|
-
raise "A busca de endereço por CEP através do web service da Bronze Business está indisponível." unless @@response.kind_of?(Net::HTTPSuccess)
|
80
|
-
|
81
|
-
@@doc = REXML::Document.new(@@response.body)
|
82
|
-
processar_xml ELEMENTOS_XML_BRONZE_BUSINESS
|
83
|
-
end
|
84
|
-
|
85
|
-
def self.usar_web_service_do_buscar_cep
|
86
|
-
@@response = Net::HTTP.Proxy(self.proxy_addr, self.proxy_port).get_response(URI.parse("#{URL_WEB_SERVICE_BUSCAR_CEP}#{@@cep}&formato=xml"))
|
87
|
-
raise "A busca de endereço por CEP está indisponível no momento." unless @@response.kind_of?(Net::HTTPSuccess)
|
88
|
-
|
89
|
-
@@doc = REXML::Document.new(@@response.body)
|
90
|
-
processar_xml ELEMENTOS_XML_BUSCAR_CEP
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.processar_xml(elementos_do_xml)
|
94
|
-
elementos_do_xml.each do |e|
|
95
|
-
elemento = REXML::XPath.match(@@doc, "//#{e}").first
|
96
|
-
|
97
|
-
raise "CEP #{@@cep} não encontrado." if elemento.nil?
|
98
|
-
|
99
|
-
# Remove os acentos já que o Buscar Cep retorna o endereço com acento e a Bronze Business não
|
100
|
-
@@retorno << elemento.text
|
55
|
+
cep = numero.to_s.gsub(/[\.-]/, '')
|
56
|
+
raise "O CEP informado possui um formato inválido." unless cep.to_s.match(/^\d{8}$/)
|
57
|
+
|
58
|
+
response = Net::HTTP.Proxy(self.proxy_addr, self.proxy_port).get_response(URI.parse("#{WEB_SERVICE_REPUBLICA_VIRTUAL_URL}#{cep}"))
|
59
|
+
raise "A busca de endereço por CEP através do web service da República Virtual está indisponível." unless response.kind_of?(Net::HTTPSuccess)
|
60
|
+
|
61
|
+
doc = Hash[* CGI::parse(response.body).map {|k,v| [k,v[0]]}.flatten]
|
62
|
+
|
63
|
+
retorno = []
|
64
|
+
|
65
|
+
raise "CEP #{cep} não encontrado." unless [1,2].include?(doc['resultado'].to_i)
|
66
|
+
|
67
|
+
%w(tipo_logradouro logradouro bairro cidade uf).each do |field|
|
68
|
+
retorno << Iconv.conv("utf-8", "ISO-8859-1", doc[field])
|
101
69
|
end
|
70
|
+
|
71
|
+
retorno << cep
|
102
72
|
end
|
103
73
|
end
|
data/lib/brcep/version.rb
CHANGED
data/test/busca_endereco_test.rb
CHANGED
@@ -3,156 +3,66 @@ require File.dirname(__FILE__) + '/test_helper'
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'net/http'
|
5
5
|
require 'mocha'
|
6
|
+
require 'fakeweb'
|
6
7
|
|
7
|
-
|
8
|
+
FakeWeb.allow_net_connect = false
|
9
|
+
|
10
|
+
INVALID_ZIPS = [0, '0', '00', '000', '0000', '00000', '000000', '0000000', '4006000']
|
8
11
|
VALID_ZIPS = [22640100, '22640100', '22.640100', '22640-100', '22.640-100']
|
9
|
-
VALID_ZIPS_WITH_ZERO_AT_BEGINNING = ['
|
10
|
-
VALID_CEPS_NOT_FOUND_ON_BRONZE_BUSINESS = [20230024, '20230024', '20.230024', '20230-024', '20.230-024']
|
12
|
+
VALID_ZIPS_WITH_ZERO_AT_BEGINNING = ['05145100', '05145-100', '05.145-100']
|
11
13
|
ZIPS_WITH_NO_ADDRESS_ASSOCIATED = [12345678, '12345678', '12.345678', '12345-678', '12.345-678']
|
12
14
|
|
13
|
-
|
14
|
-
def initialize; end
|
15
|
-
end
|
16
|
-
|
17
|
-
class MockServerError < Net::HTTPServerError
|
18
|
-
def initialize;
|
19
|
-
@message = 'HTTPServiceUnavailable'
|
20
|
-
@code = '504'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def limpa_cep(numero)
|
25
|
-
numero.to_s.gsub(/\./, '').gsub(/\-/, '')
|
26
|
-
end
|
15
|
+
URL = BuscaEndereco::WEB_SERVICE_REPUBLICA_VIRTUAL_URL
|
27
16
|
|
28
17
|
class BuscaEnderecoTest < Test::Unit::TestCase
|
29
18
|
def test_raise_without_service_on_both_web_services
|
30
|
-
|
31
|
-
|
32
|
-
Net::HTTP.expects(:get_response).returns(http_error_response)
|
33
|
-
Net::HTTP.expects(:get_response).returns(http_error_response)
|
34
|
-
|
19
|
+
FakeWeb.register_uri(:get, "#{URL}#{22640100}", :status => 504, :body => "Service Unavailable")
|
20
|
+
|
35
21
|
assert_raise RuntimeError, "A busca de endereço por CEP está indisponível no momento." do
|
36
|
-
BuscaEndereco.por_cep(
|
22
|
+
BuscaEndereco.por_cep(22640100)
|
37
23
|
end
|
38
24
|
end
|
39
25
|
|
40
|
-
|
41
|
-
|
26
|
+
INVALID_ZIPS.each do |invalid_zip|
|
27
|
+
define_method "test_raise_for_invalid_zip_code_#{invalid_zip}" do
|
42
28
|
assert_raise RuntimeError, "O CEP informado possui um formato inválido." do
|
43
29
|
BuscaEndereco.por_cep(invalid_zip)
|
44
30
|
end
|
45
31
|
end
|
46
32
|
end
|
47
33
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
limpa_cep(valid_zip)], BuscaEndereco.por_cep(valid_zip)
|
54
|
-
end
|
55
|
-
end
|
34
|
+
VALID_ZIPS.each do |valid_zip|
|
35
|
+
define_method "test_valid_code_#{valid_zip}" do
|
36
|
+
cep = VALID_ZIPS.first.to_s
|
37
|
+
expected = ['Avenida', 'das Américas', 'Barra da Tijuca', 'Rio de Janeiro', 'RJ', cep]
|
38
|
+
body = "&resultado=1&resultado_txt=sucesso+-+cep+completo&uf=RJ&cidade=Rio+de+Janeiro&bairro=Barra+da+Tijuca&tipo_logradouro=Avenida&logradouro=das+Am%E9ricas"
|
56
39
|
|
57
|
-
|
58
|
-
VALID_ZIPS_WITH_ZERO_AT_BEGINNING.each do |valid_zip|
|
59
|
-
mock_get_response_from_bronze_business(limpa_cep(valid_zip))
|
40
|
+
FakeWeb.register_uri(:get, "#{URL}#{cep}", :body => body)
|
60
41
|
|
61
|
-
assert_equal
|
62
|
-
limpa_cep(valid_zip)], BuscaEndereco.por_cep(valid_zip)
|
42
|
+
assert_equal expected,BuscaEndereco.por_cep(valid_zip)
|
63
43
|
end
|
64
44
|
end
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
45
|
+
|
46
|
+
VALID_ZIPS_WITH_ZERO_AT_BEGINNING.each do |valid_zip|
|
47
|
+
define_method "test_valid_code_#{valid_zip}" do
|
48
|
+
cep = VALID_ZIPS_WITH_ZERO_AT_BEGINNING.first
|
49
|
+
expected = ["Avenida", "Raimundo Pereira de Magalhães", "Jardim Iris", "São Paulo", "SP", cep]
|
50
|
+
body = "&resultado=1&resultado_txt=sucesso+-+cep+completo&uf=SP&cidade=S%E3o+Paulo&bairro=Jardim+Iris&tipo_logradouro=Avenida&logradouro=Raimundo+Pereira+de+Magalh%E3es"
|
51
|
+
|
52
|
+
FakeWeb.register_uri(:get, "#{URL}#{cep}", :body => body)
|
53
|
+
|
54
|
+
assert_equal expected, BuscaEndereco.por_cep(cep)
|
72
55
|
end
|
73
56
|
end
|
74
57
|
|
75
|
-
def
|
76
|
-
|
77
|
-
|
58
|
+
def test_should_raise_exception_when_invalid_code
|
59
|
+
cep = "12345678"
|
60
|
+
body = "&resultado=0&resultado_txt=servi%E7o+indispon%EDvel%2Fcep+inv%E1lido&uf=&cidade=&bairro=&tipo_logradouro=&logradouro="
|
61
|
+
|
62
|
+
assert_raise RuntimeError, "CEP #{cep} não encontrado." do
|
63
|
+
FakeWeb.register_uri(:get, "#{URL}#{cep}", :body => body)
|
78
64
|
|
79
|
-
|
80
|
-
BuscaEndereco.por_cep(cep_not_found_on_bronze_business)
|
65
|
+
BuscaEndereco.por_cep("12345678")
|
81
66
|
end
|
82
67
|
end
|
83
|
-
|
84
|
-
def test_should_raise_exception_when_search_for_zip_with_no_associated_address
|
85
|
-
ZIPS_WITH_NO_ADDRESS_ASSOCIATED.each do |zip_with_no_address_associated|
|
86
|
-
assert_raise RuntimeError, "CEP #{limpa_cep(zip_with_no_address_associated)} não encontrado." do
|
87
|
-
mock_get_response_when_theres_no_address_associated_with_zip
|
88
|
-
|
89
|
-
BuscaEndereco.por_cep(zip_with_no_address_associated)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
|
96
|
-
def mock_get_response_from_bronze_business(zip_number)
|
97
|
-
xml_data = xml_data_from zip_name(zip_number, "bronze_business")
|
98
|
-
|
99
|
-
http_success_response = MockSuccess.new
|
100
|
-
http_success_response.expects(:body).returns(xml_data)
|
101
|
-
|
102
|
-
Net::HTTP.expects(:get_response).returns(http_success_response)
|
103
|
-
end
|
104
|
-
|
105
|
-
def mock_get_response_from_buscar_cep_when_bronze_business_is_unavailable(zip_number)
|
106
|
-
xml_data = xml_data_from zip_name(zip_number, "buscar_cep")
|
107
|
-
|
108
|
-
http_success_response = MockSuccess.new
|
109
|
-
http_success_response.expects(:body).returns(xml_data)
|
110
|
-
|
111
|
-
Net::HTTP.expects(:get_response).returns(http_success_response)
|
112
|
-
|
113
|
-
http_error_response = MockServerError.new
|
114
|
-
Net::HTTP.expects(:get_response).returns(http_error_response)
|
115
|
-
end
|
116
|
-
|
117
|
-
def mock_get_response_from_buscar_cep_when_address_not_found_on_bronze_business(zip_number)
|
118
|
-
xml_data_from_bronze_business = xml_data_from zip_name("not_found", "bronze_business")
|
119
|
-
xml_data_from_buscar_cep = xml_data_from zip_name(zip_number, "buscar_cep")
|
120
|
-
|
121
|
-
http_success_response_from_buscar_cep = MockSuccess.new
|
122
|
-
http_success_response_from_buscar_cep.expects(:body).returns(xml_data_from_buscar_cep)
|
123
|
-
Net::HTTP.expects(:get_response).returns(http_success_response_from_buscar_cep)
|
124
|
-
|
125
|
-
http_success_response_from_bronze_business = MockSuccess.new
|
126
|
-
http_success_response_from_bronze_business.expects(:body).returns(xml_data_from_bronze_business)
|
127
|
-
Net::HTTP.expects(:get_response).returns(http_success_response_from_bronze_business)
|
128
|
-
end
|
129
|
-
|
130
|
-
def mock_get_response_when_theres_no_address_associated_with_zip
|
131
|
-
xml_data_from_bronze_business = xml_data_from zip_name("not_found", "bronze_business")
|
132
|
-
xml_data_from_buscar_cep = xml_data_from zip_name("not_found", "buscar_cep")
|
133
|
-
|
134
|
-
http_success_response_from_buscar_cep = MockSuccess.new
|
135
|
-
http_success_response_from_buscar_cep.expects(:body).returns(xml_data_from_buscar_cep)
|
136
|
-
Net::HTTP.expects(:get_response).returns(http_success_response_from_buscar_cep)
|
137
|
-
|
138
|
-
http_success_response_from_bronze_business = MockSuccess.new
|
139
|
-
http_success_response_from_bronze_business.expects(:body).returns(xml_data_from_bronze_business)
|
140
|
-
Net::HTTP.expects(:get_response).returns(http_success_response_from_bronze_business)
|
141
|
-
end
|
142
|
-
|
143
|
-
def xml_data_from xml_mock
|
144
|
-
file = File.new(xml_mock)
|
145
|
-
|
146
|
-
xml_data = ''
|
147
|
-
|
148
|
-
while (line = file.gets)
|
149
|
-
xml_data << line
|
150
|
-
end
|
151
|
-
|
152
|
-
xml_data
|
153
|
-
end
|
154
|
-
|
155
|
-
def zip_name(nome, web_service)
|
156
|
-
File.join(File.dirname(__FILE__), 'mocks', "zip_#{nome}_#{web_service}.xml")
|
157
|
-
end
|
158
68
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,56 +1,46 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: brcep
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 3
|
7
|
-
- 0
|
8
|
-
- 8
|
9
|
-
version: 3.0.8
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.1.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
12
|
-
-
|
7
|
+
authors:
|
8
|
+
- Marcos Tapajós
|
13
9
|
- Celestino Gomes
|
14
10
|
- Andre Kupkosvki
|
15
|
-
-
|
11
|
+
- Vinícius Teles
|
16
12
|
- Felipe Barreto
|
17
13
|
- Rafael Walter
|
18
14
|
- Cassio Marques
|
19
15
|
autorequire:
|
20
16
|
bindir: bin
|
21
17
|
cert_chain: []
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
dependencies:
|
26
|
-
- !ruby/object:Gem::Dependency
|
18
|
+
date: 2012-02-26 00:00:00.000000000Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
27
21
|
name: rake
|
28
|
-
requirement: &
|
22
|
+
requirement: &2152246600 !ruby/object:Gem::Requirement
|
29
23
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
- 0
|
35
|
-
version: "0"
|
24
|
+
requirements:
|
25
|
+
- - ! '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
36
28
|
type: :development
|
37
29
|
prerelease: false
|
38
|
-
version_requirements: *
|
39
|
-
- !ruby/object:Gem::Dependency
|
30
|
+
version_requirements: *2152246600
|
31
|
+
- !ruby/object:Gem::Dependency
|
40
32
|
name: mocha
|
41
|
-
requirement: &
|
33
|
+
requirement: &2152245040 !ruby/object:Gem::Requirement
|
42
34
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
- 0
|
48
|
-
version: "0"
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
49
39
|
type: :development
|
50
40
|
prerelease: false
|
51
|
-
version_requirements: *
|
52
|
-
description:
|
53
|
-
email:
|
41
|
+
version_requirements: *2152245040
|
42
|
+
description: brcep é uma das gems que compoem o Brazilian Rails
|
43
|
+
email:
|
54
44
|
- tapajos@gmail.com
|
55
45
|
- tinorj@gmail.com
|
56
46
|
- kupkovski@gmail.com
|
@@ -59,12 +49,9 @@ email:
|
|
59
49
|
- rafawalter@gmail.com
|
60
50
|
- cassiommc@gmail.com
|
61
51
|
executables: []
|
62
|
-
|
63
52
|
extensions: []
|
64
|
-
|
65
53
|
extra_rdoc_files: []
|
66
|
-
|
67
|
-
files:
|
54
|
+
files:
|
68
55
|
- Rakefile
|
69
56
|
- README
|
70
57
|
- CHANGELOG
|
@@ -73,48 +60,33 @@ files:
|
|
73
60
|
- lib/brcep/version.rb
|
74
61
|
- lib/brcep.rb
|
75
62
|
- test/busca_endereco_test.rb
|
76
|
-
- test/mocks/zip_04006000_bronze_business.xml
|
77
|
-
- test/mocks/zip_20230024_buscar_cep.xml
|
78
|
-
- test/mocks/zip_22640100.xml
|
79
|
-
- test/mocks/zip_22640100_bronze_business.xml
|
80
|
-
- test/mocks/zip_22640100_buscar_cep.xml
|
81
|
-
- test/mocks/zip_invalid.xml
|
82
|
-
- test/mocks/zip_not_found_bronze_business.xml
|
83
|
-
- test/mocks/zip_not_found_buscar_cep.xml
|
84
63
|
- test/test_helper.rb
|
85
|
-
has_rdoc: true
|
86
64
|
homepage: http://www.improveit.com.br/software_livre/brazilian_rails
|
87
65
|
licenses: []
|
88
|
-
|
89
66
|
post_install_message:
|
90
67
|
rdoc_options: []
|
91
|
-
|
92
|
-
require_paths:
|
68
|
+
require_paths:
|
93
69
|
- lib
|
94
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
71
|
none: false
|
96
|
-
requirements:
|
97
|
-
- -
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
segments:
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
segments:
|
101
77
|
- 0
|
102
|
-
|
103
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
hash: 3897089543070755465
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
80
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
109
|
-
|
110
|
-
- 0
|
111
|
-
version: "0"
|
112
|
-
requirements:
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements:
|
113
86
|
- none
|
114
87
|
rubyforge_project: brcep
|
115
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.8.15
|
116
89
|
signing_key:
|
117
90
|
specification_version: 3
|
118
|
-
summary:
|
91
|
+
summary: brcep é uma das gems que compoem o Brazilian Rails
|
119
92
|
test_files: []
|
120
|
-
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<DataSet xmlns="http://tempuri.org/">
|
3
|
-
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
-
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
-
<xs:complexType>
|
6
|
-
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
-
<xs:element name="tbCEP">
|
8
|
-
<xs:complexType>
|
9
|
-
<xs:sequence>
|
10
|
-
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
-
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
-
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
-
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
-
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
-
</xs:sequence>
|
16
|
-
</xs:complexType>
|
17
|
-
</xs:element>
|
18
|
-
</xs:choice>
|
19
|
-
</xs:complexType>
|
20
|
-
</xs:element>
|
21
|
-
</xs:schema>
|
22
|
-
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
|
23
|
-
<NewDataSet xmlns="">
|
24
|
-
<tbCEP diffgr:id="tbCEP1" msdata:rowOrder="0">
|
25
|
-
<logradouro>Rua</logradouro>
|
26
|
-
<nome>Doutor Tomaz Carvalhal</nome>
|
27
|
-
<bairro>Paraiso</bairro>
|
28
|
-
<UF>SP</UF>
|
29
|
-
<cidade>Sao Paulo</cidade>
|
30
|
-
</tbCEP>
|
31
|
-
</NewDataSet>
|
32
|
-
</diffgr:diffgram>
|
33
|
-
</DataSet>
|
@@ -1,2 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
-
<webservicecep><cep>20230024</cep><uf>RJ</uf><cidade>Rio de Janeiro</cidade><bairro>Centro</bairro><tipo_logradouro>Rua</tipo_logradouro><logradouro>Washington Lu�s</logradouro><resultado>1</resultado><resultado_txt>sucesso. cep encontrado</resultado_txt></webservicecep>
|
data/test/mocks/zip_22640100.xml
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<DataSet xmlns="http://tempuri.org/">
|
3
|
-
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
-
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
-
<xs:complexType>
|
6
|
-
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
-
<xs:element name="tbCEP">
|
8
|
-
<xs:complexType>
|
9
|
-
<xs:sequence>
|
10
|
-
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
-
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
-
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
-
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
-
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
-
</xs:sequence>
|
16
|
-
</xs:complexType>
|
17
|
-
</xs:element>
|
18
|
-
</xs:choice>
|
19
|
-
</xs:complexType>
|
20
|
-
</xs:element>
|
21
|
-
</xs:schema>
|
22
|
-
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
|
23
|
-
<NewDataSet xmlns="">
|
24
|
-
<tbCEP diffgr:id="tbCEP1" msdata:rowOrder="0">
|
25
|
-
<logradouro>Avenida</logradouro>
|
26
|
-
<nome>das Americas</nome>
|
27
|
-
<bairro>Barra da Tijuca</bairro>
|
28
|
-
<UF>RJ</UF>
|
29
|
-
<cidade>Rio de Janeiro</cidade>
|
30
|
-
</tbCEP>
|
31
|
-
</NewDataSet>
|
32
|
-
</diffgr:diffgram>
|
33
|
-
</DataSet>
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<DataSet xmlns="http://tempuri.org/">
|
3
|
-
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
-
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
-
<xs:complexType>
|
6
|
-
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
-
<xs:element name="tbCEP">
|
8
|
-
<xs:complexType>
|
9
|
-
<xs:sequence>
|
10
|
-
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
-
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
-
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
-
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
-
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
-
</xs:sequence>
|
16
|
-
</xs:complexType>
|
17
|
-
</xs:element>
|
18
|
-
</xs:choice>
|
19
|
-
</xs:complexType>
|
20
|
-
</xs:element>
|
21
|
-
</xs:schema>
|
22
|
-
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
|
23
|
-
<NewDataSet xmlns="">
|
24
|
-
<tbCEP diffgr:id="tbCEP1" msdata:rowOrder="0">
|
25
|
-
<logradouro>Avenida</logradouro>
|
26
|
-
<nome>das Americas</nome>
|
27
|
-
<bairro>Barra da Tijuca</bairro>
|
28
|
-
<UF>RJ</UF>
|
29
|
-
<cidade>Rio de Janeiro</cidade>
|
30
|
-
</tbCEP>
|
31
|
-
</NewDataSet>
|
32
|
-
</diffgr:diffgram>
|
33
|
-
</DataSet>
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1" ?>
|
2
|
-
|
3
|
-
<webservicecep>
|
4
|
-
<cep>22640100</cep>
|
5
|
-
<uf>RJ</uf>
|
6
|
-
<cidade>Rio de Janeiro</cidade>
|
7
|
-
<bairro>Barra da Tijuca</bairro>
|
8
|
-
<tipo_logradouro>Avenida</tipo_logradouro>
|
9
|
-
<logradouro>das Am�ricas</logradouro>
|
10
|
-
<resultado>1</resultado>
|
11
|
-
<resultado_txt>sucesso. cep encontrado</resultado_txt>
|
12
|
-
</webservicecep>
|
data/test/mocks/zip_invalid.xml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<DataSet xmlns="http://tempuri.org/">
|
3
|
-
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
-
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
-
<xs:complexType>
|
6
|
-
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
-
<xs:element name="tbCEP">
|
8
|
-
<xs:complexType>
|
9
|
-
<xs:sequence>
|
10
|
-
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
-
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
-
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
-
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
-
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
-
</xs:sequence>
|
16
|
-
</xs:complexType>
|
17
|
-
</xs:element>
|
18
|
-
</xs:choice>
|
19
|
-
</xs:complexType>
|
20
|
-
</xs:element>
|
21
|
-
</xs:schema>
|
22
|
-
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />
|
23
|
-
</DataSet>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<DataSet xmlns="http://tempuri.org/">
|
3
|
-
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
-
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
-
<xs:complexType>
|
6
|
-
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
-
<xs:element name="tbCEP">
|
8
|
-
<xs:complexType>
|
9
|
-
<xs:sequence>
|
10
|
-
<xs:element name="logradouro" type="xs:string" minOccurs="0"/>
|
11
|
-
<xs:element name="nome" type="xs:string" minOccurs="0"/>
|
12
|
-
<xs:element name="bairro" type="xs:string" minOccurs="0"/>
|
13
|
-
<xs:element name="UF" type="xs:string" minOccurs="0"/>
|
14
|
-
<xs:element name="cidade" type="xs:string" minOccurs="0"/>
|
15
|
-
</xs:sequence>
|
16
|
-
</xs:complexType>
|
17
|
-
</xs:element>
|
18
|
-
</xs:choice>
|
19
|
-
</xs:complexType>
|
20
|
-
</xs:element>
|
21
|
-
</xs:schema>
|
22
|
-
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"/>
|
23
|
-
</DataSet>
|