consulta_cep 0.0.1
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.rdoc +16 -0
- data/Rakefile +1 -0
- data/bin/consulta_cep +17 -0
- data/consulta_cep.gemspec +26 -0
- data/lib/consulta_cep.rb +100 -0
- data/lib/consulta_cep/version.rb +3 -0
- metadata +65 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
== ConsultaCep
|
2
|
+
|
3
|
+
Uma gem bem simples pra fazer busca de endereços no site brasileiro dos correios.
|
4
|
+
|
5
|
+
== Example
|
6
|
+
|
7
|
+
include ConsultaCep
|
8
|
+
|
9
|
+
# Procurando dados por cep
|
10
|
+
Consulta.cep '12228-462'
|
11
|
+
|
12
|
+
# Procurando dados por endereço
|
13
|
+
Consulta.endereco 'Avenida Paulista, São Paulo'
|
14
|
+
|
15
|
+
# Procurando dados por endereço refinado
|
16
|
+
Consulta.endereco 'Avenida Paulista', :cidade => 'São Paulo', :estado => 'SP'
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/consulta_cep
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'consulta_cep'
|
6
|
+
|
7
|
+
ConsultaCep::Consulta.cep(ARGV[0]).each do |endereco|
|
8
|
+
output = [
|
9
|
+
"ENDEREÇO: #{endereco[:endereco]}",
|
10
|
+
"BAIRRO: #{endereco[:bairro ]}",
|
11
|
+
"CIDADE: #{endereco[:cidade ]}",
|
12
|
+
"ESTADO: #{endereco[:estado ]}",
|
13
|
+
"CEP: #{endereco[:cep ]}\n\n"
|
14
|
+
].join("\n")
|
15
|
+
|
16
|
+
puts output
|
17
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "consulta_cep/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "consulta_cep"
|
7
|
+
s.version = ConsultaCep::VERSION
|
8
|
+
s.authors = ["Dalton"]
|
9
|
+
s.email = ["dalthon@dlt.local"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{A very simple gem to fetch brazilian postalcodes from www.correios.com.br }
|
12
|
+
s.description = %q{A very simple gem to fetch brazilian postalcodes from www.correios.com.br }
|
13
|
+
|
14
|
+
s.rubyforge_project = "consulta_cep"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency 'mechanize'
|
22
|
+
|
23
|
+
# specify any dependencies here; for example:
|
24
|
+
# s.add_development_dependency "rspec"
|
25
|
+
# s.add_runtime_dependency "rest-client"
|
26
|
+
end
|
data/lib/consulta_cep.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
require 'mechanize'
|
5
|
+
require "consulta_cep/version"
|
6
|
+
|
7
|
+
module ConsultaCep
|
8
|
+
class Consulta
|
9
|
+
ESTADOS = ['AC', 'AL', 'AM', 'AP', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MG', 'MS', 'MT', 'PA', 'PB', 'PE', 'PI', 'PR', 'RJ', 'RN', 'RO', 'RR', 'RS', 'SC', 'SE', 'SP', 'TO']
|
10
|
+
|
11
|
+
TIPOS = [
|
12
|
+
'Aeroporto', 'Alameda', 'Área', 'Avenida', 'Campo', 'Chácara', 'Colônia', 'Condomínio', 'Conjunto', 'Distrito', 'Esplanada', 'Estação', 'Estrada', 'Favela',
|
13
|
+
'Fazenda', 'Feira', 'Jardim', 'Ladeira', 'Lago', 'Lagoa', 'Largo', 'Loteamento', 'Morro', 'Núcleo', 'Parque', 'Passarela', 'Pátio', 'Praça', 'Quadra',
|
14
|
+
'Recanto', 'Residencial', 'Rodovia', 'Rua', 'Setor', 'Sítio', 'Travessa', 'Trecho', 'Trevo', 'Vale', 'Vereda', 'Via', 'Viaduto', 'Viela', 'Vila'
|
15
|
+
]
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@agent = Mechanize.new{ |a| a.log = Logger.new(STDERR) }
|
19
|
+
@agent.user_agent_alias = 'Windows IE 7'
|
20
|
+
@last_page = @agent.get 'http://correios.com.br'
|
21
|
+
sleep 0.1
|
22
|
+
end
|
23
|
+
|
24
|
+
def cep(cep)
|
25
|
+
@last_page = @agent.post 'http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do',
|
26
|
+
:EndRow => 10,
|
27
|
+
:Metodo => 'listaLogradouro',
|
28
|
+
:StartRow => 1,
|
29
|
+
:TipoConsulta => 'cep',
|
30
|
+
:CEP => cep
|
31
|
+
|
32
|
+
parse_lista @last_page
|
33
|
+
end
|
34
|
+
|
35
|
+
def endereco(endereco)
|
36
|
+
@last_page = @agent.post 'http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do',
|
37
|
+
:EndRow => 10,
|
38
|
+
:Metodo => 'listaLogradouro',
|
39
|
+
:StartRow => 1,
|
40
|
+
:TipoCep => 'LOG',
|
41
|
+
:TipoConsulta => 'relaxation',
|
42
|
+
:cfm => 1,
|
43
|
+
:relaxation => endereco,
|
44
|
+
:semelhante => 'S'
|
45
|
+
|
46
|
+
parse_lista @last_page
|
47
|
+
end
|
48
|
+
|
49
|
+
def endereco_refinado(endereco, params)
|
50
|
+
@last_page = @agent.post 'http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do',
|
51
|
+
:EndRow => 10,
|
52
|
+
:Localidade => params[:cidade],
|
53
|
+
:Logradouro => endereco,
|
54
|
+
:Metodo => 'listaLogradouro',
|
55
|
+
:Numeor => params[:numero],
|
56
|
+
:StartRow => 1,
|
57
|
+
:Tipo => (params[:tipo] || ''),
|
58
|
+
:TipoConsulta => 'logradouro',
|
59
|
+
:UF => params[:estado],
|
60
|
+
:cfm => 1
|
61
|
+
|
62
|
+
parse_lista @last_page
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.cep(cep_number)
|
66
|
+
self.new.cep cep_number.gsub(/[^\d]/, '')
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.endereco(endereco)
|
70
|
+
self.new.endereco endereco
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.endereco_refinado(endereco, params={})
|
74
|
+
self.new.endereco_refinado endereco, params
|
75
|
+
end
|
76
|
+
|
77
|
+
protected
|
78
|
+
def parse_lista(page)
|
79
|
+
elements = []
|
80
|
+
page.search('tr[@onclick]').each do |row|
|
81
|
+
data = row.search('td').map &:text
|
82
|
+
element = {
|
83
|
+
:endereco => data[0],
|
84
|
+
:bairro => data[1],
|
85
|
+
:cidade => data[2],
|
86
|
+
:estado => data[3],
|
87
|
+
:cep => data[4]
|
88
|
+
}
|
89
|
+
elements << element
|
90
|
+
end
|
91
|
+
elements
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
include ConsultaCep
|
97
|
+
|
98
|
+
Consulta.cep '12228462'
|
99
|
+
Consulta.endereco 'Rua Alice Costa, 39'
|
100
|
+
Consulta.endereco_refinado 'H8C', :cidade => 'São José dos Campos', :estado => 'SP'
|
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: consulta_cep
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dalton
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-20 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: mechanize
|
16
|
+
requirement: &70173556424940 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70173556424940
|
25
|
+
description: ! 'A very simple gem to fetch brazilian postalcodes from www.correios.com.br '
|
26
|
+
email:
|
27
|
+
- dalthon@dlt.local
|
28
|
+
executables:
|
29
|
+
- consulta_cep
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- .gitignore
|
34
|
+
- Gemfile
|
35
|
+
- README.rdoc
|
36
|
+
- Rakefile
|
37
|
+
- bin/consulta_cep
|
38
|
+
- consulta_cep.gemspec
|
39
|
+
- lib/consulta_cep.rb
|
40
|
+
- lib/consulta_cep/version.rb
|
41
|
+
homepage: ''
|
42
|
+
licenses: []
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
none: false
|
49
|
+
requirements:
|
50
|
+
- - ! '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ! '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project: consulta_cep
|
61
|
+
rubygems_version: 1.8.10
|
62
|
+
signing_key:
|
63
|
+
specification_version: 3
|
64
|
+
summary: A very simple gem to fetch brazilian postalcodes from www.correios.com.br
|
65
|
+
test_files: []
|