class RackDwsRegistry
Public Class Methods
new(host: 'localhost', port: '59500')
click to toggle source
Calls superclass method
# File lib/rack_dwsregistry.rb, line 16 def initialize(host: 'localhost', port: '59500') super() # required for app-routes initialize method to exectue DRb.start_service # attach to the DRb server via a URI given on the command line @reg = DRbObject.new nil, "druby://#{host}:#{port}" end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack_dwsregistry.rb, line 25 def call(env) @env = env request = env['REQUEST_URI'][/https?:\/\/[^\/]+(.*)/,1] req = Rack::Request.new(env) default_routes(env, req.params) content, content_type = run_route(request, env['REQUEST_METHOD']) error = $! page_content, status_code = if error then [error, 500] elsif content.nil? then ["404: page not found", 404] else [content, 200] end content_type ||= 'text/html' [status_code, {"Content-Type" => content_type}, [page_content]] end
Protected Instance Methods
default_routes(env, params={})
click to toggle source
# File lib/rack_dwsregistry.rb, line 54 def default_routes(env, params={}) # xpath # get /\/\?xpath=/ do xpath = params['xpath'] r = @reg.xpath(xpath) return [{xpath: 'empty'}.to_json, 'application/json'] if r.empty? [r, 'application/xml'] end # e.g. register?gem=dynarex # #get /\/register?gem=/ do get /\/register/ do gem_register(params['gem']) #'foo' #params['gem'].inspect end # get_key('.') # get '/' do |key| reg_get '.' end # import # post '/import' do reg_import params['s'].gsub(/\r/,'') end get '/refresh' do refresh() 'refreshed' end # set_key # post /^\/(.*)$/ do |key| reg_set key, params end # delete_key # get /^\/(.*)\?action=delete_key$/ do |key| msg = @reg.delete_key(key) [{delete_key: msg}.to_json, 'application/json'] end # get_keys # get /^\/(.*)\?action=get_keys$/ do |key| begin r = @reg.get_keys(key) return [{get_keys: 'empty'}.to_json, 'application/json'] unless r [r, 'application/xml'] rescue return [{get_keys: 'key not found'}.to_json, 'application/json'] unless r end end # set_key # get /^\/(.*)\?v=/ do |key| reg_set key, params end # get_key # get /^\/(.*)$/ do |key| reg_get key end end
Private Instance Methods
gem_register(gemfile)
click to toggle source
# File lib/rack_dwsregistry.rb, line 160 def gem_register(gemfile) registered = @reg.gem_register(gemfile) if not registered then return [{gem_register: 'failed'}.to_json, 'application/json'] end ['<gem_register>success</gem_register>', 'application/xml'] end
refresh()
click to toggle source
# File lib/rack_dwsregistry.rb, line 172 def refresh() @reg.refresh end
reg_get(key)
click to toggle source
# File lib/rack_dwsregistry.rb, line 176 def reg_get(key) begin r = @reg.get_key(key) return [{get_key: 'key not found'}.to_json, 'application/json'] if r.empty? [r, 'application/xml'] rescue return [{get_key: 'key not found'}.to_json, 'application/json'] end end
reg_import(s)
click to toggle source
# File lib/rack_dwsregistry.rb, line 193 def reg_import(s) imported = @reg.import(s) return [{import_key: 'failed'}.to_json, 'application/json'] unless imported ['<import>success</import>', 'application/xml'] end
reg_set(key, params)
click to toggle source
# File lib/rack_dwsregistry.rb, line 202 def reg_set(key, params) val = params['v'] r, status = @reg.set_key(key, val) return [{set_key: (status)}.to_json, 'application/json'] unless r [r, 'application/xml'] end