class SirenClient::Action
Attributes
classes[R]
config[R]
fields[R]
href[RW]
method[R]
name[R]
payload[R]
title[R]
type[R]
Public Class Methods
new(data, config={})
click to toggle source
Calls superclass method
SirenClient::Modules::WithRawResponse::new
# File lib/siren_client/action.rb, line 8 def initialize(data, config={}) super() if data.class != Hash raise ArgumentError, "You must pass in a Hash to SirenClient::Action.new" end @payload = data @config = { format: :json }.merge config @name = @payload['name'] || '' @classes = (@payload['class'] || []).clone @method = (@payload['method'] || 'GET').downcase @href = @payload['href'] || '' @title = @payload['title'] || '' @type = @payload['type'] || 'application/x-www-form-urlencoded' @fields = (@payload['fields'] || []).clone @fields.map! do |field_data| SirenClient::Field.new(field_data) end end
Public Instance Methods
submit(params = {})
`.submit` should be used with actions that don't require any parameters, for readability.
Alias for: where
where(params = {})
click to toggle source
# File lib/siren_client/action.rb, line 28 def where(params = {}) options = { headers: {} }.merge @config if @method == 'get' options[:query] = params else options[:body] = params # Only set the Content-Type if we have a body options[:headers]['Content-Type'] = @type end begin resp = generate_raw_response(@method, self.href, options) if next_response_is_raw? disable_raw_response resp else if resp.parsed_response.nil? raise InvalidResponseError.new "Response could not be parsed. Code=#{resp.code} Message=\"#{resp.message}\" Body=#{resp.body}" end Entity.new(resp.parsed_response, @config) end rescue URI::InvalidURIError => e raise InvalidURIError, e.message rescue JSON::ParserError => e raise InvalidResponseError, e.message end end
Also aliased as: submit