edmunds_api 0.1.3 → 0.1.8

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
- SHA1:
3
- metadata.gz: 73f5adc573d2e1f4905104d789f3b7fee710191c
4
- data.tar.gz: 7f73428ab7acd594426eb14430105afab4d2d1a8
2
+ SHA256:
3
+ metadata.gz: b77f91e47eb5a9b5cb8848166eeab73765ebce2b941da060cb59eb7c0c1d58cd
4
+ data.tar.gz: '00901f5ecd771d640f429c302efd2c5adb1b3dfe78f2baec20df94a4681f4678'
5
5
  SHA512:
6
- metadata.gz: 085e4d256162462ea33f91226382798ef755a90bf3895e080b54f49c86093a35d60d14344e101b5812c3b4a33b0584d27b8aa5387dfe99cb2733490d314a71a9
7
- data.tar.gz: a5b1cff2393aa2d95b571ab54c770ba838672255a047b3cdeb5ca0f76f2be4810504aebd3e4d12f5239afad61d53310d06cc9f1df8d222180c3e6d1745baace8
6
+ metadata.gz: e344196ce8164c02b9d6068099372785df6bd3502e8ffe6b605f19cbce6be09f2643f575f58c74ac2c39f1100e89a0db0791d21fa57a49f12aa956cd8585a73c
7
+ data.tar.gz: f08d86280787d2e08136d6d9897c3efff36a67894ae67cd42952a9b5ee929db792f9b4096f6b18ae9221e726b18f30d1067a35e57b48ce760225c1d1d0abf135
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ repo_token: jiOAN8YTWc1vAphD3slALGYNPhnkJ981n
@@ -0,0 +1,31 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: master
5
+
6
+ env:
7
+ RACK_ENV: test
8
+
9
+ jobs:
10
+ tests:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
16
+ ruby: [2.4, 2.5, 2.6, 2.7, '3.0']
17
+
18
+ name: Tests
19
+ steps:
20
+ - name: Check out repository code
21
+ uses: actions/checkout@v2
22
+
23
+ - name: Setup ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ bundler-cache: true
28
+
29
+ - name: Run spec
30
+ run: |
31
+ bundle exec rspec
data/.simplecov ADDED
@@ -0,0 +1,3 @@
1
+ SimpleCov.start do
2
+ add_group 'lib', 'lib'
3
+ end
data/Gemfile CHANGED
@@ -1,4 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in edmunds_api.gemspec
3
+ group :test do
4
+ gem 'coveralls', require: false
5
+ gem 'simplecov'
6
+ end
7
+
4
8
  gemspec
data/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ ![Tests](https://github.com/webstreak/edmunds-api-ruby/actions/workflows/ci.yml/badge.svg)
2
+ [![Code Climate](https://codeclimate.com/github/webstreak/edmunds-api-ruby/badges/gpa.svg)](https://codeclimate.com/github/webstreak/edmunds-api-ruby)
3
+ [![Coverage Status](https://coveralls.io/repos/github/webstreak/edmunds-api-ruby/badge.svg)](https://coveralls.io/github/webstreak/edmunds-api-ruby)
4
+ [![Gem Version](https://badge.fury.io/rb/edmunds_api.svg)](https://badge.fury.io/rb/edmunds_api)
5
+ [![RubyGems](http://img.shields.io/gem/dt/edmunds_api.svg?style=flat)](http://rubygems.org/gems/edmunds_api)
6
+
1
7
  Edmunds Api ruby client.
2
8
 
3
9
  > *Status*: Beta. We are preparing the project for public release soon
@@ -7,7 +13,7 @@ Edmunds Api ruby client.
7
13
  Add this line to your application's Gemfile:
8
14
 
9
15
  ```ruby
10
- gem 'edmunds_api', '~> 0.1.3'
16
+ gem 'edmunds_api', '~> 0.1.8'
11
17
  ```
12
18
 
13
19
  And then execute:
@@ -24,6 +30,7 @@ Add api_key in initializer:
24
30
  ```ruby
25
31
  Edmunds.configure do |config|
26
32
  config.api_key = 'your-api-key'
33
+ config.timeout = 5
27
34
  end
28
35
  ```
29
36
  Basic usage:
@@ -36,6 +43,10 @@ You can also pass options to an Api endpoint:
36
43
  vehicles_api = Edmunds::Api.new.vehicles
37
44
  vehicles_api.make('Lexus', {state: 'new'})
38
45
  ```
46
+ See supported options for each Api endpoint on [Edmunds website](http://developer.edmunds.com/api-documentation/overview/)
47
+
48
+ ## Supported endpoints
49
+ [Endpoints](endpoints.md)
39
50
 
40
51
  ## Contributing
41
52
 
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "bundler/setup"
4
- require "edmunds-api-ruby"
4
+ require "edmunds_api"
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
data/edmunds_api.gemspec CHANGED
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'http', '~> 2.0'
23
23
  spec.add_dependency 'configurations', '~> 2.2'
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.13'
26
- spec.add_development_dependency 'rake', '~> 11.3'
25
+ spec.add_development_dependency 'bundler', '> 1'
26
+ spec.add_development_dependency 'rake', '~> 12.3'
27
27
  spec.add_development_dependency 'rspec', '~> 3.5'
28
28
  spec.add_development_dependency 'webmock', '~> 2.1'
29
29
  end
data/endpoints.md ADDED
@@ -0,0 +1,116 @@
1
+ ## Vehicle API
2
+
3
+ ### Makes
4
+ [Makes EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_make/v2/)
5
+
6
+ | Endpoint | Description |
7
+ |-----------|-------------|
8
+ | `Edmunds::Api.new.vehicles.makes.count(options)` | Total Count of Car Makes |
9
+ | `Edmunds::Api.new.vehicles.makes.all_makes(options)` | A List of Car Makes |
10
+ | `Edmunds::Api.new.vehicles.makes.make("Make", options)` | Details on a Specific Car Make |
11
+
12
+ ### Models
13
+ [Models EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_model/v2/)
14
+
15
+ | Endpoint | Description |
16
+ |-----------|-------------|
17
+ | `Edmunds::Api.new.vehicles.models.count("Make", options)` | Total Count of Models for a Car Make |
18
+ | `Edmunds::Api.new.vehicles.models.models("Make", options)` | Get a List of Car Models for a Specific Car Make |
19
+ | `Edmunds::Api.new.vehicles.models.model("Make", "Model", options)` | Get Details on a Specific Car Model |
20
+
21
+ ### Styles
22
+ [Styles EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_style/v2/)
23
+
24
+ | Endpoint | Description |
25
+ |-----------|-------------|
26
+ | `Edmunds::Api.new.vehicles.styles.count(options)` | Styles Count |
27
+ | `Edmunds::Api.new.vehicles.styles.make_count("Make", options)` | Style Count by Car Make |
28
+ | `Edmunds::Api.new.vehicles.styles.make_model_count("Make", "Model", options)` | Style Count by Car Make and Model |
29
+ | `Edmunds::Api.new.vehicles.styles.make_model_year_count("Make", "Model", "Year", options)` | Style Count by Car Make/Model/Year |
30
+ | `Edmunds::Api.new.vehicles.styles.id(style_id, options)` | Car Style Details by Car Style ID |
31
+ | `Edmunds::Api.new.vehicles.styles.make_model_year("Make", "Model", "Year", options)` | Car Style Details by Car Make/Model/Year |
32
+ | `Edmunds::Api.new.vehicles.styles.chrome_data(chrome_id, options)` | Car Style Details by Car Chrome Data ID |
33
+
34
+ ### Engines
35
+ [Engines EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_engine_and_transmission/v2/)
36
+
37
+ | Endpoint | Description |
38
+ |-----------|-------------|
39
+ | `Edmunds::Api.new.vehicles.engines.details(engine_id)` | Engine Details by ID |
40
+ | `Edmunds::Api.new.vehicles.engines.by_style_id(style_id, options)` | Engines for a Car Style |
41
+
42
+ ### Transmissions
43
+ [Transmissions EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_engine_and_transmission/v2/)
44
+
45
+ | Endpoint | Description |
46
+ |-----------|-------------|
47
+ | `Edmunds::Api.new.vehicles.transmissions.details(transmission_id)` | Transmission Details by ID |
48
+ | `Edmunds::Api.new.vehicles.transmissions.by_style_id(style_id, options)` | Transmissions for a Car Style |
49
+
50
+ ### Colors
51
+ [Colors EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_colors_and_options/v2/)
52
+
53
+ | Endpoint | Description |
54
+ |-----------|-------------|
55
+ | `Edmunds::Api.new.vehicles.colors.details(color_id)` | Color Details by ID |
56
+ | `Edmunds::Api.new.vehicles.colors.by_style_id(style_id, options)` | Colors for a Car Style |
57
+
58
+ ### Options
59
+ [Options EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_colors_and_options/v2/)
60
+
61
+ | Endpoint | Description |
62
+ |-----------|-------------|
63
+ | `Edmunds::Api.new.vehicles.options.details(option_id)` | Option Details by ID |
64
+ | `Edmunds::Api.new.vehicles.options.by_style_id(style_id, options)` | Options for a Car Style |
65
+
66
+ ### Equipment
67
+ [Equipment EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_equipment/v2/)
68
+
69
+ | Endpoint | Description |
70
+ |-----------|-------------|
71
+ | `Edmunds::Api.new.vehicles.equipment.details(equipment_id)` | Equipment Details by ID |
72
+ | `Edmunds::Api.new.vehicles.equipment.by_style_id(style_id, options)` | Equipment for a Car Style |
73
+
74
+ ### Squish vin
75
+ [Squish vin EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_squishvin/v2/)
76
+
77
+ | Endpoint | Description |
78
+ |-----------|-------------|
79
+ | `Edmunds::Api.new.vehicles.squishvins.decode(VIN)` | Vehicle Details by Squish VIN |
80
+
81
+ ### VIN Decoding
82
+ [VIN decoding EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/spec_vin_decoding/v2/)
83
+
84
+ | Endpoint | Description |
85
+ |-----------|-------------|
86
+ | `Edmunds::Api.new.vehicles.vin.decode(VIN, options)` | Vehicle Details by VIN |
87
+
88
+ ### Safety
89
+ [Safety EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/service_safety/v2/)
90
+
91
+ | Endpoint | Description |
92
+ |-----------|-------------|
93
+ | `Edmunds::Api.new.vehicles.safety.ratings(style_id)` | Safety ratings by Style ID |
94
+ | `Edmunds::Api.new.vehicles.safety.ratings("Make", "Model", "Year")` | Safety ratings by Make/Model/Year |
95
+
96
+ ### Letter Grade Rating
97
+ [Grades rating EdmundsApi docs](http://developer.edmunds.com/api-documentation/vehicle/content_letter_grade/v2/)
98
+
99
+ | Endpoint | Description |
100
+ |-----------|-------------|
101
+ | `Edmunds::Api.new.vehicles.grades.by_style_id(style_id)` | Rating Details by Style ID |
102
+ | `Edmunds::Api.new.vehicles.grades.details("Make", "Model", "Year")` | All Rating Details Reviews by Make/Model/Year |
103
+ | `Edmunds::Api.new.vehicles.grades.rating("Make", "Model", "Year")` | Letter Grade Rating by Make/Model/Year |
104
+ | `Edmunds::Api.new.vehicles.grades.by_review_id("Make", "Model", "Year", review_id)` | Rating Details by Make/Model/Year and Review ID |
105
+
106
+ ## Media API
107
+
108
+ ### Photos
109
+ [Photos EdmundsApi docs](http://developer.edmunds.com/api-documentation/media/photos/v2/)
110
+
111
+ | Endpoint | Description |
112
+ |-----------|-------------|
113
+ | `Edmunds::Api.new.media.photos.by_year_make_model("Year", "Make", "Model", options)` | Find photos by Make/Model/Year |
114
+ | `Edmunds::Api.new.media.photos.by_tag(tag, options)` | Find photos by Tag |
115
+ | `Edmunds::Api.new.media.photos.by_style_id(style_id, options)` | Find photos by Style ID |
116
+ | `Edmunds::Api.new.media.photos.by_make_model("Make", "Model", options)` | Find photos by Make/Model |
@@ -1,23 +1,32 @@
1
+ require 'timeout'
2
+
1
3
  module Edmunds
2
4
  module Request
3
5
 
4
6
  API_URL = 'https://api.edmunds.com/api'
7
+ API_VERSION = Edmunds.configuration.api_version.to_s
8
+ DEFAULT_TIMEOUT = 15
5
9
 
6
10
  def api_call(api_path, path, options={})
7
11
  url = build_api_url api_path, path
8
12
  request_params = merge_required_params options
9
- response = HTTP.headers(http_headers).get(url, params: request_params)
13
+ raise 'No api_key found' if request_params[:api_key].empty?
14
+ response = Timeout::timeout(timeout) {
15
+ HTTP.headers(http_headers).get(url, params: request_params)
16
+ }
10
17
  parse_response response
11
18
  end
12
19
 
20
+ private
21
+
13
22
  def build_api_url(api_path, path)
14
- api_version = 'v' + Edmunds.configuration.api_version.to_s
23
+ api_version = 'v' + API_VERSION
15
24
  API_URL + '/' + api_path + '/' + api_version + path
16
25
  end
17
26
 
18
27
  def merge_required_params(options)
19
28
  {
20
- api_key: Edmunds.configuration.api_key,
29
+ api_key: Edmunds.configuration.api_key.to_s.strip,
21
30
  fmt: Edmunds.configuration.request_params.fmt
22
31
  }.merge(options)
23
32
  end
@@ -29,6 +38,10 @@ module Edmunds
29
38
  }
30
39
  end
31
40
 
41
+ def timeout
42
+ Edmunds.configuration.timeout || DEFAULT_TIMEOUT
43
+ end
44
+
32
45
  def parse_response(response)
33
46
  begin
34
47
  body = JSON.parse response.body
@@ -6,7 +6,7 @@ module Edmunds
6
6
  send_request "/#{make}/models/count", options
7
7
  end
8
8
 
9
- def models(make, options={})
9
+ def all_models(make, options={})
10
10
  send_request "/#{make}/models", options
11
11
  end
12
12
 
@@ -1,3 +1,3 @@
1
1
  module Edmunds
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edmunds_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Belyaev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-29 00:00:00.000000000 Z
11
+ date: 2021-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -42,30 +42,30 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.13'
47
+ version: '1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.13'
54
+ version: '1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '11.3'
61
+ version: '12.3'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '11.3'
68
+ version: '12.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -101,8 +101,11 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
+ - ".coveralls.yml"
105
+ - ".github/workflows/ci.yml"
104
106
  - ".gitignore"
105
107
  - ".rspec"
108
+ - ".simplecov"
106
109
  - Gemfile
107
110
  - LICENSE.txt
108
111
  - README.md
@@ -110,6 +113,7 @@ files:
110
113
  - bin/console
111
114
  - bin/setup
112
115
  - edmunds_api.gemspec
116
+ - endpoints.md
113
117
  - lib/edmunds/api.rb
114
118
  - lib/edmunds/configuration.rb
115
119
  - lib/edmunds/error.rb
@@ -135,7 +139,7 @@ homepage: https://github.com/webstreak/edmunds-api-ruby
135
139
  licenses:
136
140
  - MIT
137
141
  metadata: {}
138
- post_install_message:
142
+ post_install_message:
139
143
  rdoc_options: []
140
144
  require_paths:
141
145
  - lib
@@ -150,9 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
154
  - !ruby/object:Gem::Version
151
155
  version: '0'
152
156
  requirements: []
153
- rubyforge_project:
154
- rubygems_version: 2.5.1
155
- signing_key:
157
+ rubygems_version: 3.2.3
158
+ signing_key:
156
159
  specification_version: 4
157
160
  summary: Edmunds Api ruby client
158
161
  test_files: []