fipeapi 0.1.beta → 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.
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