viaggiatreno 1.0.2 → 1.0.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 +7 -0
- data/.codeclimate.yml +25 -0
- data/.gitignore +5 -1
- data/.rubocop.yml +46 -0
- data/.travis.yml +17 -0
- data/Gemfile +10 -1
- data/Guardfile +12 -0
- data/LICENSE +21 -0
- data/README.md +8 -2
- data/Rakefile +2 -1
- data/lib/viaggia_treno.rb +1 -0
- data/lib/viaggiatreno.rb +2 -3
- data/lib/viaggiatreno/regex_match_info.rb +11 -0
- data/lib/viaggiatreno/scraper.rb +94 -0
- data/lib/viaggiatreno/string_utils.rb +6 -0
- data/lib/viaggiatreno/train.rb +93 -0
- data/lib/viaggiatreno/train_state.rb +6 -0
- data/lib/viaggiatreno/train_stop.rb +26 -0
- data/lib/viaggiatreno/train_stop_state.rb +5 -0
- data/lib/viaggiatreno/version.rb +1 -2
- data/lib/viaggiatreno/viaggiatreno_urls.rb +14 -0
- data/lib/viaggiatreno/xpath_match_info.rb +9 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/vcr_cassettes/Arrived_train_delay_0_.yml +538 -0
- data/spec/vcr_cassettes/Arrived_train_delay_negative_.yml +621 -0
- data/spec/vcr_cassettes/Arrived_train_delay_positive_.yml +680 -0
- data/spec/vcr_cassettes/Not_departed_train.yml +438 -0
- data/spec/vcr_cassettes/Running_train_delay_positive_.yml +468 -0
- data/spec/viaggiatreno/train_spec.rb +190 -0
- data/spec/viaggiatreno_spec.rb +9 -0
- data/viaggiatreno.gemspec +9 -8
- metadata +57 -25
- data/LICENSE.txt +0 -22
- data/lib/viaggiatreno/RegExpMatchInfo.rb +0 -23
- data/lib/viaggiatreno/Scraper.rb +0 -87
- data/lib/viaggiatreno/StopState.rb +0 -8
- data/lib/viaggiatreno/StringUtils.rb +0 -7
- data/lib/viaggiatreno/Train.rb +0 -92
- data/lib/viaggiatreno/TrainState.rb +0 -11
- data/lib/viaggiatreno/TrainStop.rb +0 -24
- data/lib/viaggiatreno/ViaggiatrenoURLs.rb +0 -17
- data/lib/viaggiatreno/XPathMatchInfo.rb +0 -19
data/lib/viaggiatreno/Train.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
require_relative 'Scraper.rb'
|
2
|
-
require_relative 'TrainState.rb'
|
3
|
-
require_relative 'TrainStop.rb'
|
4
|
-
|
5
|
-
class Train
|
6
|
-
attr_accessor :trainNumber, :trainName, :delay, :status, :lastUpdate, :state
|
7
|
-
|
8
|
-
def initialize(trainNumber)
|
9
|
-
@trainNumber = trainNumber
|
10
|
-
@scraper = Scraper.new(trainNumber.to_s, self)
|
11
|
-
self.update()
|
12
|
-
end
|
13
|
-
|
14
|
-
def update()
|
15
|
-
@scraper.updateTrain()
|
16
|
-
end
|
17
|
-
|
18
|
-
def updateDetails()
|
19
|
-
@trainStops = Array.new
|
20
|
-
@scraper.updateTrainDetails()
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_s
|
24
|
-
return "#{@trainNumber} #{@trainName}: #{@status} state: #{@state}, \
|
25
|
-
delay: #{@delay}, lastUpdate: #{@lastUpdate} #{@trainStops}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def addStop(trainStop)
|
29
|
-
@trainStops << trainStop
|
30
|
-
end
|
31
|
-
|
32
|
-
def trainStops()
|
33
|
-
if @trainStops == nil
|
34
|
-
self.updateDetails()
|
35
|
-
end
|
36
|
-
@trainStops
|
37
|
-
end
|
38
|
-
|
39
|
-
def departingStation()
|
40
|
-
self.trainStops.first.trainStation.to_s
|
41
|
-
end
|
42
|
-
|
43
|
-
def arrivingStation()
|
44
|
-
self.trainStops.last.trainStation.to_s
|
45
|
-
end
|
46
|
-
|
47
|
-
def scheduledDepartingTime()
|
48
|
-
self.trainStops.first.scheduledStopTime.to_s
|
49
|
-
end
|
50
|
-
|
51
|
-
def scheduledArrivingTime()
|
52
|
-
self.trainStops.last.scheduledStopTime.to_s
|
53
|
-
end
|
54
|
-
|
55
|
-
def actualDepartingTime()
|
56
|
-
self.trainStops.first.actualStopTime.to_s
|
57
|
-
end
|
58
|
-
|
59
|
-
def actualArrivingTime()
|
60
|
-
self.trainStops.last.actualStopTime.to_s
|
61
|
-
end
|
62
|
-
|
63
|
-
def scheduledStopTime(stationName)
|
64
|
-
self.trainStops.each do |trainStop|
|
65
|
-
if trainStop.trainStation.to_s == stationName
|
66
|
-
return trainStop.scheduledStopTime.to_s
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def actualStopTime(stationName)
|
72
|
-
self.trainStops.each do |trainStop|
|
73
|
-
if trainStop.trainStation.to_s == stationName
|
74
|
-
return trainStop.actualStopTime.to_s
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def lastStop()
|
80
|
-
if self.trainStops[0].status.to_s != StopState.DONE
|
81
|
-
return @trainStops[0].to_s
|
82
|
-
end
|
83
|
-
(self.trainStops.length-1).times do |i|
|
84
|
-
if self.trainStops[i].status.to_s == StopState.DONE && \
|
85
|
-
self.trainStops[i+1].status.to_s != StopState.DONE
|
86
|
-
return self.trainStops[i].to_s
|
87
|
-
end
|
88
|
-
end
|
89
|
-
return self.trainStops[self.trainStops.length-1].to_s
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require_relative 'StopState'
|
2
|
-
|
3
|
-
class TrainStop
|
4
|
-
attr_accessor :trainStation, :scheduledStopTime, :actualStopTime, :status
|
5
|
-
|
6
|
-
def initialize(trainStation, scheduledStopTime, actualStopTime, status)
|
7
|
-
@trainStation = trainStation
|
8
|
-
@scheduledStopTime = scheduledStopTime
|
9
|
-
@actualStopTime = actualStopTime
|
10
|
-
@status = status
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_s
|
14
|
-
retstr = ""
|
15
|
-
if @status == StopState.DONE
|
16
|
-
retstr += "[X] "
|
17
|
-
elsif @status == StopState.TODO
|
18
|
-
retstr += "[ ] "
|
19
|
-
end
|
20
|
-
retstr += "#{trainStation} = SCHEDULED: #{scheduledStopTime} EXPECTED: #{actualStopTime}"
|
21
|
-
return retstr
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require_relative 'RegExpMatchInfo'
|
2
|
-
|
3
|
-
class ViaggiatrenoURLs
|
4
|
-
@@SITE_INFO_MAIN =
|
5
|
-
"http://mobile.viaggiatreno.it/vt_pax_internet/mobile/numero?numeroTreno=" + \
|
6
|
-
RegExpMatchInfo.STR_TRAIN_NUMBER_URL_REPLACE + \
|
7
|
-
"&tipoRicerca=numero&lang=IT"
|
8
|
-
@@SITE_INFO_DETAILS =
|
9
|
-
"http://mobile.viaggiatreno.it/vt_pax_internet/mobile/scheda?dettaglio=visualizza&numeroTreno=" + \
|
10
|
-
RegExpMatchInfo.STR_TRAIN_NUMBER_URL_REPLACE + \
|
11
|
-
"&tipoRicerca=numero&lang=IT"
|
12
|
-
|
13
|
-
def self.SITE_INFO_MAIN() @@SITE_INFO_MAIN end
|
14
|
-
def self.SITE_INFO_DETAILS() @@SITE_INFO_DETAILS end
|
15
|
-
|
16
|
-
end
|
17
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class XPathMatchInfo
|
2
|
-
# xpath expression to retrieve train info
|
3
|
-
@@XPATH_STATUS = '//div[@class="evidenziato"]/strong'
|
4
|
-
@@XPATH_TRAIN_NAME = '//h1/text()'
|
5
|
-
@@XPATH_DETAILS_GENERIC =
|
6
|
-
'//div[@class="giaeffettuate"] | //div[@class="corpocentrale"]'
|
7
|
-
@@XPATH_DETAILS_STATION_NAME = 'h2/text()'
|
8
|
-
@@XPATH_DETAILS_SCHEDULED_STOP_TIME = 'p[1]/strong[1]/text()'
|
9
|
-
@@XPATH_DETAILS_ACTUAL_STOP_TIME = 'p[2]/strong[1]/text()'
|
10
|
-
|
11
|
-
def self.XPATH_STATUS() @@XPATH_STATUS end
|
12
|
-
def self.XPATH_TRAIN_NAME() @@XPATH_TRAIN_NAME end
|
13
|
-
def self.XPATH_DETAILS_GENERIC() @@XPATH_DETAILS_GENERIC end
|
14
|
-
def self.XPATH_DETAILS_STATION_NAME() @@XPATH_DETAILS_STATION_NAME end
|
15
|
-
def self.XPATH_DETAILS_SCHEDULED_STOP_TIME()
|
16
|
-
@@XPATH_DETAILS_SCHEDULED_STOP_TIME end
|
17
|
-
def self.XPATH_DETAILS_ACTUAL_STOP_TIME() @@XPATH_DETAILS_ACTUAL_STOP_TIME end
|
18
|
-
end
|
19
|
-
|