velov 0.1.8 → 0.1.10

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: 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)