class RoadForest::Resource::RDF::ReadOnly

Used for a resource that presents a read-only representation

Attributes

content_engine[RW]
interface[RW]
trace[RW]

Public Class Methods

register(method_name) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 12
def self.register(method_name)
  RoadForest::Resource.registry.add(method_name, self)
end

Public Instance Methods

content_types_provided() click to toggle source
Calls superclass method
# File lib/roadforest/resource/read-only.rb, line 85
def content_types_provided
  content_engine.renderers.type_map
rescue
  super
end
error_data(status) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 110
def error_data(status)
  @interface.error_data(status)
end
expires() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 134
def expires
  @interface.expires
end
finish_request() click to toggle source

XXX Add cache-control headers here

# File lib/roadforest/resource/read-only.rb, line 104
def finish_request
  if (400..499).include? response.code
    set_error_body(response.code)
  end
end
generate_etag() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 126
def generate_etag
  @interface.etag
end
interface_supports(action) click to toggle source

def known_methods

super + ["PATCH"]

end

# File lib/roadforest/resource/read-only.rb, line 55
def interface_supports(action)
  @interface.respond_to?(action)
end
is_authorized?(header) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 95
def is_authorized?(header)
  @authorization = @interface.authorization(request)
  if(@authorization == :public || @authorization == :granted)
    return true
  end
  @interface.authentication_challenge
end
last_modified() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 130
def last_modified
  @interface.last_modified
end
method(name) click to toggle source
Calls superclass method
# File lib/roadforest/resource/read-only.rb, line 75
def method(name)
  if interface.nil?
    super
  else
    content_engine.fetch(name).method(:call)
  end
rescue KeyError
  super
end
params() click to toggle source

RoadForest interface

# File lib/roadforest/resource/read-only.rb, line 22
def params
  Application::Parameters.new do |params|
    params.path_info = @request.path_info
    params.query_params = @request.query
    params.path_tokens = @request.path_tokens
  end
end
request_accept_header() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 34
def request_accept_header
  request.headers["Accept"] || "*/*"
end
request_uri() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 30
def request_uri
  request.uri.to_s.sub(/[?]\Z/, '')
end
required_grants(method) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 91
def required_grants(method)
  @interface.required_grants(method)
end
resource_exists?() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 122
def resource_exists?
  @interface.exists?
end
response_body=(body) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 42
def response_body=(body)
  response.body = body
end
response_content_type=(type) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 38
def response_content_type=(type)
  response.headers["Content-Type"] = type
end
retreive_interface()
Alias for: retrieve_interface
retrieve_interface() click to toggle source
# File lib/roadforest/resource/read-only.rb, line 46
def retrieve_interface
  absolutize(@interface.canonical_host, @interface.retrieve)
end
Also aliased as: retreive_interface
send(*args) click to toggle source

Overridden rather than metaprogram content type methods

Calls superclass method
# File lib/roadforest/resource/read-only.rb, line 65
def send(*args)
  if args.length == 1 and not interface.nil?
    content_engine.fetch(args.first).call(self)
  else
    super
  end
rescue KeyError
  super
end
set_error_body(status) click to toggle source
# File lib/roadforest/resource/read-only.rb, line 114
def set_error_body(status)
  data= error_data(status)
  return "" if data.nil?
  renderer = content_engine.choose_renderer(request.headers["Accept"])
  response.headers["Content-Type"] = renderer.type.content_type_header
  response.body = renderer.local_to_network(request_uri, data)
end
trace?() click to toggle source

Webmachine interface

# File lib/roadforest/resource/read-only.rb, line 60
def trace?
  !!@trace
end