rsc 0.1.2 → 0.1.3

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 +7 -0
  2. checksums.yaml.gz.sig +2 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/rsc.rb +43 -91
  5. metadata +21 -32
  6. metadata.gz.sig +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 92e70abbd33d33717aa932ceb741f06b0ffd5eda
4
+ data.tar.gz: fe2397317f3f6a7374cd67ed7a5b6569eef50e5d
5
+ SHA512:
6
+ metadata.gz: 249065339c9f84386163471d65a84b36ee5d7039e562beac841b051bfcd301eec0b4a070f73cb73e10e22f70158d942e667dcf31e017a9181258eebfc5266a8f
7
+ data.tar.gz: c84342971d81b6991e9a766592e762ef51f2f39c7f7f7d7d79a9c5d3718a4e3c2644bca7de15b3ebabc8403c2f8315f595d4b6567b0b83efb8f6ce64c87ecff9
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ �<-�<Iܯ����Pǻ:����`9��Ǩ�f
2
+ �8��Z��'��+�I%�oӦ;+D� �x1~^P�f�/´Zu�N>B
data.tar.gz.sig CHANGED
Binary file
data/lib/rsc.rb CHANGED
@@ -1,105 +1,57 @@
1
- require 'open-uri'
2
- require 'cgi'
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: rsc.rb
4
+
3
5
  require 'rexml/document'
6
+ require 'open-uri'
7
+ require 'drb'
4
8
 
5
- class Rsc
6
- include REXML
7
9
 
8
- attr_reader :doc, :result, :text
9
- attr_accessor :package
10
+ class RSC
10
11
 
11
- def initialize(opts={})
12
-
13
- o = {:hostname => 'rscript.heroku.com', :package => ''}.merge(opts)
14
- @hostname = o[:hostname]
15
- @package = o[:package]
16
-
17
- if @package.length > 0 then
18
- jobs_to_methods(@package)
19
- init_content_types
20
- end
12
+ class Package
13
+ include REXML
21
14
 
22
- end
23
-
24
- def package=(s)
25
- if s then
26
- @package = s
27
- jobs_to_methods(@package)
28
- init_content_types
29
- end
30
- end
31
-
32
- private
33
-
34
- def jobs_to_methods(package)
35
- #url = "http://rorbuilder.info/r/heroku/%s.rsf" % package
36
- url = "http://%s/source/%s" % [@hostname, package]
37
- puts 'url : ' + url
38
- doc = Document.new(open(url, 'UserAgent' => 'ClientRscript').read)
39
- a = XPath.match(doc.root, 'job/attribute::id')
40
- a.each do |attr|
41
- method_name = attr.value.to_s.gsub('-','_')
42
- method = "def %s(param={}); query_method('%s', param); end" % [method_name, method_name]
43
- self.instance_eval(method)
44
- end
45
- end
46
-
47
- def init_content_types
48
-
49
- @return_type = {}
50
-
51
- xmlproc = Proc.new {
52
- @doc = Document.new(@result.sub(/xmlns=["']http:\/\/www.w3.org\/1999\/xhtml["']/,''))
53
- summary_node = XPath.match(@doc.root, 'summary/*')
54
- if summary_node then
55
- summary_node.each do |node|
56
-
57
- if node.cdatas.length > 0 then
58
- if node.cdatas.length == 1 then
59
- content = node.cdatas.join.strip
60
- else
61
- if node.elements["@value='methods'"] then
62
-
63
- else
64
- content = node.cdatas.map {|x| x.to_s[/^\{.*\}$/] ? eval(x.to_s) : x.to_s}
65
- end
66
-
67
- end
68
- else
69
- content = node.text.to_s.gsub(/"/,'\"').gsub(/#/,'\#')
70
- end
15
+ def initialize(drb_obj, parent_url, package)
16
+
17
+ @obj = drb_obj
71
18
 
72
-
73
- method =<<EOF
74
- def #{node.name}()
75
- #{content}
76
- end
77
- EOF
78
- self.instance_eval(method)
79
- end
80
- records = XPath.match(@doc.root, 'records/*/text()')
81
- method = "def %s(); %s; end" % [@doc.root.name, records.inspect] if records
19
+ @url = File.join(parent_url, package + '.rsf')
20
+ doc = Document.new(open(@url, 'UserAgent' => 'ClientRscript'){|x| x.read})
21
+ a = XPath.match(doc.root, 'job/attribute::id')
22
+
23
+ a.each do |attr|
24
+ method_name = attr.value.to_s.gsub('-','_')
25
+ method = "def %s(*args); run_job('%s', args) ; end" % \
26
+ ([method_name] * 2)
82
27
  self.instance_eval(method)
83
28
  end
84
- }
29
+
30
+ end
31
+
32
+ private
85
33
 
86
- textproc = Proc.new {@text = @result}
87
- @return_type['text/plain'] = textproc
88
- @return_type['text/html'] = textproc
89
- @return_type['text/xml'] = xmlproc
90
- @return_type['application/xml'] = xmlproc
91
- @return_type['application/rss+xml'] = xmlproc
34
+ def run_job(method_name, *args)
35
+
36
+ args.flatten!(1)
37
+ params = args.pop if args.find {|x| x.is_a? Hash}
38
+ a = ['//job:' + method_name, @url, args].flatten(1)
39
+ params ? @obj.run(a, params) : @obj.run(a)
40
+ end
41
+
42
+ end
43
+
44
+ def initialize(drb_hostname='rse', parent_url)
92
45
 
46
+ @parent_url = parent_url
47
+ DRb.start_service
48
+ @obj = DRbObject.new(nil, "druby://#{drb_hostname}:61000")
93
49
  end
50
+
51
+ private
94
52
 
95
- def query_method(method, params={})
96
- base_url = "http://#{@hostname}/do/#{@package}/"
97
- param_list = params.to_a.map{|param, value| "%s=%s" % [param, CGI.escape(value)]}.join('&')
98
- url = "%s%s?%s" % [base_url, method.gsub('_','-'), param_list]
99
- response = open(url, 'UserAgent' => 'RScriptClient')
100
- @result = response.read
101
- @return_type[response.content_type].call
102
- return self
53
+ def method_missing(method_name, *args)
54
+ Package.new @obj, @parent_url, method_name.to_s
103
55
  end
104
56
 
105
- end
57
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rsc
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - James Robertson
9
8
  autorequire:
10
9
  bindir: bin
11
- cert_chain:
10
+ cert_chain:
12
11
  - |
13
12
  -----BEGIN CERTIFICATE-----
14
13
  MIIDRDCCAiygAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
@@ -30,46 +29,36 @@ cert_chain:
30
29
  rFGEyvD2FamY5ONO7fEc+cszTqV8A3/SlFAd5O6/LFmt2pj7mwKtVYRe0UEEuFCX
31
30
  g7cSQPGgok2TL2SAXni9sq+LMXO6PYwU
32
31
  -----END CERTIFICATE-----
33
-
34
- date: 2013-02-06 00:00:00 Z
32
+ date: 2013-07-20 00:00:00.000000000 Z
35
33
  dependencies: []
36
-
37
34
  description: formerly known as rcscript-client
38
35
  email:
39
36
  executables: []
40
-
41
37
  extensions: []
42
-
43
38
  extra_rdoc_files: []
44
-
45
- files:
39
+ files:
46
40
  - lib/rsc.rb
47
41
  homepage:
48
42
  licenses: []
49
-
43
+ metadata: {}
50
44
  post_install_message:
51
45
  rdoc_options: []
52
-
53
- require_paths:
46
+ require_paths:
54
47
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: "0"
61
- required_rubygems_version: !ruby/object:Gem::Requirement
62
- none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: "0"
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
67
58
  requirements: []
68
-
69
59
  rubyforge_project:
70
- rubygems_version: 1.8.23
60
+ rubygems_version: 2.0.0.rc.2
71
61
  signing_key:
72
- specification_version: 3
62
+ specification_version: 4
73
63
  summary: rsc
74
64
  test_files: []
75
-
metadata.gz.sig CHANGED
Binary file