consulta_cep 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in consulta_cep.gemspec
4
+ gemspec
@@ -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'
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -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
@@ -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'
@@ -0,0 +1,3 @@
1
+ module ConsultaCep
2
+ VERSION = "0.0.1"
3
+ end
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: []