Sha256: dde756cae0678bb7f50f3d0755f796afe09674f07033acb067dc34292b1b9db7
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
#!/usr/bin/ruby require "atom/pub-server" require "webrick/httpserver" require "atom/feed" # syntax: ./atom-server <port> <path> module Atom # @docs must implement [], []=, next_id! # including servlet must implement gen_id, url_to_key, key_to_url, do_GET class MemoryCollection < WEBrick::HTTPServlet::AbstractServlet include Atom::AtomPub def initialize server, docs super @docs = docs end def gen_id key key end def key_to_url req, key req.script_name + "/" + key end def url_to_key url url.split("/").last end def add_edit entry, key edit = entry.links.new edit["rel"] = "edit" edit end def do_GET req, res res.body = if req.path_info.empty? or req.path_info == "/" feed = Atom::Feed.new @docs.each do |key,doc| entry = doc.to_atom_entry add_edit(entry, key)["href"] = key_to_url(req, key) feed << entry end feed.entries.first.to_s else key = url_to_key(req.request_uri.to_s) entry = @docs[key].to_atom_entry add_edit(entry, key)["href"] = key_to_url(req, key) entry.to_s end end end end h = WEBrick::HTTPServer.new(:Port => ARGV[0]) docs = {} docs.instance_variable_set :@last_key, "0" def docs.next_key! @last_key.next! end h.mount(ARGV[1], Atom::MemoryCollection, docs) h.start
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
atom-tools-0.9.0 | bin/atom-server.rb~ |