rsfhelper 0.1.0 → 0.1.1

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