class Farscape::SafeRepresentorAgent

Constants

EMPTY_BODIES

Attributes

agent[R]
representor[R]
response[R]

Public Class Methods

new(requested_media_type, response, agent) click to toggle source
# File lib/farscape/representor.rb, line 16
def initialize(requested_media_type, response, agent)
  @agent = agent
  @response = response
  @requested_media_type = requested_media_type
  @representor = deserialize(requested_media_type, response.body)
  handle_extensions
end

Public Instance Methods

attributes() click to toggle source
# File lib/farscape/representor.rb, line 28
def attributes
  representor.properties
end
embedded() click to toggle source
# File lib/farscape/representor.rb, line 37
def embedded
  Hash[representor.embedded.map{ |k, reps| [k, _embedded(reps, response)] }]
end
safe() click to toggle source
# File lib/farscape/representor.rb, line 45
def safe
  reframe_representor(safe=true)
end
to_hash() click to toggle source
# File lib/farscape/representor.rb, line 41
def to_hash
  @representor.to_hash
end
transitions() click to toggle source

TODO: Handling list of transitions

# File lib/farscape/representor.rb, line 33
def transitions
  Hash[representor.transitions.map{ |trans| [trans.rel, Farscape::TransitionAgent.new(trans, agent)] }]
end
unsafe() click to toggle source
# File lib/farscape/representor.rb, line 49
def unsafe
  reframe_representor(safe=false)
end

Private Instance Methods

_embedded(reprs, response) click to toggle source
# File lib/farscape/representor.rb, line 66
def _embedded(reprs, response)
  reprs = [reprs] unless reprs.respond_to?(:map)
  reprs.map { |repr| @agent.representor.new(false, OpenStruct.new(status: response.status, headers: response.headers, body: repr), @agent) }
end
deserialize(requested_media_type, response_body) click to toggle source
# File lib/farscape/representor.rb, line 60
def deserialize(requested_media_type, response_body)
  return response_body unless requested_media_type
  response_body = response_body || EMPTY_BODIES[@agent.media_type]
  Representors::DeserializerFactory.build(requested_media_type, response_body).to_representor
end
reframe_representor(safety) click to toggle source
# File lib/farscape/representor.rb, line 55
def reframe_representor(safety)
  agent = safety ? @agent.safe : @agent.unsafe
  agent.representor.new(@requested_media_type, @response, agent)
end