Headers in ActiveResource

I am creating a rails app that is a gui wraping a restful web service that uses a websso for authentication. This websso sets a series of headers that I need to pass from the request to the ActiveResource.find methods. As this is stuff like username etc it is going to be different for each request. I can find examples on how to set headers for all requests not just one.

Does anyone know of a way of doing this

Thanks in advance

Tom

Something at the Rack level, maybe?

"set" or do you actually mean "get" ?

If you need to *read* headers from a request you should do that in your controller; unsurprisingly they're in a 'request.headers' array :slight_smile:

HTH,

Ok it might be easier to show you type of thing I want to do.

class ActionsController < ApplicationController   def index     @actions = CorporateAction.all(:headers => request.headers)   end

  def show     @action = CorporateAction.find(params[:id], :headers => request.headers)   end end

Where CorporateAction is an ActiveResource ie

class CorporateAction < ActiveResource::Base   self.site = "http://localhost:3000"   self.format = :json end

Is this possible or is there another way of doing it?

Tom

Is *what* possible? None of the above makes any sense to me -- can you describe *exactly* your goal?

I am faced with the exact same scenario, an OAuth authentication is accepted on a request and needs to be used on an ActiveResource lookup call to a RESTful API, that itself requires the appropriate authentication header to be set, possibly different for each HTTP request. This seems to me to be a legitimate and possibly popular way to use ActiveResource in the development community.

I don't have a workaround yet, I am hoping my post raises awareness.

Thanks, -Ken

Does active resource support setting headers on the model object rather then on the model class? That would solve the issue, but looking thought the active resource code does not seem that it's available.

Any good reason why should the option of setting headers per object not be supported/provided/available?

Dmitry

(Rails 3.0.3) ActiveResource::Connection lists

  get(path, headers = {})

as a public instance method; is that not what you want? ('headers' is also part of other ReSTful verbs e.g. put/post/etc. method signatures)

So, how exactly do i set a unique headers for each individual request?

Here is the implementation from the ActiveResource code:

      def update         connection.put(element_path(prefix_options), encode, self.class.headers).tap do |response|           load_attributes_from_response(response)         end       end

As you can see it does not respect the headers set on the object, instead it always reads the headers from the class

Am I getting it wrong?

Dmitry

Looks like a discrepancy between the docs and reality :slight_smile:

I've never tried this before, but I don't see how to do it either. Sorry!