velov 0.1.8 → 0.1.10

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: 49505933cd5632137d5cda7a083c4a91c5a0ab78
4
- data.tar.gz: f03b66d52400946f4c663ea3d6350e60d744ba87
3
+ metadata.gz: 27fccd8e49639215948efb3253d5a12b6cbb51c0
4
+ data.tar.gz: e0bc547822e46c11e1d34e5157c6df6bbea9d33a
5
5
  SHA512:
6
- metadata.gz: a2a58f4ad7b04c9640cd7cf4919709b13affe4b2af9d63faa70acbf713753b9a020a138610e6c4dd2af374486f3afec3b8b5b65d8a159109fb76fbf3a684e7e0
7
- data.tar.gz: f6f59dffed3ccbcab969df56556296ce244a5a83260e70a7efb49aca4865d6f6e9921ba1338d7daa23b0b95f26302a5c5b4ba9979f1fb7c1f1bf093a39340ba5
6
+ metadata.gz: ea28fd31b982735326b6aef066df67e6dd6d7e519e6132350e862339562c36e0d7f91a5a4fe99552e72379b76728da22eb0208037c35721b15e91a2ce84e1668
7
+ data.tar.gz: fa3aeec19b9a4c91c2c84b292f14fbadca41ddfc4750d49e823e2ffa8c5e529b8a3e3c56b8e2366cb44e7ef63773800428c6430b31b50a633271ad1fc7ef147c
data/lib/velov/api.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  module Velov
2
+ # API logic extracted into a class
2
3
  class API
3
4
  API_HOST = 'https://download.data.grandlyon.com'
4
- API_ENDPOINT = "/ws/smartdata/jcd_jcdecaux.jcdvelov/all.json"
5
- # DRY API Calls
5
+ API_ENDPOINT = '/ws/smartdata/jcd_jcdecaux.jcdvelov/all.json'
6
6
  def self.get(params = {})
7
7
  connection ||= Faraday.new API_HOST do |conn|
8
- conn.response :json, :content_type => /\bjson$/
8
+ conn.response :json, content_type: /\bjson$/
9
9
  conn.adapter Faraday.default_adapter
10
10
  end
11
11
  connection.get API_ENDPOINT, params
12
12
  end
13
13
  end
14
- end
14
+ end
data/lib/velov/station.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module Velov
2
+ # A Velo'v station
2
3
  class Station
3
4
  include Virtus.model
4
5
 
@@ -27,7 +28,7 @@ module Velov
27
28
  @address_complement = params[Velov::ADDRESS_COMPLEMENT]
28
29
  @city = params[Velov::CITY]
29
30
  @district_number = params[Velov::DISTRICT_NUMBER].to_i
30
- @bonus = params[Velov::BONUS] == "Oui"
31
+ @bonus = params[Velov::BONUS] == 'Oui'
31
32
  @position = params[Velov::POSITION]
32
33
  @lat = params[Velov::LATITUDE].to_f
33
34
  @lng = params[Velov::LONGITUDE].to_f
@@ -40,13 +41,17 @@ module Velov
40
41
  @last_update = DateTime.parse(params[Velov::LAST_UPDATE])
41
42
  end
42
43
 
44
+ # Find a bike Station.
45
+ #
46
+ # @param [Integer] station number
47
+ # @return [Station] Station object, nil if not found
43
48
  def self.find_by_number(number)
44
- # nil if not found
45
- StationList.fetch({ "field" => "number", "value" => number}).to_a.first
49
+ StationList.fetch('field' => 'number', 'value' => number).to_a.first
46
50
  end
47
51
 
48
- def distance_to(lat,lng)
49
- Geocoder::Calculations.distance_between([@lat,@lng], [lat,lng], units: :km)
52
+ def distance_to(lat, lng)
53
+ Geocoder::Calculations.distance_between([@lat, @lng], [lat, lng],
54
+ units: :km)
50
55
  end
51
56
  end
52
- end
57
+ end
@@ -1,9 +1,32 @@
1
1
  module Velov
2
+ # A Velo'v station list
2
3
  class StationList
3
4
  include Virtus.model
4
5
 
5
6
  attribute :list, Array[Station], default: []
6
7
 
8
+ # Fetch data of all stations
9
+ def self.fetch(params = {})
10
+ response = API.get(params)
11
+
12
+ build_list(response.body)
13
+ end
14
+
15
+ def self.from_json(json)
16
+ build_list(JSON.parse(json))
17
+ end
18
+
19
+ def self.build_list(data)
20
+ station_list = StationList.new
21
+
22
+ data['values'].each do |station_params|
23
+ station_list.add_station(station_params)
24
+ end
25
+
26
+ station_list
27
+ end
28
+ private_class_method :build_list
29
+
7
30
  def add_station(params)
8
31
  @list << Station.new(params)
9
32
  end
@@ -16,16 +39,9 @@ module Velov
16
39
  @list
17
40
  end
18
41
 
19
- # Fetch data of all stations
20
- def self.fetch(params = {})
21
- response = API.get(params)
22
-
23
- build_list(response.body)
24
- end
25
-
26
- def nearest(lat,lng)
42
+ def nearest(lat, lng)
27
43
  @list.sort_by do |station|
28
- station.distance_to(lat,lng)
44
+ station.distance_to(lat, lng)
29
45
  end
30
46
  end
31
47
 
@@ -42,30 +58,14 @@ module Velov
42
58
  end
43
59
 
44
60
  def walking_distance(start, arrival)
45
- start_station = self.nearest(start.first, start.last).find do |station|
46
- station.status == "OPEN" and station.available_bikes > 0
61
+ start_station = nearest(start.first, start.last).find do |station|
62
+ station.status == 'OPEN' && station.available_bikes > 0
47
63
  end
48
- arrival_station = self.nearest(arrival.first, arrival.last).find do |station|
49
- station.status == "OPEN" and station.available_bike_stands > 0
64
+ arrival_station = nearest(arrival.first, arrival.last).find do |station|
65
+ station.status == 'OPEN' && station.available_bike_stands > 0
50
66
  end
51
- start_station.distance_to(start.first, start.last) + arrival_station.distance_to(arrival.first, arrival.last)
52
- end
53
-
54
- def self.from_json(json)
55
- build_list(JSON.parse(json))
67
+ start_station.distance_to(start.first, start.last) +
68
+ arrival_station.distance_to(arrival.first, arrival.last)
56
69
  end
57
-
58
- private
59
- def self.build_list(data)
60
- station_list = StationList.new
61
-
62
- data["values"].each do |station_params|
63
- station_list.add_station(station_params)
64
- end
65
-
66
- station_list
67
- end
68
-
69
-
70
70
  end
71
- end
71
+ end
data/lib/velov/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Velov
2
- VERSION = "0.1.8"
2
+ VERSION = '0.1.10'
3
3
  end
data/lib/velov.rb CHANGED
@@ -2,13 +2,12 @@ require 'virtus'
2
2
  require 'faraday'
3
3
  require 'faraday_middleware'
4
4
  require 'geocoder'
5
- require "velov/version"
6
- require "velov/api"
7
- require "velov/station"
8
- require "velov/station_list"
9
-
5
+ require 'velov/version'
6
+ require 'velov/api'
7
+ require 'velov/station'
8
+ require 'velov/station_list'
9
+ # Define API Constants
10
10
  module Velov
11
- # Define API Constants
12
11
  NUMBER = 0
13
12
  NAME = 1
14
13
  ADDRESS = 2
data/velov.gemspec CHANGED
@@ -18,12 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", '~> 1.6'
22
- spec.add_development_dependency "rake" , '~> 10.3'
23
- spec.add_development_dependency "rspec", '~> 2.99'
21
+ spec.add_development_dependency "bundler", '~> 1.9'
22
+ spec.add_development_dependency "rake" , '~> 10.4'
23
+ spec.add_development_dependency "rspec", '~> 3.2'
24
24
  spec.add_development_dependency "vcr", '~> 2.9'
25
- spec.add_development_dependency "webmock", '~> 1.18'
26
- spec.add_development_dependency "coveralls", '~> 0.7'
25
+ spec.add_development_dependency "webmock", '~> 1.21'
26
+ spec.add_development_dependency "coveralls", '~> 0.8'
27
27
 
28
28
  spec.add_runtime_dependency "faraday", '~> 0.9'
29
29
  spec.add_runtime_dependency "faraday_middleware", '~> 0.9'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: velov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre-Baptiste Béchu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-07 00:00:00.000000000 Z
11
+ date: 2015-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '1.9'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.3'
33
+ version: '10.4'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.3'
40
+ version: '10.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.99'
47
+ version: '3.2'
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: '2.99'
54
+ version: '3.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.18'
75
+ version: '1.21'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.18'
82
+ version: '1.21'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: coveralls
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.7'
89
+ version: '0.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.7'
96
+ version: '0.8'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: faraday
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
197
  version: '0'
198
198
  requirements: []
199
199
  rubyforge_project:
200
- rubygems_version: 2.2.0
200
+ rubygems_version: 2.2.2
201
201
  signing_key:
202
202
  specification_version: 4
203
203
  summary: Ruby Wrapper for Velov API (Public Bike Sharing System of Lyon, France)