stockery 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
+ gem 'json'
4
+
3
5
  group :test do
4
6
  gem "rake"
5
7
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -10,10 +10,14 @@ module Stockery
10
10
  result = case source
11
11
  when Stockery::GOOGLE then
12
12
  fetch_goog(symbol)
13
+ when Stockery::YAHOO then
14
+ fetch_yahoo(symbol)
13
15
  else
14
16
  abort "No valid source specified. The following source are available: \"GOOGLE\""
15
17
  end
16
-
18
+
19
+ result[:time_stamp] = Time.now.getutc
20
+
17
21
  result
18
22
  end
19
23
 
@@ -48,14 +52,36 @@ module Stockery
48
52
  data_stock[:market] = data['e']
49
53
  data_stock[:name] = data['t']
50
54
  data_stock[:price] = data['l']
51
- data_stock[:price_currency] = data['l_curr']
55
+ # data_stock[:price_currency] = data['l_curr']
52
56
  data_stock[:change_points] = data['c']
53
57
  data_stock[:change_procent] = data['cp']
54
58
 
55
- data_stock[:timestamp] = data['ltt']
59
+ # data_stock[:timestamp] = data['ltt']
56
60
  end
57
61
 
58
62
  data_stock
59
63
  end
64
+
65
+ def fetch_yahoo(symbol)
66
+ resp = Net::HTTP.get_response(URI.parse("http://download.finance.yahoo.com/d/quotes.csv?s=#{symbol}&f=snl1c1p2x&e=.csv"))
67
+ lines = resp.body.split("\r\n")
68
+
69
+ data_stock = {}
70
+
71
+ lines.each do |line|
72
+ data = JSON.parse("[#{line}]")
73
+
74
+ data_stock[:market] = data[5]
75
+ data_stock[:name] = data[0]
76
+ data_stock[:price] = data[2]
77
+ # data_stock[:price_currency] = data[0]
78
+ data_stock[:change_points] = data[3]
79
+ data_stock[:change_procent] = data[4]
80
+
81
+ # data_stock[:timestamp] = data[0]
82
+ end
83
+
84
+ data_stock
85
+ end
60
86
  end
61
87
  end
@@ -9,6 +9,7 @@ module Stockery
9
9
  @options = {
10
10
  :source => Stockery::GOOGLE,
11
11
  :quotes => '',
12
+ :output => 'json',
12
13
  }
13
14
 
14
15
  parse!
@@ -19,19 +20,27 @@ module Stockery
19
20
  abort "Quote symbols missing. Usage `stockery -q \"GOOG, MSFT\""
20
21
  end
21
22
 
22
- puts "Quotes at #{Time.now}\n"
23
- puts ""
24
-
25
23
  s_q = Stockery::Quote.new
26
24
  s_q.source = @options[:source]
27
25
 
28
26
  quotes = @options[:quotes].split(',').collect { |q| q.to_s.strip }
29
-
27
+ quotes_res = []
28
+
30
29
  quotes.each do |quote|
31
- res = s_q.get_status(quote)
32
- puts s_q.print(res)
30
+ quotes_res << s_q.get_status(quote)
31
+ end
32
+
33
+ case @options[:output]
34
+ when 'print'
35
+ puts "Quotes at #{Time.now}\n"
36
+ puts ""
33
37
 
34
- puts "\n"
38
+ quotes_res.each do |quote|
39
+ puts s_q.print(quote)
40
+ puts "\n"
41
+ end
42
+ when 'json'
43
+ p JSON.generate(quotes_res)
35
44
  end
36
45
  end
37
46
 
@@ -49,7 +58,8 @@ module Stockery
49
58
  opts.separator "Command options:"
50
59
 
51
60
  opts.on("-s", "--source HOST", "Stock source (default: #{@options[:source]})") { |source| @options[:source] = source }
52
- opts.on("-q", "--quotes 'comma separated'", "Required, no default") { |quotes| @options[:quotes] = quotes }
61
+ opts.on("-q", "--quotes 'Comma separated'", "Required, no default") { |quotes| @options[:quotes] = quotes }
62
+ opts.on("-o", "--output 'Output. JSON is default'", "Pass 'print' to print out, 'json' for JSON (default).") { |output| @options[:output] = output }
53
63
 
54
64
  opts.separator ""
55
65
 
data/lib/stockery.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require 'open-uri'
2
2
  require 'json'
3
+ require 'net/http'
4
+ require 'time'
3
5
 
4
6
  module Stockery
5
7
  GOOGLE = "GOOGLE"
data/stockery.gemspec ADDED
@@ -0,0 +1,68 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "stockery"
8
+ s.version = "0.3.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Pieter Michels"]
12
+ s.date = "2011-09-22"
13
+ s.description = "Fetch stock quotes. Build as a gem and command line tool."
14
+ s.email = "pieter@noort.be"
15
+ s.executables = ["stockery"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ "Gemfile",
22
+ "LICENSE.txt",
23
+ "README.md",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bin/stockery",
27
+ "lib/stockery.rb",
28
+ "lib/stockery/quote.rb",
29
+ "lib/stockery/runner.rb",
30
+ "lib/stockery/version.rb",
31
+ "stockery.gemspec",
32
+ "test/helper.rb",
33
+ "test/test_stockery.rb"
34
+ ]
35
+ s.homepage = "http://github.com/pierot/stockery"
36
+ s.licenses = ["MIT"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = "1.8.10"
39
+ s.summary = "Fetch stock quotes"
40
+
41
+ if s.respond_to? :specification_version then
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<json>, [">= 0"])
46
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
47
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
48
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
49
+ s.add_development_dependency(%q<rcov>, [">= 0"])
50
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
51
+ else
52
+ s.add_dependency(%q<json>, [">= 0"])
53
+ s.add_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
55
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
56
+ s.add_dependency(%q<rcov>, [">= 0"])
57
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
58
+ end
59
+ else
60
+ s.add_dependency(%q<json>, [">= 0"])
61
+ s.add_dependency(%q<shoulda>, [">= 0"])
62
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
64
+ s.add_dependency(%q<rcov>, [">= 0"])
65
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
66
+ end
67
+ end
68
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stockery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,9 +11,20 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2011-09-22 00:00:00.000000000Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: &2156289240 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2156289240
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: shoulda
16
- requirement: &2157840980 !ruby/object:Gem::Requirement
27
+ requirement: &2156288560 !ruby/object:Gem::Requirement
17
28
  none: false
18
29
  requirements:
19
30
  - - ! '>='
@@ -21,10 +32,10 @@ dependencies:
21
32
  version: '0'
22
33
  type: :development
23
34
  prerelease: false
24
- version_requirements: *2157840980
35
+ version_requirements: *2156288560
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: bundler
27
- requirement: &2157840260 !ruby/object:Gem::Requirement
38
+ requirement: &2156287780 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ~>
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: 1.0.0
33
44
  type: :development
34
45
  prerelease: false
35
- version_requirements: *2157840260
46
+ version_requirements: *2156287780
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: jeweler
38
- requirement: &2157839600 !ruby/object:Gem::Requirement
49
+ requirement: &2156286960 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: 1.6.4
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *2157839600
57
+ version_requirements: *2156286960
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: rcov
49
- requirement: &2157838720 !ruby/object:Gem::Requirement
60
+ requirement: &2156286260 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *2157838720
68
+ version_requirements: *2156286260
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: thoughtbot-shoulda
60
- requirement: &2157837720 !ruby/object:Gem::Requirement
71
+ requirement: &2156285600 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *2157837720
79
+ version_requirements: *2156285600
69
80
  description: Fetch stock quotes. Build as a gem and command line tool.
70
81
  email: pieter@noort.be
71
82
  executables:
@@ -85,6 +96,7 @@ files:
85
96
  - lib/stockery/quote.rb
86
97
  - lib/stockery/runner.rb
87
98
  - lib/stockery/version.rb
99
+ - stockery.gemspec
88
100
  - test/helper.rb
89
101
  - test/test_stockery.rb
90
102
  homepage: http://github.com/pierot/stockery
@@ -102,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
114
  version: '0'
103
115
  segments:
104
116
  - 0
105
- hash: -3539302173484574299
117
+ hash: 1533018884125767136
106
118
  required_rubygems_version: !ruby/object:Gem::Requirement
107
119
  none: false
108
120
  requirements: