rsfhelper 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 98cc6a4053a6290b6eff1751d6290608379995c6
4
- data.tar.gz: 8812a1d8f8d105abff13b44db7bc83571a1a2ad0
2
+ SHA256:
3
+ metadata.gz: '070993788b966973ca3b9441cef42dde52c69db893f97d45d2d182a804a09902'
4
+ data.tar.gz: b5688449c599443226fac5d5451ae6092241ab253d91f01086090b127734eec3
5
5
  SHA512:
6
- metadata.gz: 7459cb1c6736f182425aae17bf5d17da33d9733e51bd549803fff3ec335efdbba59a819a84bdac5225b90caaafc09f3dcfb7413c4aa348ac09ed38b8df9f7ebf
7
- data.tar.gz: 312dd6b05708e222cb90b7db162dd0c0e8cf772d7f88e273618f882fe4413d8c36fcf7706fa71f73425def6bde70eb8f4f261fe228d761b281749d0db4963cca
6
+ metadata.gz: a051c2ff5d91cf2bf2c1c2fa890b9005681834dbfc8ce9d4e00017dc672be885b56c630c262ac34ee5c4c5b7adc5b84fc8bf8dd4f3c150c2362837fe9d67dd2c
7
+ data.tar.gz: f6f4c06b49382b2aa760836dfbcb2d68f09f3d41b14cb963e579696baf2b66f4adfa07fe1cc25a8fdd0e885217382afcb5d06879ab767aba915794b9921884ea
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rsfhelper.rb CHANGED
@@ -9,39 +9,84 @@ require 'rexml/document'
9
9
  class RSFHelper
10
10
  include REXML
11
11
 
12
- attr_reader :doc, :result, :text
12
+ attr_reader :doc, :result, :text
13
13
  attr_accessor :package
14
-
15
- def initialize(opts={})
16
-
17
- o = {:hostname => nil, :package => ''}.merge(opts)
18
14
 
19
- @hostname = o[:hostname]
15
+ def initialize(hostname: nil)
16
+
17
+ @hostname = hostname
20
18
  raise 'please supply a hostname' unless @hostname
19
+
20
+ @url = File.join(parent_url, package + '.rsf')
21
+ doc = Rexle.new URI.open(@url, 'UserAgent' => 'ClientRscript').read
22
+ a = doc.root.xpath 'job/attribute::id'
23
+
24
+ a.each do |attr|
25
+ method_name = attr.gsub('-','_')
26
+ method = "def %s(*args); run_job('%s', args) ; end" % \
27
+ ([method_name] * 2)
28
+ self.instance_eval(method)
29
+ end
30
+
31
+
32
+
21
33
  @package = o[:package]
22
-
34
+
23
35
  if @package.length > 0 then
24
- jobs_to_methods(@package)
36
+ jobs_to_methods(@package)
25
37
  init_content_types
26
- end
38
+ end
27
39
 
28
40
  end
29
-
41
+
42
+ class Package
43
+
44
+ def initialize(drb_obj, parent_url, package)
45
+
46
+ @obj = drb_obj
47
+
48
+ @url = File.join(parent_url, package + '.rsf')
49
+ doc = Rexle.new URI.open(@url, 'UserAgent' => 'ClientRscript').read
50
+ a = doc.root.xpath 'job/attribute::id'
51
+
52
+ a.each do |attr|
53
+ method_name = attr.gsub('-','_')
54
+ method = "def %s(*args); run_job('%s', args) ; end" % \
55
+ ([method_name] * 2)
56
+ self.instance_eval(method)
57
+ end
58
+
59
+ end
60
+
61
+ private
62
+
63
+ def run_job(method_name, *args)
64
+
65
+ args.flatten!(1)
66
+ params = args.pop if args.find {|x| x.is_a? Hash}
67
+ a = ['//job:' + method_name, @url, args].flatten(1)
68
+ params ? @obj.run(a, params) : @obj.run(a)
69
+ end
70
+
71
+ end
72
+
73
+
74
+
30
75
  def package=(s)
31
76
  if s then
32
77
  @package = s
33
- jobs_to_methods(@package)
78
+ jobs_to_methods(@package)
34
79
  init_content_types
35
80
  end
36
81
  end
37
-
82
+
38
83
  private
39
-
84
+
40
85
  def jobs_to_methods(package)
41
86
 
42
87
  url = "http://%s/source/%s" % [@hostname, package]
43
88
 
44
- doc = Document.new(open(url, 'UserAgent' => 'ClientRscript').read)
89
+ doc = Document.new(URI.open(url, 'UserAgent' => 'ClientRscript').read)
45
90
  a = XPath.match(doc.root, 'job/attribute::id')
46
91
 
47
92
  a.each do |attr|
@@ -49,34 +94,34 @@ class RSFHelper
49
94
  method = "def %s(param={}); query_method('%s', param); end" % [method_name, method_name]
50
95
  self.instance_eval(method)
51
96
  end
52
- end
53
-
54
- def init_content_types
55
-
97
+ end
98
+
99
+ def init_content_types
100
+
56
101
  @return_type = {}
57
-
102
+
58
103
  xmlproc = Proc.new {
59
104
  @doc = Document.new(@result.sub(/xmlns=["']http:\/\/www.w3.org\/1999\/xhtml["']/,''))
60
105
  summary_node = XPath.match(@doc.root, 'summary/*')
61
106
  if summary_node then
62
107
  summary_node.each do |node|
63
-
108
+
64
109
  if node.cdatas.length > 0 then
65
110
  if node.cdatas.length == 1 then
66
111
  content = node.cdatas.join.strip
67
112
  else
68
113
  if node.elements["@value='methods'"] then
69
-
114
+
70
115
  else
71
116
  content = node.cdatas.map {|x| x.to_s[/^\{.*\}$/] ? eval(x.to_s) : x.to_s}
72
117
  end
73
-
118
+
74
119
  end
75
120
  else
76
121
  content = node.text.to_s.gsub(/"/,'\"').gsub(/#/,'\#')
77
122
  end
78
123
 
79
-
124
+
80
125
  method =<<EOF
81
126
  def #{node.name}()
82
127
  #{content}
@@ -85,20 +130,20 @@ EOF
85
130
  self.instance_eval(method)
86
131
  end
87
132
  records = XPath.match(@doc.root, 'records/*/text()')
88
- method = "def %s(); %s; end" % [@doc.root.name, records.inspect] if records
133
+ method = "def %s(); %s; end" % [@doc.root.name, records.inspect] if records
89
134
  self.instance_eval(method)
90
135
  end
91
136
  }
92
-
93
- textproc = Proc.new {@text = @result}
137
+
138
+ textproc = Proc.new {@text = @result}
94
139
  @return_type['text/plain'] = textproc
95
140
  @return_type['text/html'] = textproc
96
141
  @return_type['text/xml'] = xmlproc
97
142
  @return_type['application/xml'] = xmlproc
98
143
  @return_type['application/rss+xml'] = xmlproc
99
-
144
+
100
145
  end
101
-
146
+
102
147
  def query_method(method, params={})
103
148
 
104
149
  base_url = "http://#{@hostname}/do/#{@package}/"
@@ -107,10 +152,10 @@ EOF
107
152
  x = param_list.empty? ? '' : param_list
108
153
  url = "%s%s%s" % [base_url, method.gsub('_','-'), x]
109
154
 
110
- response = open(url, 'UserAgent' => 'RSFHelper')
155
+ response = URI.open(url, 'UserAgent' => 'RSFHelper')
111
156
  @result = response.read
112
157
  @return_type[response.content_type].call
113
158
  return self
114
159
  end
115
-
160
+
116
161
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsfhelper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,31 +10,35 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE1MDkxNzEwMzM1MloXDTE2MDkxNjEwMzM1MlowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBAL0xylQn5SA6mw6s/kXuVH+l/VES0Dy2zq8dOYtIig+Mg4WEPulhyb1Gh/fs
19
- ewTB/sn0Ln6HE0sPn7WZstf1TiRSH+1rGzPsqlbpwI7hslBOqhBISzg9zqyuvqt6
20
- MI8KFJOEDlXeFQ17feFOO7sSmvhvE9UwKMLF91dZoG5Z3HgBLSl1i2uOxj+ZFQ61
21
- nFL6oJvawGvZb152nFEysypRS9XYyTdNfKi3gcwTjxeojSm39qkd71IqhjPenbqD
22
- ueqKLYfat++pi/+YlQgvdCPbL5NQT/XanV/AvztHSCvoKmixljxWb9+J6IAkIGzE
23
- 7SkMTtwIUQXNQByZ9lTfuhIg2RcCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQU/PWzKNEN4uqmRsGdS0AMTpLlkywwJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAoj+e9SMC
27
- S83wqcoVrbiQfwfiG2zysY2o1NTKoEngfPpCJUC2s+dglLKbeMT+GbFrVvi6TFE5
28
- 4gPYbkSF5g3u0KUtqWX/2RnhPNrZcX0E+vFRv6slwZKi4HLA+qvbmA6RIUltYqOT
29
- YRBN6ZkIG/Od7A53zpo4b6QCx6V3Ey2BYfR1WOhY3NHLshPvnMTbdTkbQzt+fdIu
30
- pSbLc9M1FupGfQZua/dUYiJbdyDS4o7uDzUzRNtlAD+0NIf0FAd9x1CW1n0roFbh
31
- QA0UogLaEOYeFjtOjgJBZPLMQSpMdRqTxgOFd58OvNFgIw8zvNmbTddmAkVNB20S
32
- myPGQvlmeO3mQw==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMTE4MTA1MzQ0WhcN
15
+ MjIxMTE4MTA1MzQ0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCwDfzo
17
+ NjPd0nw8I4CYXb+cGOBhXg+m8dqblCc85BFmQdHNEQiDrk/9J/8I+1SjxGmmXz/r
18
+ SseuaRZJG8eDZhE77m/g1ihIDAo9ZzH+vZ18v9ElVECcQf6R66xcrk5wSgj3ZXxy
19
+ w0u2Ypg6EO/dTmL1isyfK2v1glhgz2UP3eWrEMwQ9QSIMRPqUae8iclOHkVA30ao
20
+ eIBgvchaSeJ1dEfDOE2y2IVlK0FVwGOEA4pX9FbNqnsSXpheEi5AolTAmnec4KuL
21
+ /mGX5rmmCt3plTHoL3cTw9JyofQMYliv/jySIBAKnHKi0XexJGjXgHGLIE5xCdyG
22
+ z1kQOeOfxm4xySQ+Zy7koieALvvBqe6/Z6wxxd8oJIQ5xCXoAd4egQEA4uLpuaCw
23
+ fe2xhkrdjHNohHtazJAfrL3ESYVdLQVPqRKn79fWh5SFFzOqYxeaZKoaFODdVVth
24
+ odjA4e/tPfFbjuF3Hm4Yoo0IcG5nklVSxtcmljesJYvhelChIJQfSaDhY4MCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUU5mEIoGZ
26
+ 19TAkm6fqrbSeIePYJcwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEArKQx2eoWegiUtVIN86sVkgKWyztmqlJG+/GxpJT0
29
+ xyg8VXhXoi/X8DghiLQdGoJNyKkW80KW9cQnK4Sic3IzJbLUku8LC84dr+ADS0BY
30
+ ByHAenUtuUd1RKk/4EU0DT7rfAh82E7ZnxazfcfUFrlmFxERV2djCxuZ5mmHx6ZC
31
+ GmSB4+p28ArunLsUfz1MIb6uPsbxmrTRygcA1E5TBfV0e1XlqMvqN6joS+CCWoa2
32
+ gmH4FsZ1KhAeP1kwr+ipkyGlhRW4tYvX/SM1OW57rDubtSlyi0Rb4t1a4IZm8th8
33
+ yiNKT0QYtsMu8adqHJ/qD2HE1MYaO0a7EWvonEgwn8kGoYJL4P5nPWNOaaUyslqW
34
+ ImtHru1+19d3ebI72nakY0rFc9y29Z4HdgkxWehhx7nvNzyYO4Z35RyM/O3cXxDg
35
+ 6wFu3Rkb5sq8CqH3wKhtY5oz/3FFBLwXCsUChjdhBNMUO6k3KVP9V5aPwoE6Y/Ol
36
+ fEJsxDDB2doj256bctl//BRz
33
37
  -----END CERTIFICATE-----
34
- date: 2015-09-17 00:00:00.000000000 Z
38
+ date: 2021-11-18 00:00:00.000000000 Z
35
39
  dependencies: []
36
40
  description:
37
- email: james@r0bertson.co.uk
41
+ email: digital.robertson@gmail.com
38
42
  executables: []
39
43
  extensions: []
40
44
  extra_rdoc_files: []
@@ -60,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
64
  version: '0'
61
65
  requirements: []
62
66
  rubyforge_project:
63
- rubygems_version: 2.4.8
67
+ rubygems_version: 2.7.10
64
68
  signing_key:
65
69
  specification_version: 4
66
70
  summary: A client for conveniently sending requests to a Rack-rscript web server
metadata.gz.sig CHANGED
Binary file