metromobilite 0.2 → 0.2.1
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 +4 -4
- data/.github/workflows/ci.yml +23 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.vscode/launch.json +16 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +49 -0
- data/LICENSE +674 -674
- data/README.md +24 -12
- data/Rakefile +6 -8
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/metromobilite/model/pattern.rb +30 -30
- data/lib/metromobilite/model/stop.rb +21 -21
- data/lib/metromobilite/model/time.rb +49 -49
- data/lib/metromobilite/request.rb +15 -14
- data/lib/metromobilite/times.rb +34 -34
- data/lib/metromobilite/version.rb +3 -0
- data/lib/metromobilite.rb +2 -2
- data/metromobilite.gemspec +34 -21
- metadata +29 -15
data/README.md
CHANGED
@@ -1,12 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
[](https://badge.fury.io/rb/metromobilite)
|
2
|
+
# ruby-metromobilite
|
3
|
+
Implémentation Ruby de l'API Métromobilite (Transports en commun de Grenoble et d'Isère)
|
4
|
+
|
5
|
+
Pour plus d'informations, voir la [Documentation de l'API](https://www.mobilites-m.fr/pages/opendata/OpenDataApi.html)
|
6
|
+
|
7
|
+
# Installation
|
8
|
+
En ligne de commande :
|
9
|
+
```bash
|
10
|
+
$ gem install metromobilite
|
11
|
+
```
|
12
|
+
|
13
|
+
Gemfile :
|
14
|
+
```ruby
|
15
|
+
gem 'metromobilite', '>= 0.2'
|
16
|
+
```
|
17
|
+
|
18
|
+
# Utilisation
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
require 'metromobilite'
|
22
|
+
|
23
|
+
Metromobilite::Times.readStop '{SEM,C38}:id'
|
24
|
+
```
|
data/Rakefile
CHANGED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "metromobilite"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -1,31 +1,31 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
module Metromobilite
|
4
|
-
module Model
|
5
|
-
class Pattern
|
6
|
-
|
7
|
-
# Initializes a new Metromobilite::Pattern object
|
8
|
-
#
|
9
|
-
# +jsonData_Hash+::
|
10
|
-
# The JSON data received and parsed as a Hash
|
11
|
-
def initialize(jsonData)
|
12
|
-
|
13
|
-
@id = jsonData['id']
|
14
|
-
@desc = jsonData['desc']
|
15
|
-
@dir = jsonData['dir']
|
16
|
-
@shortDesc = jsonData['shortDesc']
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :id
|
20
|
-
attr_reader :desc
|
21
|
-
attr_reader :dir
|
22
|
-
attr_reader :shortDesc
|
23
|
-
|
24
|
-
def to_json(opts = nil)
|
25
|
-
hash = {}
|
26
|
-
instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
|
27
|
-
hash.to_json
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Metromobilite
|
4
|
+
module Model
|
5
|
+
class Pattern
|
6
|
+
|
7
|
+
# Initializes a new Metromobilite::Pattern object
|
8
|
+
#
|
9
|
+
# +jsonData_Hash+::
|
10
|
+
# The JSON data received and parsed as a Hash
|
11
|
+
def initialize(jsonData)
|
12
|
+
|
13
|
+
@id = jsonData['id']
|
14
|
+
@desc = jsonData['desc']
|
15
|
+
@dir = jsonData['dir']
|
16
|
+
@shortDesc = jsonData['shortDesc']
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :id
|
20
|
+
attr_reader :desc
|
21
|
+
attr_reader :dir
|
22
|
+
attr_reader :shortDesc
|
23
|
+
|
24
|
+
def to_json(opts = nil)
|
25
|
+
hash = {}
|
26
|
+
instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
|
27
|
+
hash.to_json
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
31
|
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
module Metromobilite
|
4
|
-
module Model
|
5
|
-
class Stop
|
6
|
-
def initialize(pattern, times)
|
7
|
-
@pattern = pattern
|
8
|
-
@times = times
|
9
|
-
end
|
10
|
-
|
11
|
-
attr_reader :pattern
|
12
|
-
attr_reader :times
|
13
|
-
|
14
|
-
def to_json(opts = nil)
|
15
|
-
hash = {}
|
16
|
-
instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
|
17
|
-
hash.to_json
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Metromobilite
|
4
|
+
module Model
|
5
|
+
class Stop
|
6
|
+
def initialize(pattern, times)
|
7
|
+
@pattern = pattern
|
8
|
+
@times = times
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :pattern
|
12
|
+
attr_reader :times
|
13
|
+
|
14
|
+
def to_json(opts = nil)
|
15
|
+
hash = {}
|
16
|
+
instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
|
17
|
+
hash.to_json
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,49 +1,49 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
module Metromobilite
|
4
|
-
module Model
|
5
|
-
class Time
|
6
|
-
# Class representing time info at a stop for a single route
|
7
|
-
|
8
|
-
# Instantiates a new Time object from received JSON data
|
9
|
-
# :call-seq:
|
10
|
-
# Time.new(jsonObj)
|
11
|
-
#
|
12
|
-
# +jsonData_Hash+::
|
13
|
-
# The Time JSON hash object received from the API
|
14
|
-
def initialize(jsonData)
|
15
|
-
@stopId = jsonData['stopId']
|
16
|
-
@stopName = jsonData['stopName']
|
17
|
-
@scheduledArrival = jsonData['scheduledArrival']
|
18
|
-
@scheduledDeparture = jsonData['scheduledDeparture']
|
19
|
-
@realtimeArrival = jsonData['realtimeArrival']
|
20
|
-
@realtimeDeparture = jsonData['realtimeDeparture']
|
21
|
-
@arrivalDelay = jsonData['arrivalDelay']
|
22
|
-
@departureDelay = jsonData['departureDelay']
|
23
|
-
@timepoint = jsonData['timepoint']
|
24
|
-
@realtime = jsonData['realtime']
|
25
|
-
@serviceDay = jsonData['serviceDay']
|
26
|
-
@tripId = jsonData['tripId']
|
27
|
-
end
|
28
|
-
|
29
|
-
attr_reader :stopId
|
30
|
-
attr_reader :stopName
|
31
|
-
attr_reader :scheduledArrival
|
32
|
-
attr_reader :scheduledDeparture
|
33
|
-
attr_reader :realtimeArrival
|
34
|
-
attr_reader :realtimeDeparture
|
35
|
-
attr_reader :arrivalDelay
|
36
|
-
attr_reader :departureDelay
|
37
|
-
attr_reader :timepoint
|
38
|
-
attr_reader :realtime
|
39
|
-
attr_reader :serviceDay
|
40
|
-
attr_reader :tripId
|
41
|
-
|
42
|
-
def to_json(opts = nil)
|
43
|
-
hash = {}
|
44
|
-
instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
|
45
|
-
hash.to_json
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Metromobilite
|
4
|
+
module Model
|
5
|
+
class Time
|
6
|
+
# Class representing time info at a stop for a single route
|
7
|
+
|
8
|
+
# Instantiates a new Time object from received JSON data
|
9
|
+
# :call-seq:
|
10
|
+
# Time.new(jsonObj)
|
11
|
+
#
|
12
|
+
# +jsonData_Hash+::
|
13
|
+
# The Time JSON hash object received from the API
|
14
|
+
def initialize(jsonData)
|
15
|
+
@stopId = jsonData['stopId']
|
16
|
+
@stopName = jsonData['stopName']
|
17
|
+
@scheduledArrival = jsonData['scheduledArrival']
|
18
|
+
@scheduledDeparture = jsonData['scheduledDeparture']
|
19
|
+
@realtimeArrival = jsonData['realtimeArrival']
|
20
|
+
@realtimeDeparture = jsonData['realtimeDeparture']
|
21
|
+
@arrivalDelay = jsonData['arrivalDelay']
|
22
|
+
@departureDelay = jsonData['departureDelay']
|
23
|
+
@timepoint = jsonData['timepoint']
|
24
|
+
@realtime = jsonData['realtime']
|
25
|
+
@serviceDay = jsonData['serviceDay']
|
26
|
+
@tripId = jsonData['tripId']
|
27
|
+
end
|
28
|
+
|
29
|
+
attr_reader :stopId
|
30
|
+
attr_reader :stopName
|
31
|
+
attr_reader :scheduledArrival
|
32
|
+
attr_reader :scheduledDeparture
|
33
|
+
attr_reader :realtimeArrival
|
34
|
+
attr_reader :realtimeDeparture
|
35
|
+
attr_reader :arrivalDelay
|
36
|
+
attr_reader :departureDelay
|
37
|
+
attr_reader :timepoint
|
38
|
+
attr_reader :realtime
|
39
|
+
attr_reader :serviceDay
|
40
|
+
attr_reader :tripId
|
41
|
+
|
42
|
+
def to_json(opts = nil)
|
43
|
+
hash = {}
|
44
|
+
instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
|
45
|
+
hash.to_json
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,14 +1,15 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
module Metromobilite
|
5
|
-
module Request
|
6
|
-
API_URI = 'http://data.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
1
|
+
require 'httparty'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Metromobilite
|
5
|
+
module Request
|
6
|
+
API_URI = 'http://data.mobilites-m.fr/api'
|
7
|
+
HEADERS = { 'Origin' => 'rubygems.org' }
|
8
|
+
|
9
|
+
def self.get(reqUri)
|
10
|
+
puts 'Calling GET on ' + API_URI + reqUri
|
11
|
+
httpResult = HTTParty.get(API_URI + reqUri, headers: HEADERS)
|
12
|
+
JSON.parse(httpResult.body)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/metromobilite/times.rb
CHANGED
@@ -1,34 +1,34 @@
|
|
1
|
-
require 'metromobilite/request'
|
2
|
-
require 'metromobilite/model/pattern'
|
3
|
-
require 'metromobilite/model/time'
|
4
|
-
require 'metromobilite/model/stop'
|
5
|
-
require 'json'
|
6
|
-
|
7
|
-
module Metromobilite
|
8
|
-
module Times
|
9
|
-
RECORDS_URI = '/ficheHoraires/json'
|
10
|
-
LIVE_URI = '/routers/default/index/stops/%s/stoptimes'
|
11
|
-
|
12
|
-
# Reads the next stop times at a stop, eventually for a given route
|
13
|
-
# Returns an array of Metromobilite::Model::Stop with their associated stop times
|
14
|
-
#
|
15
|
-
# +stopId_string+::
|
16
|
-
# the stop id
|
17
|
-
#
|
18
|
-
def self.readStop(stopId)
|
19
|
-
uri = LIVE_URI % stopId.to_s
|
20
|
-
jsonData = Metromobilite::Request.get(uri)
|
21
|
-
res = []
|
22
|
-
jsonData.each do |item|
|
23
|
-
pattern = Metromobilite::Model::Pattern.new(item['pattern'])
|
24
|
-
times = []
|
25
|
-
item['times'].each do |timeJson|
|
26
|
-
times.push(Metromobilite::Model::Time.new timeJson)
|
27
|
-
end
|
28
|
-
res.push(Metromobilite::Model::Stop.new pattern, times)
|
29
|
-
end
|
30
|
-
|
31
|
-
return res
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
1
|
+
require 'metromobilite/request'
|
2
|
+
require 'metromobilite/model/pattern'
|
3
|
+
require 'metromobilite/model/time'
|
4
|
+
require 'metromobilite/model/stop'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module Metromobilite
|
8
|
+
module Times
|
9
|
+
RECORDS_URI = '/ficheHoraires/json'
|
10
|
+
LIVE_URI = '/routers/default/index/stops/%s/stoptimes'
|
11
|
+
|
12
|
+
# Reads the next stop times at a stop, eventually for a given route
|
13
|
+
# Returns an array of Metromobilite::Model::Stop with their associated stop times
|
14
|
+
#
|
15
|
+
# +stopId_string+::
|
16
|
+
# the stop id
|
17
|
+
#
|
18
|
+
def self.readStop(stopId)
|
19
|
+
uri = LIVE_URI % stopId.to_s
|
20
|
+
jsonData = Metromobilite::Request.get(uri)
|
21
|
+
res = []
|
22
|
+
jsonData.each do |item|
|
23
|
+
pattern = Metromobilite::Model::Pattern.new(item['pattern'])
|
24
|
+
times = []
|
25
|
+
item['times'].each do |timeJson|
|
26
|
+
times.push(Metromobilite::Model::Time.new timeJson)
|
27
|
+
end
|
28
|
+
res.push(Metromobilite::Model::Stop.new pattern, times)
|
29
|
+
end
|
30
|
+
|
31
|
+
return res
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/metromobilite.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require 'metromobilite/times'
|
2
|
-
require 'metromobilite/request'
|
1
|
+
require 'metromobilite/times'
|
2
|
+
require 'metromobilite/request'
|
data/metromobilite.gemspec
CHANGED
@@ -1,21 +1,34 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
spec.
|
6
|
-
spec.
|
7
|
-
spec.
|
8
|
-
spec.
|
9
|
-
|
10
|
-
spec.summary
|
11
|
-
spec.description
|
12
|
-
spec.
|
13
|
-
spec.
|
14
|
-
|
15
|
-
spec.
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
spec.
|
19
|
-
|
20
|
-
spec.
|
21
|
-
|
1
|
+
require_relative 'lib/metromobilite/version'
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "metromobilite"
|
5
|
+
spec.version = Metromobilite::VERSION
|
6
|
+
spec.license = 'GPL-3.0'
|
7
|
+
spec.authors = ["Léo GATELLIER"]
|
8
|
+
spec.email = ["github@leogatellier.fr"]
|
9
|
+
|
10
|
+
spec.summary = %q{Wrapper Ruby de l'API Métromobilite (Transports en commun de Grenoble et d'Isère).}
|
11
|
+
spec.description = %q{Wrapper Ruby de l'API Métromobilité (Transports en commun de Grenoble et d'Isère) initialement développée pour être intégrée dans un job smashing.}
|
12
|
+
spec.homepage = "https://github.com/lgatellier/ruby-metromobilite"
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
14
|
+
|
15
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
16
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
17
|
+
spec.metadata["changelog_uri"] = "#{spec.homepage}/CHANGELOG.md"
|
18
|
+
spec.metadata["bug_tracker_uri"] = "#{spec.homepage}/issues"
|
19
|
+
|
20
|
+
spec.add_dependency 'faraday', '~> 0.15'
|
21
|
+
spec.add_dependency 'json', '~> 2.1'
|
22
|
+
spec.add_dependency 'httparty', '~> 0.17.3'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 2.2.10'
|
25
|
+
|
26
|
+
# Specify which files should be added to the gem when it is released.
|
27
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
28
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
29
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
30
|
+
end
|
31
|
+
spec.bindir = "exe"
|
32
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
33
|
+
spec.require_paths = ["lib"]
|
34
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metromobilite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Léo
|
7
|
+
- Léo GATELLIER
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -58,36 +58,50 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.2.10
|
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:
|
69
|
-
description:
|
70
|
-
et d'Isère) initialement développée pour être intégrée dans un job
|
68
|
+
version: 2.2.10
|
69
|
+
description: Wrapper Ruby de l'API Métromobilité (Transports en commun de Grenoble
|
70
|
+
et d'Isère) initialement développée pour être intégrée dans un job smashing.
|
71
71
|
email:
|
72
72
|
- github@leogatellier.fr
|
73
73
|
executables: []
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
+
- ".github/workflows/ci.yml"
|
78
|
+
- ".gitignore"
|
79
|
+
- ".rspec"
|
80
|
+
- ".vscode/launch.json"
|
81
|
+
- CODE_OF_CONDUCT.md
|
82
|
+
- Gemfile
|
83
|
+
- Gemfile.lock
|
77
84
|
- LICENSE
|
78
85
|
- README.md
|
79
86
|
- Rakefile
|
87
|
+
- bin/console
|
88
|
+
- bin/setup
|
80
89
|
- lib/metromobilite.rb
|
81
90
|
- lib/metromobilite/model/pattern.rb
|
82
91
|
- lib/metromobilite/model/stop.rb
|
83
92
|
- lib/metromobilite/model/time.rb
|
84
93
|
- lib/metromobilite/request.rb
|
85
94
|
- lib/metromobilite/times.rb
|
95
|
+
- lib/metromobilite/version.rb
|
86
96
|
- metromobilite.gemspec
|
87
|
-
homepage: https://github.com/lgatellier/ruby-metromobilite
|
97
|
+
homepage: https://github.com/lgatellier/ruby-metromobilite
|
88
98
|
licenses:
|
89
99
|
- GPL-3.0
|
90
|
-
metadata:
|
100
|
+
metadata:
|
101
|
+
homepage_uri: https://github.com/lgatellier/ruby-metromobilite
|
102
|
+
source_code_uri: https://github.com/lgatellier/ruby-metromobilite
|
103
|
+
changelog_uri: https://github.com/lgatellier/ruby-metromobilite/CHANGELOG.md
|
104
|
+
bug_tracker_uri: https://github.com/lgatellier/ruby-metromobilite/issues
|
91
105
|
post_install_message:
|
92
106
|
rdoc_options: []
|
93
107
|
require_paths:
|
@@ -96,16 +110,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
110
|
requirements:
|
97
111
|
- - ">="
|
98
112
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
113
|
+
version: 2.3.0
|
100
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
115
|
requirements:
|
102
116
|
- - ">="
|
103
117
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
118
|
+
version: '0'
|
105
119
|
requirements: []
|
106
|
-
rubygems_version: 3.
|
120
|
+
rubygems_version: 3.1.2
|
107
121
|
signing_key:
|
108
122
|
specification_version: 4
|
109
|
-
summary:
|
110
|
-
|
123
|
+
summary: Wrapper Ruby de l'API Métromobilite (Transports en commun de Grenoble et
|
124
|
+
d'Isère).
|
111
125
|
test_files: []
|