stockery 0.2.0 → 0.3.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/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: