bitstamp 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: