onedrb 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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