monero 0.0.0.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
+ SHA1:
3
+ metadata.gz: dd84009849fb3291334b23b153374a56390dac55
4
+ data.tar.gz: e772a95b40ea13a21aa82ac9bfc037837404ba45
5
+ SHA512:
6
+ metadata.gz: 45c2b677f3a24f406d8cd8366c8ac724e3ea675a4e9dd4b4b5664a2f4200de3ec2fe11a258384f4782e1da96810bf52e98024a3c1148a8acc2b7533ee6a79466
7
+ data.tar.gz: e560bc30710f1cd45745f529f992fb5b490aebde01c8ae199348b3681d0f07b1fa5e21145a9f29ac9d97a3011db417e1019547ad9b2f4fb7989d75462d0e4065
data/README.md ADDED
@@ -0,0 +1,18 @@
1
+ # Monero Ruby Client
2
+
3
+ Ruby client to connect and use Monero via monero-wallet-rpc.
4
+
5
+
6
+ Set your rpc details
7
+
8
+ Monero.config.host = "192.168.1.226"
9
+ Monero.config.port = "18081"
10
+ Monero.config.username = "username"
11
+ Monero.config.password = "password"
12
+
13
+
14
+ usage:
15
+
16
+ Monero::Wallet.balance
17
+
18
+ ...
data/lib/monero.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'money'
2
+ require 'monero/config'
3
+ require 'monero/payment'
4
+ require 'monero/client'
5
+ require 'monero/version'
6
+ require 'monero/wallet'
7
+
8
+ module Monero
9
+ def self.config
10
+ @@config ||= Monero::Config.instance
11
+ end
12
+ end
13
+
14
+ # ActiveSupport.on_load(:active_record) do
15
+ # include Monero::Model
16
+ # end
17
+
18
+
19
+
20
+ Money::Currency.register({ :priority => 1, :iso_code => "xmr", :iso_numeric => "846", :name => "Monero", :symbol => "XMR", :subunit => "", :subunit_to_unit => 1000000000000, :decimal_mark => ".", :thousands_separator => ""})
21
+ #
22
+ class XMR
23
+ def self.new(amount); Money.new(amount, :xmr); end
24
+ def to_s; Money.new(amount, :xmr).format.to_s; end
25
+ end
@@ -0,0 +1,30 @@
1
+ module Monero
2
+ class Client
3
+
4
+ def self.request(method, params=nil)
5
+ params_string = ""
6
+ if params
7
+ # TODO multi params looping
8
+ k,v = params.first
9
+ params_string = '"'+k.to_s+'": "'+v.to_s+'"'
10
+ end
11
+
12
+ data = '{"jsonrpc":"2.0","id":"0","method": "'+method+'", "params": { '+params_string+' } }'
13
+ args = " -s"
14
+ args << " -u #{Monero.config.username}:#{Monero.config.password} --digest"
15
+ args << " -X POST #{base_uri}/json_rpc"
16
+ args << " -d '#{data}'"
17
+ args << " -H 'Content-Type: application/json'"
18
+ json = JSON.parse(`curl #{args}`)
19
+ json["result"]
20
+ end
21
+
22
+ private
23
+
24
+ def self.base_uri
25
+ "http://#{Monero.config.host}:#{Monero.config.port}"
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,9 @@
1
+ require 'singleton'
2
+
3
+ module Monero
4
+ class Config
5
+ include Singleton
6
+ attr_accessor :host, :port, :username, :password
7
+
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ module Monero
2
+
3
+ class Payment
4
+ end
5
+
6
+ end
@@ -0,0 +1,3 @@
1
+ module Monero
2
+ VERSION = "0.0.0.1"
3
+ end
@@ -0,0 +1,60 @@
1
+ module Monero
2
+
3
+ class Wallet
4
+
5
+ def self.getaddress
6
+ Monero::Client.request("getaddress")["address"]
7
+ end
8
+ def self.address; getaddress; end
9
+
10
+ def self.getbalance
11
+ Monero::Client.request("getbalance")
12
+ end
13
+
14
+ def self.balance
15
+ XMR.new(getbalance["balance"])
16
+ end
17
+
18
+ def self.unlocked_balance
19
+ XMR.new(getbalance["unlocked_balance"])
20
+ end
21
+
22
+ def self.getaddress
23
+ Monero::Client.request("getaddress")["address"]
24
+ end
25
+
26
+ def self.getheight
27
+ Monero::Client.request("getheight")["height"]
28
+ end
29
+
30
+ def self.query_key(type)
31
+ raise ArgumentError unless ["mnemonic", "view_key"].include?(type.to_s)
32
+ Monero::Client.request("query_key", {key_type: type})["key"]
33
+ end
34
+
35
+ def self.make_integrated_address(payment_id = "")
36
+ # TODO
37
+ # Check if payment_id is correct format
38
+ Monero::Client.request("make_integrated_address", {payment_id: payment_id})
39
+ end
40
+
41
+ def self.incoming_transfers(type)
42
+ raise ArgumentError unless ["all", "available", "unavailable"].include?(type.to_s)
43
+ json = Monero::Client.request("incoming_transfers", {transfer_type: type})
44
+ json["transfers"] || []
45
+ end
46
+
47
+ def self.get_payments(payment_id)
48
+ payments = Monero::Client.request("get_payments", {payment_id: payment_id})["payments"] || []
49
+ # TODO
50
+ # make it a Monero::Payment that hase a amount as XMR and confirmations (getheight - tx.block_height)
51
+ payments.map{|x| Payment.from_raw(x) }
52
+ end
53
+
54
+ def self.get_transfer_by_txid(txid)
55
+ Monero::Client.request("get_transfer_by_txid", {txid: txid })
56
+ end
57
+
58
+ end
59
+
60
+ end
data/lib/xmr.rb ADDED
File without changes
data/monero.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'monero/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "monero"
8
+ spec.version = Monero::VERSION
9
+ spec.authors = ["Tim Kretschmer"]
10
+ spec.email = ["tim@krtschmr.de"]
11
+ spec.description = %q{A Monero-Wallet-RPC ruby client}
12
+ spec.summary = %q{A Monero-Wallet-RPC ruby client}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency 'sqlite3'
24
+
25
+ spec.required_rubygems_version = '>= 1.3.6'
26
+
27
+ spec.add_dependency "money"
28
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: monero
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tim Kretschmer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-09-27 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: '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
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: money
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: A Monero-Wallet-RPC ruby client
70
+ email:
71
+ - tim@krtschmr.de
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - README.md
77
+ - lib/monero.rb
78
+ - lib/monero/client.rb
79
+ - lib/monero/config.rb
80
+ - lib/monero/payment.rb
81
+ - lib/monero/version.rb
82
+ - lib/monero/wallet.rb
83
+ - lib/xmr.rb
84
+ - monero.gemspec
85
+ homepage: ''
86
+ licenses:
87
+ - MIT
88
+ metadata: {}
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.3.6
103
+ requirements: []
104
+ rubyforge_project:
105
+ rubygems_version: 2.6.11
106
+ signing_key:
107
+ specification_version: 4
108
+ summary: A Monero-Wallet-RPC ruby client
109
+ test_files: []