viaggiatreno 1.0.2 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|