velov 0.1.4 → 0.1.5

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: 19060282b2c49291a65fd395377631ee08d7c4b0
4
- data.tar.gz: 490e80bf8803b70335312334a0f3955ada2a8f57
3
+ metadata.gz: 57fb179c3645ce9deadf22d1a5ab73d100b7a2d9
4
+ data.tar.gz: 8e9eb1b3254f3729ee67b7c3979fd4126f473bb0
5
5
  SHA512:
6
- metadata.gz: 36f8da7edcd5857fb35485d06ccb9176710516d4890c4bd029f20ee89667488456401698f16adaab54546465d6d1aad2fafbe11183798ab1d57ff436f208b8bd
7
- data.tar.gz: 0548ad7fe8ab24a31dcefeee7188ddbff04f3eeea586ab3d62acfb55397985ce21cb10cdd1baac3d35b97a5ea78884afb1c862744833675e3a8996d2db729e6a
6
+ metadata.gz: fbd1a46125e1128e2cb5785f14339e6dcc075bc3b2060dc54910a5d31fe56c46fd0e5360d75622a091ed7654b5162e0f462c1806b5bfc85c71577a87ec14f215
7
+ data.tar.gz: f5bd27317ef9a7b87a082c4d8266f4189b53a1c5596290a8b6e3b6f64abac281f47f43fe9f4eeaf4f29a7ed113495c19f3f2b4e5849e5ce2f04905c8bbca341d
data/README.md CHANGED
@@ -1,42 +1,107 @@
1
1
  # Velov
2
2
 
3
- Velov is a ruby wrapper for [Velov API](https://download.data.grandlyon.com/ws/smartdata/jcd_jcdecaux.jcdvelov.json) (Public Bike Sharing System of Lyon, France). This Wrapper allows you to play with objects like bike's stations ! It's possible to add more features in the future, like "nearest station around me".
3
+ Velov is a ruby wrapper for [Velov API](https://download.data.grandlyon.com/ws/smartdata/jcd_jcdecaux.jcdvelov.json) (Public Bike Sharing System of Lyon, France). This Wrapper allows you to play with objects like bike's stations !
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/velov.svg)](http://badge.fury.io/rb/velov)
6
+ [![Build Status](https://travis-ci.org/pbechu/velov.svg?branch=v0.1.4)](https://travis-ci.org/pbechu/velov)
7
+ [![Coverage Status](https://img.shields.io/coveralls/pbechu/velov.svg)](https://coveralls.io/r/pbechu/velov?branch=master)
8
+ [![Code Climate](https://codeclimate.com/github/pbechu/velov/badges/gpa.svg)](https://codeclimate.com/github/pbechu/velov)
9
+ [![Dependency Status](https://gemnasium.com/pbechu/velov.svg)](https://gemnasium.com/pbechu/velov)
4
10
 
5
11
  ## Installation
6
12
 
7
13
  Add this line to your application's Gemfile:
8
14
 
9
- gem 'velov'
15
+ ```ruby
16
+ gem 'velov'
17
+ ```
10
18
 
11
19
  And then execute:
12
20
 
13
- $ bundle
21
+ ```console
22
+ bundle install
23
+ ```
14
24
 
15
25
  Or install it yourself as:
16
26
 
17
- $ gem install velov
27
+ ```console
28
+ gem install velov
29
+ ```
18
30
 
19
31
  ## Usage
20
32
 
21
- ### Retrieve all stations
22
- You can fetch data of all stations in one call:
23
-
24
- station_list = Velov::StationList.fetch
33
+ ### Start with the Velov API
34
+
35
+ Fetch data of all stations in one call:
36
+
37
+ ```ruby
38
+ station_list = Velov::StationList.fetch
39
+ station_list.size # => 349
40
+ ```
41
+
42
+ Navigate through the data with an Array of Station:
43
+
44
+ ```ruby
45
+ stations = station_list.to_a
46
+
47
+ stations.each do |station|
48
+ puts station.name
49
+ end
50
+ ```
51
+
52
+ ### Play with stations
53
+
54
+ Find a specific station with its internal ID:
55
+
56
+ ```ruby
57
+ station = Velov::Station.find_by_number(10117)
58
+ station.status # => "OPEN"
59
+ ```
60
+
61
+ Want more attributes ? Try one of these for a station:
62
+ - number (internal ID)
63
+ - name
64
+ - address
65
+ - address_complement
66
+ - city
67
+ - district_number
68
+ - [bonus](http://www.velov.grandlyon.com/FAQ-Question-Reponse.59+M55f945504e2.0.html)
69
+ - position (some indications to find the station)
70
+ - lat (latitude)
71
+ - lng (longitude)
72
+ - bike_stands (count of bike stands at this station)
73
+ - status ("OPEN" or "CLOSED")
74
+ - available_bike_stands (free slots)
75
+ - available_bikes ([ready to ride ?](http://www.annivelov.fr/))
76
+ - availability_code (internal usage)
77
+ - availability_label (internal usage)
78
+ - last_update (last time data were updated)
79
+
80
+ ### Use the data
81
+
82
+ Get reports for a list of stations:
83
+
84
+ ```ruby
85
+ station_list.bike_stands # => 6832
86
+ station_list.available_bike_stands # => 3534
87
+ station_list.available_bikes # => 3022
88
+ ```
89
+
90
+ Discover if you can reach a specific station:
25
91
 
26
- Use an array to navigate through the data:
27
-
28
- total_available_bikes = station_list.to_a.map(&:available_bikes).inject(:+)
92
+ ```ruby
93
+ station.distance_to(45.8,4.9) # => 2.48 (km)
94
+ ```
29
95
 
30
- ### Play with one station
31
- You can find a specific station with its ID:
96
+ Find the nearest stations around you:
32
97
 
33
- station = Velov::Station.find_by_number(10117)
34
- station.lat
35
- station.lng
98
+ ```ruby
99
+ station_list.nearest(45.8,4.9)
100
+ ```
36
101
 
37
102
  ## Contributing
38
103
 
39
- 1. Fork it ( http://github.com/pbechu/velov/fork )
104
+ 1. [Fork it](http://github.com/pbechu/velov/fork)
40
105
  2. Create your feature branch (`git checkout -b my-new-feature`)
41
106
  3. Commit your changes (`git commit -am 'Add some feature'`)
42
107
  4. Push to the branch (`git push origin my-new-feature`)
@@ -6,6 +6,7 @@ require "velov/version"
6
6
  require "velov/api"
7
7
  require "velov/station"
8
8
  require "velov/station_list"
9
+
9
10
  module Velov
10
11
  # Define API Constants
11
12
  NUMBER = 0
@@ -14,11 +15,15 @@ module Velov
14
15
  ADDRESS_COMPLEMENT = 3
15
16
  CITY = 4
16
17
  DISTRICT_NUMBER = 5
18
+ BONUS = 6
19
+ POSITION = 7
17
20
  LATITUDE = 8
18
21
  LONGITUDE = 9
19
22
  BIKE_STANDS = 10
20
23
  STATUS = 11
21
24
  AVAILABLE_BIKE_STANDS = 12
22
25
  AVAILABLE_BIKES = 13
26
+ AVAILABILITY_CODE = 14
27
+ AVAILABILITY_LABEL = 15
23
28
  LAST_UPDATE = 18
24
29
  end
@@ -8,12 +8,16 @@ module Velov
8
8
  attribute :address_complement, String
9
9
  attribute :city, String
10
10
  attribute :district_number, Integer
11
+ attribute :bonus, Boolean
12
+ attribute :position, String
11
13
  attribute :lat, Float
12
14
  attribute :lng, Float
13
15
  attribute :bike_stands, Integer
14
16
  attribute :status, String
15
17
  attribute :available_bike_stands, Integer
16
18
  attribute :available_bikes, Integer
19
+ attribute :availability_code, Integer
20
+ attribute :availability_label, String
17
21
  attribute :last_update, DateTime
18
22
 
19
23
  def initialize(params)
@@ -23,12 +27,16 @@ module Velov
23
27
  @address_complement = params[Velov::ADDRESS_COMPLEMENT]
24
28
  @city = params[Velov::CITY]
25
29
  @district_number = params[Velov::DISTRICT_NUMBER].to_i
30
+ @bonus = params[Velov::BONUS] == "Oui"
31
+ @position = params[Velov::POSITION]
26
32
  @lat = params[Velov::LATITUDE].to_f
27
33
  @lng = params[Velov::LONGITUDE].to_f
28
34
  @bike_stands = params[Velov::BIKE_STANDS].to_i
29
35
  @status = params[Velov::STATUS]
30
36
  @available_bike_stands = params[Velov::AVAILABLE_BIKE_STANDS].to_i
31
37
  @available_bikes = params[Velov::AVAILABLE_BIKES].to_i
38
+ @availability_code = params[Velov::AVAILABILITY_CODE].to_i
39
+ @availability_label = params[Velov::AVAILABILITY_LABEL]
32
40
  @last_update = DateTime.parse(params[Velov::LAST_UPDATE])
33
41
  end
34
42
 
@@ -38,7 +46,7 @@ module Velov
38
46
  end
39
47
 
40
48
  def distance_to(lat,lng)
41
- Geocoder::Calculations.distance_between([@lat,@lng], [lat,lng])
49
+ Geocoder::Calculations.distance_between([@lat,@lng], [lat,lng], units: :km)
42
50
  end
43
51
  end
44
52
  end
@@ -1,3 +1,3 @@
1
1
  module Velov
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -16,12 +16,16 @@ describe Velov::Station do
16
16
  it { expect(@station.address_complement).to eq "None"}
17
17
  it { expect(@station.city).to eq "VILLEURBANNE"}
18
18
  it { expect(@station.district_number).to eq 117}
19
+ it { expect(@station.bonus).to eq false}
20
+ it { expect(@station.position).to eq "Centre de quartier, commerces"}
19
21
  it { expect(@station.lat).to eq 45.7645636665294000}
20
22
  it { expect(@station.lng).to eq 4.8923336071821100}
21
23
  it { expect(@station.bike_stands).to eq 22}
22
24
  it { expect(@station.status).to eq "OPEN"}
23
25
  it { expect(@station.available_bike_stands).to eq 12}
24
26
  it { expect(@station.available_bikes).to eq 10}
27
+ it { expect(@station.availability_code).to eq 1}
28
+ it { expect(@station.availability_label).to eq "Vert"}
25
29
  it { expect(@station.last_update).to eq DateTime.new(2014,8,21,14,50,31) }
26
30
 
27
31
  end
@@ -44,6 +48,6 @@ describe Velov::Station do
44
48
  end
45
49
  end
46
50
 
47
- it { expect(@station.distance_to(45.8,4.9)).to eq 2.4761240501617032 }
51
+ it { expect(@station.distance_to(45.8,4.9)).to eq 3.9849353849054903 }
48
52
  end
49
53
  end
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.4
4
+ version: 0.1.5
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-08-21 00:00:00.000000000 Z
11
+ date: 2014-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler