cstock 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cc794709608dc917ad3380287b93bdce74aec712
4
+ data.tar.gz: d71b2c5bbcd13a1491ac7a4e1d27563f6e5fa10d
5
+ SHA512:
6
+ metadata.gz: 2ec279e4ccb23e359e5859aaf5c8fdb9b42312876141f4ee03c1b7151342a221bc380e9b67dbef542a9abafd4105ecef9531c15552d7984ce8b95fabb82db47d
7
+ data.tar.gz: d403dac2e0da301f1c0b9d488e3e236c7c7fd8b610ccdc2e46bb2efd8b6439f645d7c95ef0502074a03e53343f5f04110132336fb3ab62bb3d3d20e017967c9c
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Aston Fu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ cstock
2
+ ----------------
3
+
4
+ Query chinese stock infomation.
data/bin/cstock ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'cstock'
4
+
5
+ if ARGV.count != 1
6
+ puts "With the given stock code quote its infomation."
7
+ puts "usage: cstock sh600000"
8
+ exit
9
+ end
10
+
11
+ code = ARGV[0]
12
+
13
+ stock = CStock::Stock.quote(code)
14
+ stock.description
data/cstock.gemspec ADDED
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
+ require 'cstock/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'cstock'
7
+ s.version = CStock::VERSION
8
+ s.licenses = ['MIT']
9
+ s.date = '2015-04-02'
10
+ s.summary = "Get chinese stock infomation."
11
+ s.description = "A ruby gem that get chinese stock infomation."
12
+ s.authors = ["Aston Fu"]
13
+ s.email = 'im@fuhao.im'
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.require_paths = ['lib']
17
+ s.executables = %w(cstock)
18
+ s.homepage = 'https://github.com/astonfu/cstock'
19
+
20
+ s.add_development_dependency 'rspec'
21
+ end
data/lib/cstock.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'cstock/version'
3
+ require 'cstock/stock'
@@ -0,0 +1,51 @@
1
+ require 'net/http'
2
+
3
+ module CStock
4
+ class Stock
5
+ FIELDS = %w(name open_price close_price cur_price high_price low_price bid_price_1 ask_price_1 volume turnover
6
+ bid_volume_1 bid_price_1 bid_volume_2 bid_price_2 bid_volume_3 bid_price_3 bid_volume_4 bid_price_4 bid_volume_5 bid_price_5
7
+ ask_volume_1 ask_price_1 ask_volume_2 ask_price_2 ask_volume_3 ask_price_3 ask_volume_4 ask_price_4 ask_volume_5 ask_price_5
8
+ date time)
9
+
10
+ FIELDS_ZH = %w(股票名 开盘价 收盘价 当前价 今日最高 今日最低 买一价 卖一价 成交量 成交额
11
+ 买一挂单 买一价 买二挂单 买二价 买三挂单 买三价 买四挂单 买四价 买五挂单 买五价
12
+ 卖一挂单 卖一价 卖二挂单 卖二价 卖三挂单 卖三价 卖四挂单 卖四价 卖五挂单 卖五价
13
+ 日期 时间)
14
+
15
+ FIELDS.each_with_index do |field, index|
16
+ __send__(:attr_accessor, field.to_sym)
17
+ __send__(:alias_method, FIELDS_ZH[index].to_sym, field.to_sym)
18
+ end
19
+
20
+ def initialize(data)
21
+ return nil if data == nil
22
+ FIELDS.each_with_index do |field, index|
23
+ instance_variable_set("@#{field}", (data[index].nil? ? nil : data[index]))
24
+ end
25
+ end
26
+
27
+ def description
28
+ FIELDS_ZH.each do |field|
29
+ puts field + " : " + self.send(field)
30
+ end
31
+ end
32
+
33
+ BASE_HOST = "hq.sinajs.cn"
34
+ CURRENT_INFO = "/list="
35
+ def self.quote(stock_code)
36
+ data = Net::HTTP.get(BASE_HOST, CURRENT_INFO + stock_code)
37
+ Stock.new(parse(data)) if data != nil
38
+ end
39
+
40
+ def self.parse(data)
41
+ data = data.split('=')
42
+ if data[1].length < 10
43
+ return nil
44
+ else
45
+ data = data[1].split(',')[0..-2]
46
+ data[0] = data[0][1..-1].force_encoding("GBK").encode("UTF-8")
47
+ return data
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,4 @@
1
+ # =>CStock::VERSION
2
+ module CStock
3
+ VERSION = '0.1.0'
4
+ end
@@ -0,0 +1,11 @@
1
+ require 'cstock'
2
+ require 'spec_helper'
3
+
4
+ describe CStock::Stock do
5
+ describe 'quote' do
6
+ it "get stock info" do
7
+ stock = CStock::Stock.quote('sh600000')
8
+ expect(stock.name).to eq("浦发银行")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,91 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ RSpec.configure do |config|
20
+ # rspec-expectations config goes here. You can use an alternate
21
+ # assertion/expectation library such as wrong or the stdlib/minitest
22
+ # assertions if you prefer.
23
+ config.expect_with :rspec do |expectations|
24
+ # This option will default to `true` in RSpec 4. It makes the `description`
25
+ # and `failure_message` of custom matchers include text for helper methods
26
+ # defined using `chain`, e.g.:
27
+ # be_bigger_than(2).and_smaller_than(4).description
28
+ # # => "be bigger than 2 and smaller than 4"
29
+ # ...rather than:
30
+ # # => "be bigger than 2"
31
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
32
+ end
33
+
34
+ # rspec-mocks config goes here. You can use an alternate test double
35
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
36
+ config.mock_with :rspec do |mocks|
37
+ # Prevents you from mocking or stubbing a method that does not exist on
38
+ # a real object. This is generally recommended, and will default to
39
+ # `true` in RSpec 4.
40
+ mocks.verify_partial_doubles = true
41
+ end
42
+
43
+ # The settings below are suggested to provide a good initial experience
44
+ # with RSpec, but feel free to customize to your heart's content.
45
+ =begin
46
+ # These two settings work together to allow you to limit a spec run
47
+ # to individual examples or groups you care about by tagging them with
48
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
49
+ # get run.
50
+ config.filter_run :focus
51
+ config.run_all_when_everything_filtered = true
52
+
53
+ # Limits the available syntax to the non-monkey patched syntax that is
54
+ # recommended. For more details, see:
55
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
56
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
57
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
58
+ config.disable_monkey_patching!
59
+
60
+ # This setting enables warnings. It's recommended, but in some cases may
61
+ # be too noisy due to issues in dependencies.
62
+ config.warnings = true
63
+
64
+ # Many RSpec users commonly either run the entire suite or an individual
65
+ # file, and it's useful to allow more verbose output when running an
66
+ # individual spec file.
67
+ if config.files_to_run.one?
68
+ # Use the documentation formatter for detailed output,
69
+ # unless a formatter has already been configured
70
+ # (e.g. via a command-line flag).
71
+ config.default_formatter = 'doc'
72
+ end
73
+
74
+ # Print the 10 slowest examples and example groups at the
75
+ # end of the spec run, to help surface which specs are running
76
+ # particularly slow.
77
+ config.profile_examples = 10
78
+
79
+ # Run specs in random order to surface order dependencies. If you find an
80
+ # order dependency and want to debug it, you can fix the order by providing
81
+ # the seed, which is printed after each run.
82
+ # --seed 1234
83
+ config.order = :random
84
+
85
+ # Seed global randomization in this process using the `--seed` CLI option.
86
+ # Setting this allows you to use `--seed` to deterministically reproduce
87
+ # test failures related to randomization by passing the same `--seed` value
88
+ # as the one that triggered the failure.
89
+ Kernel.srand config.seed
90
+ =end
91
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cstock
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Aston Fu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: A ruby gem that get chinese stock infomation.
28
+ email: im@fuhao.im
29
+ executables:
30
+ - cstock
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .rspec
35
+ - LICENSE
36
+ - README.md
37
+ - bin/cstock
38
+ - cstock.gemspec
39
+ - lib/cstock.rb
40
+ - lib/cstock/stock.rb
41
+ - lib/cstock/version.rb
42
+ - spec/cstock_spec.rb
43
+ - spec/spec_helper.rb
44
+ homepage: https://github.com/astonfu/cstock
45
+ licenses:
46
+ - MIT
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 2.2.2
65
+ signing_key:
66
+ specification_version: 4
67
+ summary: Get chinese stock infomation.
68
+ test_files: []
69
+ has_rdoc: