fipeapi 0.1.beta → 0.1

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: 7972f7912481dbadd76f33d32f388325fa11b0ee
4
- data.tar.gz: c51629c56ab54f75df8f1944f1981f6e9dc31db3
3
+ metadata.gz: b738574cb618bf495fd9e074aaef856b68dec7d2
4
+ data.tar.gz: 1c0b07546fc95665c281858e3a356a2cdffffa77
5
5
  SHA512:
6
- metadata.gz: 4cc26cea8f5abe36eacdeee5c15912374fe59b2fb4ace792154c4eeaed2ddf8c5fa70e666c26bea30d07745d5aa3139ff714f73b1bbe1cf2c7ff3475637a581a
7
- data.tar.gz: b23a26c7099b1479c785e0fcc9902541769ba19c64b9c7c15fb264c3e6543ef4b9814aafbc21517794213446c0f85305b5959c9e407d328de9c9941608e20ae4
6
+ metadata.gz: 3b3fb1a04c514eabd3f15ae0acdb476c71cf3eb6fbff442755badb87264e1c09d1c37f82a3338cad0b6e5533134b4c5653db7e61a29a1db9b19e872be9a41bc2
7
+ data.tar.gz: 40bbfec4f98b08efd3b3e4c268cb372f995ed38325dc1d18f1e1445bf1073feb96ff8c2b762bf0c056af54817e3e51f6ba80eafce87ca09a6625bd631f4e654d
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in fipeapi.gemspec
4
+ gem 'pry'
4
5
  gemspec
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Bom, se você precisa consultar em tempo real a base da FIPE, esse é o projeto
4
4
  que você quer usar.
5
5
 
6
- Nós usamos a [fipeapi.appspot](http://fipeapi.appspot.com/), uma api para a
6
+ Nós usamos a [FipeApi](http://deividfortuna.github.io/fipe/), uma api para a
7
7
  base da FIPE e devolvemos objetos para todos os requests.
8
8
 
9
9
  OBS: *Não temos como garantir a disponibilidade da API, e nem nós, nem os
@@ -28,83 +28,27 @@ Or install it yourself as:
28
28
 
29
29
  ## Usage
30
30
 
31
-
32
31
  ```
33
32
  [1] pry(main)> marca = FipeApi::Marca.todas.first
34
- => #<FipeApi::Marca:0x0000000330ca20 @fipe_name="Audi", @id=6, @key="audi-6", @name="AUDI", @order=2, @tipo_do_veiculo="carros">
35
- [2] pry(main)> veiculo = FipeApi::Veiculo.por_marca('carro', '21').first
36
- => #<FipeApi::Veiculo:0x00000003534b68
37
- @fipe_marca="Fiat",
38
- @fipe_name="147 C/ CL",
39
- @id="437",
40
- @id_marca="21",
41
- @key="147-437",
42
- @marca="FIAT",
43
- @name="147 C/ CL",
44
- @tipo="carro">
45
- [3] pry(main)> modelo = FipeApi::Modelo.por_marca_e_id_do_veiculo('carro', '21', '4828').first
46
- => #<FipeApi::Modelo:0x00000001a92f30
47
- @fipe_codigo="2014-1",
48
- @fipe_marca="Fiat",
49
- @id="2014-1",
50
- @id_marca="21",
51
- @id_veiculo="4828",
52
- @key="2014-1",
53
- @marca="FIAT",
54
- @name="2014 Gasolina",
55
- @tipo_do_veiculo="carro",
56
- @veiculo="Palio 1.0 ECONOMY Fire Flex 8V 4p">
57
- [4] pry(main)> preco = FipeApi::Preco.por_marca_codigo_do_veiculo_e_ano('carro', '21', '4828', '2014-1')
58
- => #<FipeApi::Preco:0x00000003670db0
59
- @ano_modelo="2014",
60
- @combustivel="Gasolina",
61
- @fipe_codigo="001267-0",
62
- @id="2014",
63
- @key="palio-2014",
64
- @marca="Fiat",
65
- @name="Palio 1.0 ECONOMY Fire Flex 8V 4p",
66
- @preco="R$ 24.541,00",
67
- @referencia="abril de 2016",
68
- @time=0.0,
69
- @veiculo="Palio 1.0 ECONOMY Fire Flex 8V 4p">
70
- [5] pry(main)>
71
- [6] pry(main)> marca = FipeApi::Marca.todas.first
72
- => #<FipeApi::Marca:0x000000034f7470 @fipe_name="Audi", @id=6, @key="audi-6", @name="AUDI", @order=2, @tipo_do_veiculo="carros">
73
- [7] pry(main)> veiculo = marca.veiculos.first
74
- => #<FipeApi::Veiculo:0x000000031e3590
75
- @fipe_marca="Audi",
76
- @fipe_name="100 2.8 V6",
77
- @id="43",
78
- @id_marca=6,
79
- @key="100-43",
80
- @marca="AUDI",
81
- @name="100 2.8 V6",
82
- @tipo="carros">
83
- [8] pry(main)> modelo = veiculo.modelos.first
84
- => #<FipeApi::Modelo:0x000000030c2ad0
85
- @fipe_codigo="1995-1",
86
- @fipe_marca="Audi",
87
- @id="1995-1",
88
- @id_marca=6,
89
- @id_veiculo="43",
90
- @key="1995-1",
91
- @marca="AUDI",
92
- @name="1995 Gasolina",
93
- @tipo_do_veiculo="carros",
94
- @veiculo="100 2.8 V6">
95
- [9] pry(main)> preco = modelo.preco
96
- => #<FipeApi::Preco:0x000000030051b0
97
- @ano_modelo="1995",
33
+ => #<FipeApi::Marca:0x00000002192830 @codigo=1, @nome="Acura", @tipo_do_veiculo="carros">
34
+ [2] pry(main)>
35
+ [3] pry(main)> modelo = FipeApi::Modelo.por_marca(marca.tipo_do_veiculo, marca.codigo).first
36
+ => #<FipeApi::Modelo:0x00000002f70740 @codigo=1, @id_marca=1, @nome="Integra GS 1.8", @tipo_do_veiculo="carros">
37
+ [4] pry(main)>
38
+ [5] pry(main)> ano = FipeApi::Ano.por_marca_e_modelo(modelo.tipo_do_veiculo, modelo.id_marca, modelo.codigo).first
39
+ => #<FipeApi::Ano:0x000000020d5960 @codigo="1992-1", @id_marca=1, @id_modelo=1, @nome="1992 Gasolina", @tipo_do_veiculo="carros">
40
+ [6] pry(main)>
41
+ [7] pry(main)> valor = FipeApi::Valor.por_marca_modelo_e_id_fipe(ano.tipo_do_veiculo, ano.id_marca, ano.id_modelo, ano.codigo)
42
+ => #<FipeApi::Valor:0x0000000206f9d0
43
+ @ano_modelo=1992,
44
+ @codigo_fipe="038003-2 ",
98
45
  @combustivel="Gasolina",
99
- @fipe_codigo="008030-6",
100
- @id="1995",
101
- @key="100-1995",
102
- @marca="Audi",
103
- @name="100 2.8 V6",
104
- @preco="R$ 14.980,00",
105
- @referencia="abril de 2016",
106
- @time=0.009999999999990905,
107
- @veiculo="100 2.8 V6">
46
+ @marca="Acura",
47
+ @mes_referencia="maio de 2016",
48
+ @modelo="Integra GS 1.8",
49
+ @sigla_combustivel="G",
50
+ @tipo_veiculo=1,
51
+ @valor="R$ 13.198,00">
108
52
  ```
109
53
 
110
54
  ## License
@@ -0,0 +1,13 @@
1
+ require 'fipeapi'
2
+
3
+
4
+ FipeApi::Marca.todas.each do |brand|
5
+ brand.modelos.each do |modelo|
6
+ modelo.anos.each do |ano|
7
+ p '========='
8
+ p brand.codigo
9
+ p modelo.codigo
10
+ p ano.codigo
11
+ end
12
+ end
13
+ end
data/fipeapi.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'httparty', '0.13'
22
+ spec.add_dependency 'activesupport', '~> 4.2'
22
23
  spec.add_development_dependency 'bundler', '~> 1.11'
23
24
  spec.add_development_dependency 'rake', '~> 10.0'
24
25
  spec.add_development_dependency 'rspec', '~> 3.0'
@@ -0,0 +1,10 @@
1
+ class MyParty
2
+ def self.get(*args)
3
+ response = HTTParty.get(*args)
4
+ if response.code == 404
5
+ raise HTTParty::Error
6
+ else
7
+ response
8
+ end
9
+ end
10
+ end
data/lib/fipeapi.rb CHANGED
@@ -1,13 +1,16 @@
1
1
  require 'fipeapi/version'
2
2
  require 'httparty'
3
+
4
+ require 'active_support/inflector'
5
+ require_relative './core_ext/myparty'
3
6
  require_relative 'fipeapi/objeto_com_construtor'
4
7
  require_relative 'fipeapi/marca'
5
- require_relative 'fipeapi/veiculo'
6
8
  require_relative 'fipeapi/modelo'
7
- require_relative 'fipeapi/preco'
9
+ require_relative 'fipeapi/ano'
10
+ require_relative 'fipeapi/valor'
8
11
 
9
12
  module FipeApi
10
- API_URL = 'http://fipeapi.appspot.com/api/1'
13
+ API_URL = 'https://fipe-parallelum.rhcloud.com/api/v1'
11
14
  CARRO = 'carros'
12
15
  MOTO = 'motos'
13
16
  CAMINHAO = 'caminhoes'
@@ -0,0 +1,45 @@
1
+ module FipeApi
2
+ class Ano
3
+ include ObjetoComConstrutor
4
+
5
+ attr_accessor :id_marca, :id_modelo, :tipo_do_veiculo, :nome, :codigo
6
+
7
+ def initialize(tipo_do_veiculo, id_marca, id_modelo, opts = {})
8
+ self.tipo_do_veiculo = tipo_do_veiculo
9
+ self.id_marca = id_marca
10
+ self.id_modelo = id_modelo
11
+
12
+ super(opts)
13
+ end
14
+
15
+ def self.por_marca_e_modelo(
16
+ tipo_do_veiculo,
17
+ id_marca,
18
+ id_modelo
19
+ )
20
+ MyParty
21
+ .get(endpoint(tipo_do_veiculo, id_marca, id_modelo))
22
+ .parsed_response.map do |ano|
23
+ Ano.new(tipo_do_veiculo, id_marca, id_modelo, ano)
24
+ end
25
+ rescue HTTParty::Error
26
+ nil
27
+ end
28
+
29
+ def valor
30
+ Valor.por_marca_modelo_e_ano(
31
+ tipo_do_veiculo,
32
+ id_marca,
33
+ id_modelo,
34
+ codigo
35
+ )
36
+ end
37
+
38
+ private
39
+
40
+ def self.endpoint(tipo_do_veiculo, id_marca, id_modelo)
41
+ "#{FipeApi::API_URL}/#{tipo_do_veiculo}/marcas/#{id_marca}/" \
42
+ "modelos/#{id_modelo}/anos"
43
+ end
44
+ end
45
+ end
data/lib/fipeapi/marca.rb CHANGED
@@ -2,23 +2,25 @@ module FipeApi
2
2
  class Marca
3
3
  include ObjetoComConstrutor
4
4
 
5
- attr_accessor :key, :id, :fipe_name, :name, :tipo_do_veiculo, :order
5
+ attr_accessor :codigo, :nome, :tipo_do_veiculo
6
6
 
7
7
  def self.todas(tipo_do_veiculo=CARRO)
8
- HTTParty
9
- .get("#{API_URL}/#{tipo_do_veiculo}/marcas.json")
8
+ MyParty
9
+ .get("#{API_URL}/#{tipo_do_veiculo}/marcas")
10
10
  .parsed_response.map { |marca| Marca.new(tipo_do_veiculo, marca) }
11
+ rescue HTTParty::Error
12
+ nil
11
13
  end
12
14
 
13
15
  def initialize(tipo_do_veiculo, opts = {})
14
16
  self.tipo_do_veiculo = tipo_do_veiculo
15
- self.id = tipo_do_veiculo
17
+ self.codigo = tipo_do_veiculo
16
18
 
17
19
  super(opts)
18
20
  end
19
21
 
20
- def veiculos
21
- Veiculo.por_marca(tipo_do_veiculo, id)
22
+ def modelos
23
+ Modelo.por_marca(tipo_do_veiculo, codigo)
22
24
  end
23
25
  end
24
26
  end
@@ -2,43 +2,30 @@ module FipeApi
2
2
  class Modelo
3
3
  include ObjetoComConstrutor
4
4
 
5
- attr_accessor :fipe_marca, :fipe_codigo, :name, :marca, :key, :veiculo,
6
- :id, :id_veiculo, :tipo_do_veiculo, :id_marca
5
+ attr_accessor :id_marca, :tipo_do_veiculo, :nome, :codigo
7
6
 
8
- def initialize(tipo_do_veiculo, id_marca, id_veiculo, opts = {})
7
+ def self.por_marca(tipo_do_veiculo, id_marca)
8
+ MyParty
9
+ .get("#{API_URL}/#{tipo_do_veiculo}/marcas/#{id_marca}/modelos")
10
+ .parsed_response['modelos'].map do |modelo|
11
+ Modelo.new(tipo_do_veiculo, id_marca, modelo)
12
+ end
13
+ rescue HTTParty::Error
14
+ nil
15
+ end
16
+
17
+ def initialize(tipo_do_veiculo, id_marca, opts = {})
9
18
  self.tipo_do_veiculo = tipo_do_veiculo
10
19
  self.id_marca = id_marca
11
- self.id_veiculo = id_veiculo
12
-
13
20
  super(opts)
14
21
  end
15
22
 
16
- def self.por_marca_e_id_do_veiculo(
17
- tipo_do_veiculo,
18
- id_marca,
19
- codigo_veiculo
20
- )
21
- HTTParty
22
- .get(endpoint(tipo_do_veiculo, id_marca, codigo_veiculo))
23
- .parsed_response.map do |modelo|
24
- Modelo.new(tipo_do_veiculo, id_marca, codigo_veiculo, modelo)
25
- end
26
- end
27
-
28
- def preco
29
- Preco.por_marca_codigo_do_veiculo_e_ano(
23
+ def anos
24
+ Ano.por_marca_e_modelo(
30
25
  tipo_do_veiculo,
31
26
  id_marca,
32
- id_veiculo,
33
- key
27
+ codigo
34
28
  )
35
29
  end
36
-
37
- private
38
-
39
- def self.endpoint(tipo_do_veiculo, id_marca, codigo_veiculo)
40
- "#{FipeApi::API_URL}/#{tipo_do_veiculo}/veiculo/#{id_marca}/" \
41
- "#{codigo_veiculo}.json"
42
- end
43
30
  end
44
31
  end
@@ -0,0 +1,39 @@
1
+ module FipeApi
2
+ class Valor
3
+ include ObjetoComConstrutor
4
+
5
+ attr_accessor :valor, :marca, :modelo, :ano_modelo, :combustivel,
6
+ :codigo_fipe, :mes_referencia, :tipo_veiculo, :sigla_combustivel
7
+
8
+ def self.por_marca_modelo_e_ano(
9
+ tipo_do_veiculo,
10
+ id_marca,
11
+ id_modelo,
12
+ ano
13
+ )
14
+ Valor.new(
15
+ parse_json_response(
16
+ MyParty.get(
17
+ endpoint(tipo_do_veiculo, id_marca, id_modelo, ano)
18
+ ).parsed_response
19
+ )
20
+ )
21
+ rescue HTTParty::Error
22
+ nil
23
+ end
24
+
25
+ private
26
+
27
+ def self.parse_json_response(json_response)
28
+ Hash[json_response.map do |key, value|
29
+ [key.underscore, value]
30
+ end]
31
+ end
32
+
33
+
34
+ def self.endpoint(tipo_do_veiculo, id_marca, id_modelo, ano)
35
+ "#{FipeApi::API_URL}/#{tipo_do_veiculo}/marcas/#{id_marca}/" \
36
+ "modelos/#{id_modelo}/anos/#{ano}"
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module FipeApi
2
- VERSION = '0.1.beta'
2
+ VERSION = '0.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fipeapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.beta
4
+ version: '0.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael da Silva Almeida
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-22 00:00:00.000000000 Z
11
+ date: 2017-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -83,13 +97,15 @@ files:
83
97
  - Rakefile
84
98
  - bin/console
85
99
  - bin/setup
100
+ - check_year_sufix.rb
86
101
  - fipeapi.gemspec
102
+ - lib/core_ext/myparty.rb
87
103
  - lib/fipeapi.rb
104
+ - lib/fipeapi/ano.rb
88
105
  - lib/fipeapi/marca.rb
89
106
  - lib/fipeapi/modelo.rb
90
107
  - lib/fipeapi/objeto_com_construtor.rb
91
- - lib/fipeapi/preco.rb
92
- - lib/fipeapi/veiculo.rb
108
+ - lib/fipeapi/valor.rb
93
109
  - lib/fipeapi/version.rb
94
110
  homepage: http://github.com/stupied4ever/fipeapi
95
111
  licenses:
@@ -106,9 +122,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
122
  version: '0'
107
123
  required_rubygems_version: !ruby/object:Gem::Requirement
108
124
  requirements:
109
- - - ">"
125
+ - - ">="
110
126
  - !ruby/object:Gem::Version
111
- version: 1.3.1
127
+ version: '0'
112
128
  requirements: []
113
129
  rubyforge_project:
114
130
  rubygems_version: 2.5.1
data/lib/fipeapi/preco.rb DELETED
@@ -1,28 +0,0 @@
1
- module FipeApi
2
- class Preco
3
- include ObjetoComConstrutor
4
-
5
- attr_accessor :referencia, :fipe_codigo, :name, :combustivel, :marca,
6
- :ano_modelo, :preco, :key, :time, :veiculo, :id
7
-
8
- def self.por_marca_codigo_do_veiculo_e_ano(
9
- tipo_do_veiculo,
10
- id_marca,
11
- id_veiculo,
12
- key_preco
13
- )
14
- Preco.new(
15
- HTTParty
16
- .get(endpoint(tipo_do_veiculo, id_marca, id_veiculo, key_preco))
17
- .parsed_response
18
- )
19
- end
20
-
21
- private
22
-
23
- def self.endpoint(tipo_do_veiculo, id_marca, id_veiculo, key_preco)
24
- "#{FipeApi::API_URL}/#{tipo_do_veiculo}/veiculo/#{id_marca}/" \
25
- "#{id_veiculo}/#{key_preco}.json"
26
- end
27
- end
28
- end
@@ -1,30 +0,0 @@
1
- module FipeApi
2
- class Veiculo
3
- include ObjetoComConstrutor
4
-
5
- attr_accessor :fipe_marca, :marca, :key, :id, :fipe_name, :tipo, :id_marca,
6
- :name
7
-
8
- def self.por_marca(tipo_do_veiculo, id_marca)
9
- HTTParty
10
- .get("#{API_URL}/#{tipo_do_veiculo}/veiculos/#{id_marca}.json")
11
- .parsed_response.map do |veiculo|
12
- Veiculo.new(tipo_do_veiculo, id_marca, veiculo)
13
- end
14
- end
15
-
16
- def initialize(tipo, id_marca, opts = {})
17
- self.tipo = tipo
18
- self.id_marca = id_marca
19
- super(opts)
20
- end
21
-
22
- def modelos
23
- Modelo.por_marca_e_id_do_veiculo(
24
- tipo,
25
- id_marca,
26
- id
27
- )
28
- end
29
- end
30
- end