rticker 1.1.2 → 1.2.0
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/rticker +3 -1
- data/lib/rticker/application.rb +3 -0
- data/lib/rticker/currency.rb +1 -1
- data/lib/rticker/equity.rb +3 -1
- data/lib/rticker/future.rb +1 -1
- data/lib/rticker/net.rb +22 -0
- data/lib/rticker/options.rb +7 -2
- data/rticker.gemspec +1 -1
- metadata +4 -4
data/bin/rticker
CHANGED
data/lib/rticker/application.rb
CHANGED
@@ -57,8 +57,11 @@ module RTicker
|
|
57
57
|
end
|
58
58
|
|
59
59
|
# Set proxy settings
|
60
|
+
system_proxy = RTicker::Net.detect_system_proxy
|
60
61
|
if @options.proxy
|
61
62
|
RTicker::Net.proxy = @options.proxy
|
63
|
+
elsif not system_proxy.nil? and not @options.no_proxy
|
64
|
+
RTicker::Net.proxy = "#{system_proxy[:host]}:#{system_proxy[:port]}"
|
62
65
|
end
|
63
66
|
|
64
67
|
# Update entries via web calls until user quits via Ctrl-C
|
data/lib/rticker/currency.rb
CHANGED
@@ -30,7 +30,7 @@ module RTicker
|
|
30
30
|
fields = result.split(",")
|
31
31
|
price = fields[1]
|
32
32
|
last_date = fields[2]
|
33
|
-
return if Date.strptime(last_date, '"%m/%d/%Y"') != Date.today
|
33
|
+
return if last_date.nil? or Date.strptime(last_date, '"%m/%d/%Y"') != Date.today
|
34
34
|
if price.to_f != entry.curr_value and not entry.curr_value.nil?
|
35
35
|
# The price has changed
|
36
36
|
entry.last_changed = Time.now()
|
data/lib/rticker/equity.rb
CHANGED
@@ -57,14 +57,16 @@ module RTicker
|
|
57
57
|
symbols = entries.map { |e| e.symbol }
|
58
58
|
uri = "http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=l1c1d1va2xj1b4j4dyekjm3m4rr5p5p6s7" % CGI::escape(symbols.join(","))
|
59
59
|
response = RTicker::Net.get_response(uri) rescue return
|
60
|
+
return if response.nil?
|
60
61
|
results = response.split("\n")
|
61
62
|
entries.zip(results) do |entry, result|
|
62
63
|
# Yahoo uses A CSV format.
|
64
|
+
return if result.nil?
|
63
65
|
fields = result.split(",")
|
64
66
|
price = fields[0]
|
65
67
|
change = fields[1]
|
66
68
|
last_date = fields[2]
|
67
|
-
return if Date.strptime(last_date, '"%m/%d/%Y"') != Date.today
|
69
|
+
return if last_date.nil? or Date.strptime(last_date, '"%m/%d/%Y"') != Date.today
|
68
70
|
if price.to_f != entry.curr_value and not entry.curr_value.nil?
|
69
71
|
# The price has changed
|
70
72
|
entry.last_changed = Time.now()
|
data/lib/rticker/future.rb
CHANGED
@@ -71,7 +71,7 @@ module RTicker
|
|
71
71
|
price = fields[0]
|
72
72
|
change = fields[1]
|
73
73
|
last_date = fields[2]
|
74
|
-
return if Date.strptime(last_date, '"%m/%d/%Y"') != Date.today
|
74
|
+
return if last_date.nil? or Date.strptime(last_date, '"%m/%d/%Y"') != Date.today
|
75
75
|
if price.to_f != _entry.curr_value and not _entry.curr_value.nil?
|
76
76
|
# The price has changed
|
77
77
|
_entry.last_changed = Time.now()
|
data/lib/rticker/net.rb
CHANGED
@@ -26,5 +26,27 @@ module RTicker
|
|
26
26
|
return ""
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
def self.detect_system_proxy ()
|
31
|
+
require 'rbconfig'
|
32
|
+
os = Config::CONFIG['host_os']
|
33
|
+
# Only support mac os x right now
|
34
|
+
return detect_system_proxy_macosx() if os.start_with? "darwin"
|
35
|
+
return nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.detect_system_proxy_macosx ()
|
39
|
+
ethernet_enabled = (not %x[networksetup -getinfo ethernet].match(/IP address:/).nil?)
|
40
|
+
airport_enabled = (not %x[networksetup -getinfo airport].match(/IP address:/).nil?)
|
41
|
+
return nil if not (ethernet_enabled or airport_enabled)
|
42
|
+
networkservice = ethernet_enabled ? "ethernet" : "airport"
|
43
|
+
webproxy_info = %x[networksetup -getwebproxy #{networkservice}]
|
44
|
+
return nil if webproxy_info.match(/Enabled: Yes/).nil?
|
45
|
+
host, port, authentication_required = "", "", false
|
46
|
+
host = webproxy_info.match(/Server: ([^\n]*)/)[1]
|
47
|
+
port = webproxy_info.match(/Port: ([^\n]*)/)[1]
|
48
|
+
authentication_required = webproxy_info.match(/Authenticated Proxy Enabled: (0|1)/)[1] == "1"
|
49
|
+
return {:host => host, :port => port, :authentication_required => authentication_required}
|
50
|
+
end
|
29
51
|
end
|
30
52
|
end
|
data/lib/rticker/options.rb
CHANGED
@@ -5,7 +5,7 @@ module RTicker
|
|
5
5
|
class Options
|
6
6
|
|
7
7
|
attr_reader :once, :no_color, :input_files
|
8
|
-
attr_reader :sleep, :rest, :proxy
|
8
|
+
attr_reader :sleep, :rest, :proxy, :no_proxy
|
9
9
|
|
10
10
|
def initialize (args)
|
11
11
|
# Defaults
|
@@ -13,6 +13,7 @@ module RTicker
|
|
13
13
|
@no_color = false # Don't use color when showing results to user
|
14
14
|
@input_files = [] # Input files provided by user
|
15
15
|
@proxy = nil # "host:port" proxy
|
16
|
+
@no_proxy = false # Don't default to system proxy if one is detected
|
16
17
|
@sleep = 2 # how long to delay between web requests
|
17
18
|
@rest = [] # The rest of the command line arguments
|
18
19
|
parse!(args)
|
@@ -44,10 +45,14 @@ module RTicker
|
|
44
45
|
@sleep = secs.to_f
|
45
46
|
end
|
46
47
|
|
47
|
-
opts.on("-p", "--proxy HOST:PORT", "Host and port of HTTP proxy to use.") do |proxy|
|
48
|
+
opts.on("-p", "--proxy HOST:PORT", "Host and port of HTTP proxy to use. This overrides any system proxy that is detected.") do |proxy|
|
48
49
|
@proxy = proxy
|
49
50
|
end
|
50
51
|
|
52
|
+
opts.on("-x", "--no-proxy", "Don't default to system proxy if one is detected.") do
|
53
|
+
@no_proxy = true
|
54
|
+
end
|
55
|
+
|
51
56
|
opts.on("-h", "--help", "Display this screen") do
|
52
57
|
puts opts
|
53
58
|
exit
|
data/rticker.gemspec
CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
|
|
3
3
|
s.name = "rticker"
|
4
4
|
s.summary = "Command line-based stock ticker application"
|
5
5
|
s.description = File.read(File.join(File.dirname(__FILE__), 'README'))
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.2.0"
|
7
7
|
s.author = "Alfred J. Fazio"
|
8
8
|
s.email = "alfred.fazio@gmail.com"
|
9
9
|
s.platform = Gem::Platform::RUBY
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rticker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
- 1
|
9
8
|
- 2
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alfred J. Fazio
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-02-17 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|