check_late 0.0.1 → 0.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.
data/bin/check_late CHANGED
@@ -1,4 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'check_late'
4
- CheckLate.hi
4
+ require 'optparse'
5
+
6
+ options = {}
7
+ OptionParser.new do |opts|
8
+ opts.banner = "Usage: check_late -t train_number"
9
+
10
+ opts.on("-t num", "--train num", "Insert train number") do |num|
11
+ options[:train] = num
12
+ end
13
+ end.parse!
14
+
15
+ CheckLate.new(options[:train]).start!
@@ -1,5 +1,21 @@
1
- class CheckLate::Notifier
2
- def notify
3
- puts "notification!"
1
+ require 'rubygems'
2
+ require 'synack'
3
+
4
+
5
+ class Notifier
6
+
7
+ def notify!(message)
8
+ if message and not message.empty?
9
+ puts message
10
+ end
4
11
  end
12
+
13
+ def synack!(message)
14
+ if message and not message.empty?
15
+ Synack::Client.new(:host => 'localhost', :port => '1234').say(message)
16
+ #`synack -p 1234 #{message}`
17
+ end
18
+ end
19
+
20
+
5
21
  end
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'mechanize'
3
+
4
+ module Scraper
5
+ URL = "http://mobile.viaggiatreno.it/viaggiatreno/mobile/numero/"
6
+ SEARCH_TYPE = "numero"
7
+ LANG = "IT"
8
+
9
+ def generate_request(train_number)
10
+ agent = Mechanize.new
11
+ response = agent.post( URL,
12
+ {
13
+ :numeroTreno => train_number,
14
+ :tipoRicerca => SEARCH_TYPE,
15
+ :lang => LANG
16
+ }
17
+ )
18
+ return response.parser.xpath('//div[@class="evidenziato"]/strong')
19
+ end
20
+
21
+ def scrape!(train_number)
22
+ xpath = generate_request(train_number)
23
+ begin
24
+
25
+ if xpath.to_a.first.nil?
26
+ raise Exception
27
+ else
28
+ sanitize_text xpath.to_a.first.to_html
29
+ end
30
+
31
+ rescue Exception
32
+ puts "Invalid Train Number"
33
+ end
34
+
35
+ end
36
+
37
+ def sanitize_text(text)
38
+ text = text.gsub(/\r|\n/, '')
39
+ text = text.gsub(/\t+/, ' ')
40
+ text = text.gsub(/ +/, ' ')
41
+ text = text.gsub(/<!--.*-->/, '')
42
+ text = text.gsub(/<br>/, '')
43
+ text = text.gsub(/<strong>|<\/strong>/, '')
44
+ text = text.strip
45
+ end
46
+
47
+ end
48
+
49
+
50
+ # # Some useless variables to store data
51
+ # delay = text.match(/(\d+) minuti di ritardo/)
52
+ # early = text.match(/(\d+) minuti di anticipo/)
53
+ # arrived = text.match(/arrivato/)
54
+ # not_departed = text.match(/non e' ancora partito/)
@@ -0,0 +1,3 @@
1
+ module CheckLate
2
+ VERSION = "0.0.5"
3
+ end
data/lib/check_late.rb CHANGED
@@ -1,9 +1,29 @@
1
+ require 'check_late/notifier'
2
+ require 'check_late/scraper'
3
+
1
4
  class CheckLate
2
- def self.hi
3
- notifier = Notifier.new
4
- notifier.notify
5
+ include Scraper
6
+ attr_accessor :train_number, :status, :old_status
7
+
8
+ def initialize(train_number)
9
+ @train_number = train_number
10
+ @notifier = Notifier.new
5
11
  end
6
- end
7
12
 
13
+ def status
14
+ new = scrape!(train_number)
15
+ if @status != new
16
+ @status = new
17
+ return new
18
+ end
19
+ end
8
20
 
9
- require 'check_late/notifier'
21
+ def start!
22
+ while true
23
+ #@notifier.notify!(status)
24
+ @notifier.synack!(status)
25
+ sleep(60)
26
+ end
27
+ end
28
+
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: check_late
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,6 +19,8 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - lib/check_late/notifier.rb
22
+ - lib/check_late/scraper.rb
23
+ - lib/check_late/version.rb
22
24
  - lib/check_late.rb
23
25
  - bin/check_late
24
26
  - README.md