bitstamp 0.1.0 → 0.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/README.md CHANGED
@@ -20,6 +20,14 @@ end
20
20
  If you fail to set your `key` or `secret` a `MissingConfigExecption`
21
21
  will be raised.
22
22
 
23
+ ## Bitstamp ticker
24
+
25
+ The bitstamp ticker. Returns `last`, `high`, `low`, `volume`, `bid` and `ask`
26
+
27
+ ```ruby
28
+ Bitstamp.ticker
29
+ ```
30
+
23
31
  ## Fetch your open order
24
32
 
25
33
  Returns an array with your open orders.
@@ -44,7 +52,19 @@ Returns an `Order` object.
44
52
  Bitstamp.orders.buy(amount: 1.0, price: 111)
45
53
  ```
46
54
 
47
- To be continued!
55
+ *To be continued!**
56
+
57
+ # Tests
58
+
59
+ If you'd like to run the tests you need to create a yaml file in the
60
+ root of the gem `bit_stamp_details.yml` which holds your authentication
61
+ details for Bitstamp.
62
+
63
+ ```yaml
64
+ bitstamp:
65
+ id: 'bitstamp id'
66
+ password: 'bitstamp password'
67
+ ```
48
68
 
49
69
  ## Contributing
50
70
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "bitstamp"
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeffrey Wilcke"]
@@ -27,9 +27,11 @@ Gem::Specification.new do |s|
27
27
  "bitstamp.gemspec",
28
28
  "lib/bitstamp.rb",
29
29
  "lib/bitstamp/collection.rb",
30
+ "lib/bitstamp/helper.rb",
30
31
  "lib/bitstamp/model.rb",
31
32
  "lib/bitstamp/net.rb",
32
33
  "lib/bitstamp/orders.rb",
34
+ "lib/bitstamp/ticker.rb",
33
35
  "spec/bitstamp_spec.rb",
34
36
  "spec/collection_spec.rb",
35
37
  "spec/orders_spec.rb",
@@ -4,10 +4,12 @@ require 'active_model'
4
4
  require 'curb'
5
5
 
6
6
  require 'bitstamp/net'
7
+ require 'bitstamp/helper'
7
8
  require 'bitstamp/collection'
8
9
  require 'bitstamp/model'
9
10
 
10
11
  require 'bitstamp/orders'
12
+ require 'bitstamp/ticker'
11
13
 
12
14
  String.send(:include, ActiveSupport::Inflector)
13
15
 
@@ -34,6 +36,10 @@ module Bitstamp
34
36
  JSON.parse Bitstamp::Net.get('/balance').body_str
35
37
  end
36
38
 
39
+ def self.ticker
40
+ return Bitstamp::Ticker.from_api
41
+ end
42
+
37
43
  def self.setup
38
44
  yield self
39
45
  end
@@ -12,33 +12,19 @@ module Bitstamp
12
12
  end
13
13
 
14
14
  def all(options = {})
15
- parse_objects! Bitstamp::Net::get(self.path).body_str, self.model
15
+ Bitstamp::Helper.parse_objects! Bitstamp::Net::get(self.path).body_str, self.model
16
16
  end
17
17
 
18
18
  def create(options = {})
19
- parse_object! Bitstamp::Net::post(self.path, options).body_str, self.model
19
+ Bitstamp::Helper.parse_object! Bitstamp::Net::post(self.path, options).body_str, self.model
20
20
  end
21
21
 
22
22
  def find(id, options = {})
23
- parse_object! Bistamp::Net::get("#{self.path}/#{id}").body_str, self.model
23
+ Bitstamp::Helper.parse_object! Bistamp::Net::get("#{self.path}/#{id}").body_str, self.model
24
24
  end
25
25
 
26
26
  def update(id, options = {})
27
- parse_object! Bitstamp::Net::patch("#{self.path}/#{id}", options).body_str, self.model
28
- end
29
-
30
- protected
31
- def parse_objects!(string, klass)
32
- objects = JSON.parse(string)
33
- objects.collect do |t_json|
34
- parse_object!(t_json, klass)
35
- end
36
- end
37
-
38
- def parse_object!(object, klass)
39
- object = JSON.parse(object) if object.is_a? String
40
-
41
- klass.new(object)
27
+ Bitstamp::Helper.parse_object! Bitstamp::Net::patch("#{self.path}/#{id}", options).body_str, self.model
42
28
  end
43
29
  end
44
30
  end
@@ -0,0 +1,16 @@
1
+ module Bitstamp
2
+ module Helper
3
+ def self.parse_objects!(string, klass)
4
+ objects = JSON.parse(string)
5
+ objects.collect do |t_json|
6
+ parse_object!(t_json, klass)
7
+ end
8
+ end
9
+
10
+ def self.parse_object!(object, klass)
11
+ object = JSON.parse(object) if object.is_a? String
12
+
13
+ klass.new(object)
14
+ end
15
+ end
16
+ end
@@ -1,12 +1,12 @@
1
1
  module Bitstamp
2
2
  class Orders < Bitstamp::Collection
3
3
  def all(options = {})
4
- parse_objects! Bitstamp::Net::post('/open_orders').body_str, self.model
4
+ Bitstamp::Helper.parse_objects! Bitstamp::Net::post('/open_orders').body_str, self.model
5
5
  end
6
6
 
7
7
  def create(options = {})
8
8
  path = (options[:type] == Bitstamp::Order::SELL ? "/sell" : "/buy")
9
- parse_object! Bitstamp::Net::post(path, options).body_str, self.model
9
+ Bitstamp::Helper.parse_object! Bitstamp::Net::post(path, options).body_str, self.model
10
10
  end
11
11
 
12
12
  def sell(options = {})
@@ -0,0 +1,16 @@
1
+ module Bitstamp
2
+ class Ticker < Bitstamp::Model
3
+ attr_accessor :last, :high, :low, :volume, :bid, :ask
4
+
5
+ def self.from_api
6
+ Bitstamp::Helper.parse_object!(Bitstamp::Net.get('/ticker').body_str, self)
7
+ end
8
+
9
+ def self.method_missing method, *args
10
+ ticker = self.from_api
11
+ return ticker if ticker.respond_to? :method
12
+
13
+ super
14
+ end
15
+ end
16
+ end
@@ -19,6 +19,10 @@ describe Bitstamp do
19
19
  Bitstamp.should respond_to :orders
20
20
  end
21
21
 
22
+ it 'should have a ticker helper method' do
23
+ Bitstamp.ticker.should be_kind_of Bitstamp::Ticker
24
+ end
25
+
22
26
  it 'should list information about your balance' do
23
27
  read_bitstamp_yaml
24
28
 
@@ -10,10 +10,10 @@ describe Bitstamp::Orders do
10
10
  end
11
11
 
12
12
  it "should sell bitcoins" do
13
- puts Bitstamp.orders.sell(:amount => 1, :price => 1000).inspect
13
+ Bitstamp.orders.sell(:amount => 1, :price => 1000)
14
14
  end
15
15
 
16
16
  it "should buy bitcoins" do
17
- puts Bitstamp.orders.buy(:amount => 1, :price => 1.01).inspect
17
+ Bitstamp.orders.buy(:amount => 1, :price => 1.01)
18
18
  end
19
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitstamp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -141,9 +141,11 @@ files:
141
141
  - bitstamp.gemspec
142
142
  - lib/bitstamp.rb
143
143
  - lib/bitstamp/collection.rb
144
+ - lib/bitstamp/helper.rb
144
145
  - lib/bitstamp/model.rb
145
146
  - lib/bitstamp/net.rb
146
147
  - lib/bitstamp/orders.rb
148
+ - lib/bitstamp/ticker.rb
147
149
  - spec/bitstamp_spec.rb
148
150
  - spec/collection_spec.rb
149
151
  - spec/orders_spec.rb
@@ -163,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
165
  version: '0'
164
166
  segments:
165
167
  - 0
166
- hash: -2003054976913405923
168
+ hash: 2421895036503918576
167
169
  required_rubygems_version: !ruby/object:Gem::Requirement
168
170
  none: false
169
171
  requirements: