postmon_ruby 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8c7637a9ac46b5a46c1280fcce2f3d15c7b5c86
4
- data.tar.gz: 53170191a0f5b7e959cd1b406af6078fad76e267
3
+ metadata.gz: ff5b09bd792c1b13f2df53c3a5e500c06ca3eff9
4
+ data.tar.gz: 8e6400cf6705e415d68e1fe5b958e670d5ab7240
5
5
  SHA512:
6
- metadata.gz: e2ea3624232f381a8245f958d2b0c108adddb48fd11ef35617a9897a80ecdc385658c8c178578f410618a8d5a015858bb9995f10b45ea514194207813b6a615e
7
- data.tar.gz: a5a74175238cff9df2900171b3993df91fcac1ae069cb67129df1524d9216e49360b14bdbcf0c1ed69baadd334b1ce3bdbd1c79262de88b395049397fe4bf8ac
6
+ metadata.gz: 693631c654886c4595a88e8d685ba24e05a63a0a7b691d4c90e209cbab147b7b13cac951ef3a75a2e22b9fdb412e5feddccf04e9416436dd347d9f1a430f7eff
7
+ data.tar.gz: bdcb4c8e14479ff2985dc0ec37fcfdee0e4d4d8b8d9546c23f83467facdc35e902b840ed25aa34ac76eb2e1122788912a52e57bf0ad4a33acb4c3d2bd35ac97a
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
1
  --color
2
- --format progress
2
+ --format documentation
data/README.md CHANGED
@@ -17,16 +17,24 @@ Or install it yourself as:
17
17
  $ gem install postmon_ruby
18
18
 
19
19
  ## Usage
20
-
20
+ ####Consultar CEP:
21
21
  ```ruby
22
22
  require 'postmon_ruby'
23
- resultado = PostmonRuby::Client.search "01330000"
23
+ resultado = PostmonRuby::Client.search :cep, "01330000"
24
24
  puts resultado.logradouro
25
25
  puts resultado.bairro
26
26
  puts resultado.cidade
27
27
  puts resultado.estado
28
28
  ```
29
29
 
30
+ ####Consultar informações de uma cidade:
31
+ ```ruby
32
+ require 'postmon_ruby'
33
+ resultado = PostmonRuby::Client.search :cidade, "SP", "Araraquara"
34
+ puts resultado.area_km2
35
+ puts resultado.codigo_ibge
36
+ ```
37
+
30
38
  ## Contributing
31
39
 
32
40
  1. Fork it
data/Rakefile CHANGED
@@ -1 +1,11 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
7
+
8
+ task :console do
9
+ exec "irb -I ./lib -r postmon_ruby"
10
+ end
11
+
data/lib/postmon_ruby.rb CHANGED
@@ -1,8 +1,14 @@
1
1
  require "postmon_ruby/version"
2
2
  require "postmon_ruby/client"
3
3
  require "postmon_ruby/address"
4
+ require "postmon_ruby/city"
5
+ require "postmon_ruby/finders/finder"
6
+ require "postmon_ruby/finders/cep_finder"
7
+ require "postmon_ruby/finders/city_finder"
8
+ require "postmon_ruby/finders/finders"
9
+
4
10
  require "httparty"
5
11
 
6
12
  module PostmonRuby
7
- ENDPOINT = "http://api.postmon.com.br"
13
+ ENDPOINT = "http://api.postmon.com.br/v1"
8
14
  end
@@ -0,0 +1,17 @@
1
+ module PostmonRuby
2
+ class City
3
+ @@city_attributes = [ :area_km2, :codigo_ibge ]
4
+
5
+ attr_reader :not_found, *@@city_attributes
6
+
7
+ def initialize(options={})
8
+ @not_found = true if options.nil?
9
+ @@city_attributes.each do |attribute|
10
+ send(:"#{attribute}=", options[attribute.to_s] || "")
11
+ end
12
+ end
13
+
14
+ private
15
+ attr_writer *@@city_attributes
16
+ end
17
+ end
@@ -1,7 +1,9 @@
1
1
  module PostmonRuby
2
2
  class Client
3
- def self.search(cep)
4
- PostmonRuby::Address.new( HTTParty.get("#{ENDPOINT}/cep/#{cep}") )
3
+ def self.search(finder, *arguments)
4
+ arguments.flatten!
5
+ PostmonRuby::Finders::Finder.new.search(finder, arguments)
6
+ # PostmonRuby::Finders::Finders.get_finder(finder).search(arguments)
5
7
  end
6
8
  end
7
9
  end
@@ -0,0 +1,18 @@
1
+ module PostmonRuby
2
+ module Finders
3
+ class CepFinder < PostmonRuby::Finders::Finder
4
+ def endpoint
5
+ "/cep"
6
+ end
7
+
8
+ def arguments_size
9
+ 1
10
+ end
11
+
12
+ def search(*arguments)
13
+ arguments.flatten!
14
+ PostmonRuby::Address.new( HTTParty.get(self.arguments_uri(arguments)) )
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module PostmonRuby
2
+ module Finders
3
+ class CityFinder < PostmonRuby::Finders::Finder
4
+ def endpoint
5
+ "/cidade"
6
+ end
7
+
8
+ def arguments_size
9
+ 2
10
+ end
11
+
12
+ def search(*arguments)
13
+ arguments.flatten!
14
+ PostmonRuby::City.new( HTTParty.get(self.arguments_uri(arguments)) )
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ module PostmonRuby
2
+ module Finders
3
+ class Finder
4
+ def endpoint
5
+ raise NotImplementedError
6
+ end
7
+
8
+ def arguments_size
9
+ raise NotImplementedError
10
+ end
11
+
12
+ def search(finder, *arguments)
13
+ arguments.flatten!
14
+ finder = PostmonRuby::Finders::Finders.get_finder(finder)
15
+ raise ArgumentError.new("wrong number of arguments (#{arguments.size} for #{finder.arguments_size})") if finder.arguments_size != arguments.size
16
+ finder.search(arguments)
17
+ end
18
+
19
+ def arguments_uri(arguments)
20
+ URI::encode("#{ENDPOINT}/#{self.endpoint}/#{arguments.join("/")}")
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ module PostmonRuby
2
+ module Finders
3
+ class Finders
4
+ @finders = {
5
+ cep: PostmonRuby::Finders::CepFinder.new,
6
+ cidade: PostmonRuby::Finders::CityFinder.new
7
+ }
8
+
9
+ def self.get_finder(finder)
10
+ @finders[finder.to_sym]
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module PostmonRuby
2
- VERSION = "1.0.1"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -0,0 +1,52 @@
1
+ require "spec_helper"
2
+
3
+ module PostmonRuby
4
+ module Finders
5
+ describe CepFinder do
6
+ describe "#search" do
7
+ context "with too many arguments" do
8
+ it "raise an ArgumentError" do
9
+ expect{ PostmonRuby::Client.search(:cep, "01330000", "xxxx") }.to raise_error(ArgumentError)
10
+ end
11
+ end
12
+
13
+ context "with valid cep" do
14
+ context "address with street" do
15
+ let(:address) { PostmonRuby::Client.search(:cep, "01330000") }
16
+ it "returns a PostmonRuby::Address object" do
17
+ expect(address).to be_a(PostmonRuby::Address)
18
+ end
19
+ it "returns a complete address" do
20
+ expect(address.bairro).to eq "Bela Vista"
21
+ expect(address.cidade).to eq "São Paulo"
22
+ expect(address.logradouro).to eq "Rua Rocha"
23
+ expect(address.estado).to eq "SP"
24
+ end
25
+ end
26
+
27
+ context "address without street" do
28
+ let(:address) { PostmonRuby::Client.search(:cep, "85100000") }
29
+ it "returns a PostmonRuby::Address object" do
30
+ expect(address).to be_a(PostmonRuby::Address)
31
+ end
32
+ it "returns a empty 'logradouro' " do
33
+ expect(address.logradouro).to be_empty
34
+ end
35
+ end
36
+ end
37
+
38
+ context "with invalid cep" do
39
+ let(:address) { PostmonRuby::Client.search(:cep, "99999999") }
40
+ it "returns a PostmonRuby::Address object" do
41
+ expect(address).to be_a(PostmonRuby::Address)
42
+ end
43
+
44
+ it "returns true in 'not_found'" do
45
+ expect(address.not_found).to be_true
46
+ end
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,54 @@
1
+ require "spec_helper"
2
+
3
+ module PostmonRuby
4
+ module Finders
5
+ describe CityFinder do
6
+ describe "#search" do
7
+ context "with too many arguments" do
8
+ it "raise an ArgumentError" do
9
+ expect{ PostmonRuby::Client.search(:cidade, "SP", "Araraquara", "xxxxx") }.to raise_error(ArgumentError)
10
+ end
11
+ end
12
+
13
+ context "with less arguments" do
14
+ it "raise an ArgumentError" do
15
+ expect{ PostmonRuby::Client.search(:cidade, "SP") }.to raise_error(ArgumentError)
16
+ end
17
+ end
18
+
19
+ context "with valid city" do
20
+ let(:city) { PostmonRuby::Client.search(:cidade, "SP", "Araraquara") }
21
+ it "returns a PostmonRuby::City object" do
22
+ expect(city).to be_a(PostmonRuby::City)
23
+ end
24
+ it "returns a complete city info" do
25
+ expect(city.area_km2).to eq "1003,674"
26
+ expect(city.codigo_ibge).to eq "3503208"
27
+ end
28
+ end
29
+
30
+ context "with valid city with special characters" do
31
+ let(:city) { PostmonRuby::Client.search(:cidade, "SP", "São Paulo") }
32
+ it "returns a PostmonRuby::City object" do
33
+ expect(city).to be_a(PostmonRuby::City)
34
+ end
35
+ it "returns a complete city info" do
36
+ expect(city.area_km2).to eq "1521,101"
37
+ expect(city.codigo_ibge).to eq "3550308"
38
+ end
39
+ end
40
+
41
+ context "with invalid city" do
42
+ let(:city) { PostmonRuby::Client.search(:cidade, "SP", "Xxxx") }
43
+ it "returns a PostmonRuby::City object" do
44
+ expect(city).to be_a(PostmonRuby::City)
45
+ end
46
+ it "returns true in 'not_found'" do
47
+ expect(city.not_found).to be_true
48
+ end
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,6 @@
1
+ require "spec_helper"
2
+
3
+ module PostmonRuby
4
+ describe Client do
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postmon_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Ribeiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-20 00:00:00.000000000 Z
11
+ date: 2014-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -95,10 +95,17 @@ files:
95
95
  - Rakefile
96
96
  - lib/postmon_ruby.rb
97
97
  - lib/postmon_ruby/address.rb
98
+ - lib/postmon_ruby/city.rb
98
99
  - lib/postmon_ruby/client.rb
100
+ - lib/postmon_ruby/finders/cep_finder.rb
101
+ - lib/postmon_ruby/finders/city_finder.rb
102
+ - lib/postmon_ruby/finders/finder.rb
103
+ - lib/postmon_ruby/finders/finders.rb
99
104
  - lib/postmon_ruby/version.rb
100
105
  - postmon_ruby.gemspec
101
- - spec/postmon_ruby/postmon_ruby_spec.rb
106
+ - spec/postmon_ruby/cep_finder_spec.rb
107
+ - spec/postmon_ruby/city_finder_spec.rb
108
+ - spec/postmon_ruby/client_spec.rb
102
109
  - spec/spec_helper.rb
103
110
  homepage: https://github.com/PostmonAPI/postmon-ruby
104
111
  licenses:
@@ -125,5 +132,7 @@ signing_key:
125
132
  specification_version: 4
126
133
  summary: A rubygem to access the Postmon API
127
134
  test_files:
128
- - spec/postmon_ruby/postmon_ruby_spec.rb
135
+ - spec/postmon_ruby/cep_finder_spec.rb
136
+ - spec/postmon_ruby/city_finder_spec.rb
137
+ - spec/postmon_ruby/client_spec.rb
129
138
  - spec/spec_helper.rb
@@ -1,45 +0,0 @@
1
- require "spec_helper"
2
-
3
- module PostmonRuby
4
- describe Client do
5
- describe "#find" do
6
- context "with valid cep" do
7
- context "address with street" do
8
- let(:address) { PostmonRuby::Client.search("01330000") }
9
- it "returns a PostmonRuby::Address object" do
10
- expect(address).to be_a(PostmonRuby::Address)
11
- end
12
- it "returns a complete address" do
13
- expect(address.bairro).to eq "Bela Vista"
14
- expect(address.cidade).to eq "São Paulo"
15
- expect(address.logradouro).to eq "Rua Rocha"
16
- expect(address.estado).to eq "SP"
17
- end
18
- end
19
-
20
- context "address without street" do
21
- let(:address) { PostmonRuby::Client.search("85100000") }
22
- it "returns a PostmonRuby::Address object" do
23
- # binding.pry
24
- expect(address).to be_a(PostmonRuby::Address)
25
- end
26
- it "returns a empty 'logradouro' " do
27
- expect(address.logradouro).to be_empty
28
- end
29
- end
30
- end
31
-
32
- context "with invalid cep" do
33
- let(:address) { PostmonRuby::Client.search("99999999") }
34
- it "returns a PostmonRuby::Address object" do
35
- expect(address).to be_a(PostmonRuby::Address)
36
- end
37
-
38
- it "returns true in 'not_found'" do
39
- expect(address.not_found).to be_true
40
- end
41
- end
42
-
43
- end
44
- end
45
- end