onedrb 0.1.0 → 0.2.0

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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/onedrb.rb +49 -8
  4. data.tar.gz.sig +0 -0
  5. metadata +34 -34
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eab24c21c8453a726e65959c8b47f6074d08bfee91d25860f23935b7c20831a0
4
- data.tar.gz: c40e0aa09c94232e478c826a36df32585b17dc221c1a9ca5d860ff245f8c24b1
3
+ metadata.gz: 0e1dea351f77a02d587369c3d60ee375e608c1e10c42598012403c101c54cff6
4
+ data.tar.gz: 31e34ab07655ab42669955f8a02dcf68c0afa3989797e6b8cd6765f0b9bff61d
5
5
  SHA512:
6
- metadata.gz: 218e690d7e795f49fd2f09baa8fd86399bd0d6192cd14cce2db370657e5422066719fd18ea7cb0f1adfa7bfb5abaa4002c2b5b62be43ba3abc74cc07adb1ddbf
7
- data.tar.gz: 5146e2915e49b03dede0d04b0ea84d426b7a5150b01d719ff65a6da0b48b857221c6dfdbb9a007146e7ae5d963f8d03485e5004db26d709806712f0f3d542dd8
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: nil, log: nil)
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
- @obj.send(sym, *args)
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.1.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
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwODEzMTkwMTM0WhcN
15
- MjAwODEyMTkwMTM0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDwerdP
17
- aVKeP5RVh9q4v/9L1K61jr2S4/uirJ64zby8+phkUyRSUj5qDKv3revhEqaxFg5I
18
- ujs2zQNpwrVrNz5fl/adplygVNFF6Pa4KJq+IpnhafhRXCpCEBkmU7M+XzLVgipM
19
- 4AHbrRG3jCxevFK7bBSqEA+/snRhcBq9gPSnIv0opaVnugfH+KaCXc8S9CEkbqfW
20
- Xm9nf1eQ4Vr0hkL/LsXfxs3WlNL3k/m1PZ+v0wCnyPYQDJfudGGvoK3c5fF/UzEW
21
- hRjiby6zjBw4E2NutxAwvnCMcCQ2ASFoiu+TP9CVn9c7IxIQ4vo1R+HFeibG4qR6
22
- +eJ6Z3g5EazzjnrT8qfnuJJ/zP/JNppKZHAhDjYMzW65q+oePHLcRw/VgX0tSLpC
23
- pMYfcbi5UJGJR01wZ1RoE07ku+aG8Ke3oslkz/bCtNB69UISaascyxauSDuFIX8n
24
- Ft4fk8jo8Y/2bBjYgXiCVcPpA6orR342+H/WEs8T2lWoJewr5GGzn2/T280CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUTQ8/qr6P
26
- uacX1pIgbur6QRY1HTUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
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
- BgkqhkiG9w0BAQsFAAOCAYEAnb2fmshYrAcUHgEUdqetowCWZJxJ9zzR8xslCAX4
29
- zeJKOgOVgGWcoUUgsDotW5hK2pafZj8fU749CbaCTj1QqT6d4D22gKtP0TNzQ4/e
30
- JLXwO40Ot4px4D4dSN318G8y6uoPv/4ArlbccXlIOlcddS2fYWSRfLQCqhWFMYj4
31
- 0wpw6Zjjmrb5PlF0hMDvm3Te2JgebdnAXG4I0IJkuMdMFIbDG+q65WpsMug4CpLu
32
- DZT2BYXoaz72J9wLcN7BqLsOP7uL6GnaswpM4BUaq9sZWXS/B47KNE0PAZy4IT20
33
- 0n3EApJpibKRBZJR/L4WsuxyekLleMmVgWXS1bqgJUsmSIbUcjB+atazO/mx1beT
34
- cu8vU4iTC0XJWbLmzTZt9FH9tbulje2nlE+Pt4MjVWAZivWRkXlRsfy8YFytzLZg
35
- FbeYaP5rMZ9xxTvO5hDjh3BEOwHK9GXxMPsakyl7b4sUHJKEw5wtyjkYsMwrJmj9
36
- XkF/ReqRKodw4HNu5DG4wj6O
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: 2019-08-13 00:00:00.000000000 Z
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.2'
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.2'
56
+ version: '0.3'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.3.0
60
60
  description:
61
- email: james@jamesrobertson.eu
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.0.1
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