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.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +25 -0
  3. data/.gitignore +5 -1
  4. data/.rubocop.yml +46 -0
  5. data/.travis.yml +17 -0
  6. data/Gemfile +10 -1
  7. data/Guardfile +12 -0
  8. data/LICENSE +21 -0
  9. data/README.md +8 -2
  10. data/Rakefile +2 -1
  11. data/lib/viaggia_treno.rb +1 -0
  12. data/lib/viaggiatreno.rb +2 -3
  13. data/lib/viaggiatreno/regex_match_info.rb +11 -0
  14. data/lib/viaggiatreno/scraper.rb +94 -0
  15. data/lib/viaggiatreno/string_utils.rb +6 -0
  16. data/lib/viaggiatreno/train.rb +93 -0
  17. data/lib/viaggiatreno/train_state.rb +6 -0
  18. data/lib/viaggiatreno/train_stop.rb +26 -0
  19. data/lib/viaggiatreno/train_stop_state.rb +5 -0
  20. data/lib/viaggiatreno/version.rb +1 -2
  21. data/lib/viaggiatreno/viaggiatreno_urls.rb +14 -0
  22. data/lib/viaggiatreno/xpath_match_info.rb +9 -0
  23. data/spec/spec_helper.rb +17 -0
  24. data/spec/vcr_cassettes/Arrived_train_delay_0_.yml +538 -0
  25. data/spec/vcr_cassettes/Arrived_train_delay_negative_.yml +621 -0
  26. data/spec/vcr_cassettes/Arrived_train_delay_positive_.yml +680 -0
  27. data/spec/vcr_cassettes/Not_departed_train.yml +438 -0
  28. data/spec/vcr_cassettes/Running_train_delay_positive_.yml +468 -0
  29. data/spec/viaggiatreno/train_spec.rb +190 -0
  30. data/spec/viaggiatreno_spec.rb +9 -0
  31. data/viaggiatreno.gemspec +9 -8
  32. metadata +57 -25
  33. data/LICENSE.txt +0 -22
  34. data/lib/viaggiatreno/RegExpMatchInfo.rb +0 -23
  35. data/lib/viaggiatreno/Scraper.rb +0 -87
  36. data/lib/viaggiatreno/StopState.rb +0 -8
  37. data/lib/viaggiatreno/StringUtils.rb +0 -7
  38. data/lib/viaggiatreno/Train.rb +0 -92
  39. data/lib/viaggiatreno/TrainState.rb +0 -11
  40. data/lib/viaggiatreno/TrainStop.rb +0 -24
  41. data/lib/viaggiatreno/ViaggiatrenoURLs.rb +0 -17
  42. data/lib/viaggiatreno/XPathMatchInfo.rb +0 -19
@@ -1,8 +0,0 @@
1
- class StopState
2
- # train station status: already done ("DONE") or to be done ("TODO")
3
- @@DONE = "DONE"
4
- @@TODO = "TODO"
5
-
6
- def self.DONE() @@DONE end
7
- def self.TODO() @@TODO end
8
- end
@@ -1,7 +0,0 @@
1
- class StringUtils
2
- # utility method
3
- def self.remove_newlines_tabs_and_spaces(str)
4
- return str.content.gsub(/\r/, "").gsub(/\n/, "")\
5
- .gsub(/\t/, " ").gsub(/ +/, " ").strip
6
- end
7
- end
@@ -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,11 +0,0 @@
1
- class TrainState
2
- # Train status
3
- @@RUNNING = "TRAVELING"
4
- @@FINISHED = "ARRIVED"
5
- @@NOT_STARTED = "NOT DEPARTED"
6
-
7
- def self.RUNNING() @@RUNNING end
8
- def self.FINISHED() @@FINISHED end
9
- def self.NOT_STARTED() @@NOT_STARTED end
10
- end
11
-
@@ -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
-