onedrb 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/onedrb.rb +49 -8
- data.tar.gz.sig +0 -0
- metadata +34 -34
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e1dea351f77a02d587369c3d60ee375e608c1e10c42598012403c101c54cff6
|
4
|
+
data.tar.gz: 31e34ab07655ab42669955f8a02dcf68c0afa3989797e6b8cd6765f0b9bff61d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2abc2da0df0795521dd76c3e610ccdfa7e6f7b3bbac546e4c167364e7b1797786749326b235bbe9487f54c19087ac2033cab8b89a287d6e4efe1093e74c6db8b
|
7
|
+
data.tar.gz: fc4a215efd2142d0852ef91b2f6fa8749599a20fe8cb923430c1e04aace1177139293613d7f3a4cfb5996d536800140d95ff77e5dc989a5156de1e5586e689d1
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/onedrb.rb
CHANGED
@@ -7,6 +7,10 @@
|
|
7
7
|
require 'drb'
|
8
8
|
require 'c32'
|
9
9
|
|
10
|
+
# Note: The Server object can also use a default Hash object.
|
11
|
+
# Which allows the Client object to define what user-defined objects the server
|
12
|
+
# should host dynamically.
|
13
|
+
|
10
14
|
|
11
15
|
class OneDrbError < Exception
|
12
16
|
end
|
@@ -17,21 +21,21 @@ module OneDrb
|
|
17
21
|
class Server
|
18
22
|
using ColouredText
|
19
23
|
|
20
|
-
def initialize(host: '127.0.0.1', port: (49152..65535).to_a.sample.to_s,
|
21
|
-
obj:
|
24
|
+
def initialize(host: '127.0.0.1', port: (49152..65535).to_a.sample.to_s,
|
25
|
+
obj: Hash.new, log: nil)
|
22
26
|
|
23
27
|
log.info self.class.to_s + '/initialize: active' if log
|
24
|
-
|
28
|
+
|
25
29
|
@host, @port, @log = host, port, log
|
26
30
|
|
27
31
|
if obj then
|
28
|
-
@obj = obj
|
32
|
+
@obj = obj
|
29
33
|
else
|
30
34
|
msg = "No object supplied!".error
|
31
35
|
puts msg
|
32
36
|
raise OneDrbError, msg
|
33
37
|
end
|
34
|
-
|
38
|
+
|
35
39
|
log.info self.class.to_s +'/initialize: completed' if log
|
36
40
|
|
37
41
|
end
|
@@ -50,7 +54,7 @@ module OneDrb
|
|
50
54
|
|
51
55
|
class Client
|
52
56
|
using ColouredText
|
53
|
-
|
57
|
+
|
54
58
|
def initialize(host: '127.0.0.1', port: nil)
|
55
59
|
|
56
60
|
DRb.start_service
|
@@ -62,10 +66,47 @@ module OneDrb
|
|
62
66
|
|
63
67
|
end
|
64
68
|
|
69
|
+
# Makes a remote call in 1 line of code using a URI
|
70
|
+
# e.g. OneDrb::Client.call 'odrb://clara.home/fun/go?arg=James&age=49'
|
71
|
+
#
|
72
|
+
def self.call(s, port: nil)
|
73
|
+
|
74
|
+
r = s.match(/^odrb:\/\/([^\/]+)\/([^\/]+)\/([^\?]+)\??(.*)/).captures
|
75
|
+
|
76
|
+
rawhostname, service, methodname, rawargs = r
|
77
|
+
hostname, rawport = rawhostname.split(':',2)
|
78
|
+
port ||= rawport
|
79
|
+
|
80
|
+
rawargs2 = rawargs&.split('&').map {|x| x.split('=')}
|
81
|
+
|
82
|
+
a1, a2 = rawargs2.partition do |field, value|
|
83
|
+
field.downcase.to_sym == :arg
|
84
|
+
end
|
85
|
+
|
86
|
+
h = a2.map {|k,v| [k.to_sym, v]}.to_h
|
87
|
+
a = a1.map(&:last)
|
88
|
+
|
89
|
+
client = OneDrb::Client.new host: hostname, port: port
|
90
|
+
proc1 = client[service].method(methodname.to_sym)
|
91
|
+
|
92
|
+
h.any? ? proc1.call(*a, **h) : proc1.call(*a)
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
def remote()
|
97
|
+
@obj
|
98
|
+
end
|
99
|
+
|
65
100
|
def method_missing(sym, *args)
|
66
|
-
|
101
|
+
|
102
|
+
if args.last.is_a?(Hash) then
|
103
|
+
@obj.send(sym, *args[0..-2], **args.last)
|
104
|
+
else
|
105
|
+
@obj.send(sym, *args)
|
106
|
+
end
|
107
|
+
|
67
108
|
end
|
68
109
|
|
69
|
-
end
|
110
|
+
end
|
70
111
|
|
71
112
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onedrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,54 +11,54 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwNDIyMTkyNjA4WhcN
|
15
|
+
MjMwNDIyMTkyNjA4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDLwpuN
|
17
|
+
87Qes2zJkZyL5GageArGWLwP+X6ZK1sgfpoQiL9XoKDod45sOuRdnX+UckRngmGs
|
18
|
+
8/cCg1nlE7FzFefwi7SkTF1BdQkagiSAtwBja0ikad/LBICfcnX1QlvyK0B0knxI
|
19
|
+
1igPSFeUXOKg2Jf3GIgVnjjIq2L9cVBqveRU3ffuCsM3sh+dESExqx53ZsSK3K9B
|
20
|
+
UiRujNSXrZpfF1IrPyXKjH5vZ5cP4Rhb4G+Ml19F0R5Wf5WLNsiTosAooFi+ywYv
|
21
|
+
NzjA+p2TgNFCEjKvImMdD8uSFC3UaSGuG5RDFfluGyI9ogofdGMn/gXa2wGa008w
|
22
|
+
KZqxqi9naZdwrIbLt2gDKyUtbL7/ceUBHkJqhk5neBZM7TkfaJBcKwtB4FsdZ7MK
|
23
|
+
mBBAp7GW7k+ruQKPdZwJofO6T4TAJABNxDhVOlfQG/OpO4qY7MBiPUfBkmA4vjKf
|
24
|
+
xoFvE05KcGuZb0hWrSiM9urFs29GGR100duy4HmJTTBNvhYCsd33ykNTAxkCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUrh/OL4DZ
|
26
|
+
7kB+QntxOWXmDhPz/qgwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEANcUl8rOFNRz6Pk3OarkDKv+0VAZtc+YR6rfFj7Ws
|
29
|
+
OH9f1eIEmyyDQBTN17VYXLvI3FlewJcbkr5u9DV62W80cbzkC27nSU6kicaAh7C3
|
30
|
+
cqgGd084jS7DF8+7RhVO5QBFKwmYCCr5yseUmIW5KtPcR0ey36X3PWHPQfHap1h5
|
31
|
+
vp6PdlpxEON8RhJ2UVUIPFFTr3Y8TYu0ya7Q0E7oPqor6tuJGtRsT3HMEGT5/KPd
|
32
|
+
ccHI65ygp/STtdROe5WVPmU+PafUoCRtGUHR6m5Petdsy7xDsPRW7HfGb95BFj6t
|
33
|
+
m/Wdnbmg9hmU6coqbogGGnS+4SvRuRlBRI6NeGB5/p6/zj7snat1hdAp9kPyakBm
|
34
|
+
jjhW5l95yuhsvvVMD684GS3sVVSbOTCtbZpvYDn9IoG0mutmqFU6Y2jMBHO/aZd9
|
35
|
+
lK7OtCGPauDHVuIWDW0EnHb+MMBt6F5SqC+PSy9iOzs4zAWkJMFp86MOEK2yrfnO
|
36
|
+
/ghrVtneK08DqmYOaive8I6P
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-04-22 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: c32
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.2.0
|
47
44
|
- - "~>"
|
48
45
|
- !ruby/object:Gem::Version
|
49
|
-
version: '0.
|
46
|
+
version: '0.3'
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.3.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 0.2.0
|
57
54
|
- - "~>"
|
58
55
|
- !ruby/object:Gem::Version
|
59
|
-
version: '0.
|
56
|
+
version: '0.3'
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.3.0
|
60
60
|
description:
|
61
|
-
email:
|
61
|
+
email: digital.robertson@gmail.com
|
62
62
|
executables: []
|
63
63
|
extensions: []
|
64
64
|
extra_rdoc_files: []
|
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
|
-
rubygems_version: 3.
|
86
|
+
rubygems_version: 3.2.22
|
87
87
|
signing_key:
|
88
88
|
specification_version: 4
|
89
89
|
summary: Makes it convenient to make an object remotely accessible.
|
metadata.gz.sig
CHANGED
Binary file
|