velov 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -1
- data/lib/velov/station.rb +4 -0
- data/lib/velov/station_list.rb +18 -0
- data/lib/velov/version.rb +1 -1
- data/lib/velov.rb +1 -0
- data/spec/station_list_spec.rb +16 -5
- data/spec/station_spec.rb +10 -0
- data/velov.gemspec +2 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e04bf3b600753953de4df6992806321b511dbb07
|
4
|
+
data.tar.gz: ef3254e0cd9e2e89570536abc905dff865f6b362
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 375040c3f68d210b23fd7a0b10c7104fb4651dcd23f0e42a5901a3c69a1f9c2b3ef67cf242f9e5847f3bf6b456631c44baed21dbb01f73ac3f942376eafca250
|
7
|
+
data.tar.gz: b88e547a1753f94d7eed89667c1d05100cc57e75e6fd299c51bea1b7f6d550d43842e2eba8df16622a1c7cf4d699d6f0fe6a7870b98248b112a523e0053dd37a
|
data/README.md
CHANGED
@@ -18,7 +18,21 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
### Retrieve all stations
|
22
|
+
You can fetch data of all stations in one call:
|
23
|
+
|
24
|
+
station_list = Velov::StationList.fetch
|
25
|
+
|
26
|
+
Use an array to navigate through the data:
|
27
|
+
|
28
|
+
total_available_bikes = station_list.to_a.map(&:available_bikes).inject(:+)
|
29
|
+
|
30
|
+
### Play with one station
|
31
|
+
You can find a specific station with its ID:
|
32
|
+
|
33
|
+
station = Velov::Station.find_by_number(10117)
|
34
|
+
station.lat
|
35
|
+
station.lng
|
22
36
|
|
23
37
|
## Contributing
|
24
38
|
|
data/lib/velov/station.rb
CHANGED
data/lib/velov/station_list.rb
CHANGED
@@ -32,5 +32,23 @@ module Velov
|
|
32
32
|
station_list
|
33
33
|
end
|
34
34
|
|
35
|
+
def nearest(lat,lng)
|
36
|
+
@list.sort_by do |station|
|
37
|
+
station.distance_to(lat,lng)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def bike_stands
|
42
|
+
@list.map(&:bike_stands).inject(:+)
|
43
|
+
end
|
44
|
+
|
45
|
+
def available_bike_stands
|
46
|
+
@list.map(&:available_bike_stands).inject(:+)
|
47
|
+
end
|
48
|
+
|
49
|
+
def available_bikes
|
50
|
+
@list.map(&:available_bikes).inject(:+)
|
51
|
+
end
|
52
|
+
|
35
53
|
end
|
36
54
|
end
|
data/lib/velov/version.rb
CHANGED
data/lib/velov.rb
CHANGED
data/spec/station_list_spec.rb
CHANGED
@@ -1,13 +1,24 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Velov::StationList do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
@station_list = Velov::StationList.fetch
|
8
|
-
end
|
4
|
+
before(:each) do
|
5
|
+
VCR.use_cassette "fetch_valid_station_list" do
|
6
|
+
@station_list = Velov::StationList.fetch
|
9
7
|
end
|
8
|
+
end
|
9
|
+
describe ":fetch" do
|
10
|
+
|
10
11
|
it { expect(@station_list.size).to eq 349 }
|
11
12
|
it { expect(@station_list.to_a.length).to eq 349}
|
12
13
|
end
|
14
|
+
|
15
|
+
describe ":nearest" do
|
16
|
+
it { expect(@station_list.nearest(45.764563,4.892333).first.number).to eq 10117 }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "sums" do
|
20
|
+
it { expect(@station_list.bike_stands).to eq 6832}
|
21
|
+
it { expect(@station_list.available_bike_stands).to eq 3544}
|
22
|
+
it { expect(@station_list.available_bikes).to eq 3031}
|
23
|
+
end
|
13
24
|
end
|
data/spec/station_spec.rb
CHANGED
@@ -35,4 +35,14 @@ describe Velov::Station do
|
|
35
35
|
it { expect(@station).to be nil}
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
describe ':distance_to' do
|
40
|
+
before(:each) do
|
41
|
+
VCR.use_cassette "find_valid_station_by_number" do
|
42
|
+
@station = Velov::Station.find_by_number(10117)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it { expect(@station.distance_to(45.8,4.9)).to eq 2.4761240501617032 }
|
47
|
+
end
|
38
48
|
end
|
data/velov.gemspec
CHANGED
@@ -26,5 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_runtime_dependency "faraday", '~> 0.9'
|
28
28
|
spec.add_runtime_dependency "faraday_middleware", '~> 0.9'
|
29
|
-
spec.add_runtime_dependency "virtus",
|
29
|
+
spec.add_runtime_dependency "virtus",'~> 1.0'
|
30
|
+
spec.add_runtime_dependency "geocoder", '~> 1.2'
|
30
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: velov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre-Baptiste Béchu
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '1.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: geocoder
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.2'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.2'
|
125
139
|
description: This Wrapper allows you to play with objects like bike's stations ! It's
|
126
140
|
possible to add more features, like "nearest station around me".
|
127
141
|
email:
|