bitopro 0.1.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 592f45307f73b0a481ac447c06b61154a1fa302b13522de77b0d2c7439fe9511
4
+ data.tar.gz: 7835a701ec02aa883e3a168c7db6690adef5d95d5d7a045180b6e4e9499cc2f0
5
+ SHA512:
6
+ metadata.gz: 7eaa44e533d2788c03394d7aa725017e3b0396446072b1e30f4a7801a85b2d5bcb2c09056cc47baa90c5d290b5c87d84b3374e648b9618c2900d46a4023a94a5
7
+ data.tar.gz: b523c8cb40a295c8efa6d2f9b584206b56402b02cedd3a4d11b149e1fd73c9a7c2bc5e492ac2cba0c978525b34691c5a0a20960d85fcb96911716a9207784738
@@ -0,0 +1,35 @@
1
+ module Bitopro
2
+ class Config
3
+ class Validator
4
+ class << self
5
+ Error = Class.new(StandardError)
6
+
7
+ def validate(config)
8
+ errors = []
9
+
10
+ unless valid_key?(config)
11
+ errors << 'key is required'
12
+ end
13
+ unless valid_secret?(config)
14
+ errors << 'secret is required'
15
+ end
16
+
17
+ errors.empty?
18
+ end
19
+
20
+ private
21
+
22
+ def valid_key?(config)
23
+ return true if config.key.to_i > 0
24
+ false
25
+ end
26
+
27
+ def valid_secret?(config)
28
+ return false unless config.secret.is_a?(String)
29
+ return false if config.secret.empty?
30
+ true
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,25 @@
1
+ module Bitopro
2
+ class Config
3
+ class << self
4
+ # @param [Config] new_instance
5
+ attr_writer :instance
6
+
7
+ # @return [Config]
8
+ def instance
9
+ @instance ||= new
10
+ end
11
+ end
12
+
13
+ attr_accessor :key
14
+ attr_accessor :secret
15
+
16
+ def initialize(user_config = {})
17
+ self.key = user_config[:key]
18
+ self.secret = user_config[:secret]
19
+ end
20
+
21
+ def valid?
22
+ Validator.validate(self)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,3 @@
1
+ module Bitopro
2
+ VERSION = "0.1.1".freeze
3
+ end
data/lib/bitopro.rb ADDED
@@ -0,0 +1,40 @@
1
+ require "rest-client"
2
+ require "openssl"
3
+ require "json"
4
+
5
+ require "bitopro/version"
6
+ require "bitopro/config"
7
+ require "bitopro/config/validator"
8
+
9
+ module Bitopro
10
+ BASE_URL = "https://api.bitopro.com/v2".freeze
11
+
12
+ class << self
13
+ # Configures the Bitopro API.
14
+ #
15
+ # @example
16
+ # Bitopro.configure do |c|
17
+ # config.key = 113743
18
+ # config.secret = 'fd04e13d806a90f96614ad8e529b2822'
19
+ # end
20
+ def configure
21
+ yield config = Bitopro::Config.instance
22
+ end
23
+
24
+ def configured?
25
+ Bitopro::Config.instance.valid?
26
+ end
27
+
28
+
29
+ end
30
+
31
+ def self.order_book(currency_pair)
32
+ JSON.parse(resource["order-book"][currency_pair].get)
33
+ end
34
+
35
+ protected
36
+
37
+ def self.resource
38
+ @resource ||= RestClient::Resource.new(BASE_URL)
39
+ end
40
+ end
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Bitopro do
4
+ it "has a version number" do
5
+ expect(Bitopro::VERSION).not_to be nil
6
+ end
7
+
8
+ describe ".configure" do
9
+ before do
10
+ Bitopro::Config.instance = Bitopro::Config.new
11
+ end
12
+
13
+ it "makes Bitopro configured" do
14
+ expect(described_class).not_to be_configured
15
+
16
+ described_class.configure do |c|
17
+ c.key = 1
18
+ c.secret = '2'
19
+ end
20
+
21
+ expect(described_class).to be_configured
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ require "rspec"
2
+ require "bundler/setup"
3
+ require 'webmock/rspec'
4
+ require 'pry'
5
+ require 'bitopro'
6
+
7
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each { |file| require file }
8
+
9
+ WebMock.disable_net_connect!
10
+
11
+ RSpec.configure do |config|
12
+ # Enable flags like --only-failures and --next-failure
13
+ config.example_status_persistence_file_path = ".rspec_status"
14
+
15
+ # Disable RSpec exposing methods globally on `Module` and `main`
16
+ config.disable_monkey_patching!
17
+
18
+ config.expect_with :rspec do |c|
19
+ c.syntax = :expect
20
+ end
21
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bitopro
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - niclin
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.11.3
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.11.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ description: Ruby wrapper for the Bitopro API.
84
+ email:
85
+ - bboyceo@hotmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - lib/bitopro.rb
91
+ - lib/bitopro/config.rb
92
+ - lib/bitopro/config/validator.rb
93
+ - lib/bitopro/version.rb
94
+ - spec/bitopro/api_spec.rb
95
+ - spec/spec_helper.rb
96
+ homepage: https://github.com/niclin/bitopro
97
+ licenses:
98
+ - MIT
99
+ metadata:
100
+ allowed_push_host: https://rubygems.org
101
+ homepage_uri: https://github.com/niclin/bitopro
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.7.8
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: bitopro-0.1.1
122
+ test_files:
123
+ - spec/spec_helper.rb
124
+ - spec/bitopro/api_spec.rb