seban/ruby-getresponse

View on GitHub
lib/get_response/confirmation_body_proxy.rb

Summary

Maintainability
A
1 hr
Test Coverage
module GetResponse

  # Proxy class for confirmation body operations.
  class ConfirmationBodyProxy

    include Conditions


    def initialize(connection)
      @connection = connection
    end


    # Get list of available bodies for confirmation messages. They can be used in campaign settings.
    # Example:
    #
    #   @proxy.all
    #   @proxy.all(:language_code => {:equals => "pl"})
    #
    # @param conditions [Hash] conditions passed to query, empty by default
    # @return [Array] collection of <tt>ConfirmationBody</tt> objects returned by API query
    def all(conditions = {})
      conditions = parse_conditions(conditions)

      response = @connection.send_request("get_confirmation_bodies", conditions)["result"]
      response.inject([]) do |bodies, resp|
        bodies << ConfirmationBody.new(resp[1].merge("id" => resp[0]))
      end
    end


    # Get single confirmation body based on its <tt>id</tt>. Method can raise
    #<tt>GetResposne::GetResponseError</tt> exception if no confirmation body is found.
    #
    # @param body_id [String]
    # @return [GetResponse::ConfirmationBody]
    def find(body_id)
      params = {"confirmation_body" => body_id}
      resp = @connection.send_request("get_confirmation_body", params)["result"]
      raise GetResponseError.new "Confirmation body with id '#{body_id}' not found." if resp.empty?
      body_attrs = resp.values[0].merge("id" => resp.keys.first)
      ConfirmationBody.new body_attrs
    end

  end

end