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 +7 -0
- data/README.md +18 -0
- data/lib/monero.rb +25 -0
- data/lib/monero/client.rb +30 -0
- data/lib/monero/config.rb +9 -0
- data/lib/monero/payment.rb +6 -0
- data/lib/monero/version.rb +3 -0
- data/lib/monero/wallet.rb +60 -0
- data/lib/xmr.rb +0 -0
- data/monero.gemspec +28 -0
- metadata +109 -0
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,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: []
|