Class: Taskr::Actions::Rest
Overview
This is too complicated… we use Restr instead.
class ActiveResource < Base
self.parameters = ['site', 'resource', 'action', 'parameters']
self.description = "Perform a REST call on a remote service using ActiveResource."
def execute
$LOG.debug self
::ActiveResource::Base.logger = $LOG
::ActiveResource::Base.logger.progname = (task ? task.to_s : self)
eval %{
class Proxy < ::ActiveResource::Base
self.site = "#{parameters['site']}"
self.collection_name = "#{parameters['resource'].pluralize}"
end
}
begin
case parameters['action']
when 'create'
obj = Proxy.new(parameters['parameters'])
obj.save
when 'update', "'update' action is not implemented"
raise NotImplementedError
when 'delete'
Proxy.delete(parameters['parameters'])
when 'find'
raise NotImplementedError, "'find' action is not implemented"
else
raise ArgumentError, "unknown action #{parameters['action'].inspect}"
end
rescue ::ActiveResource::ServerError => e
$LOG.error #{self} ERROR: #{e.methods.inspect}"
raise e
end
end
end
class Howlr < ActiveResource
self.parameters = ['site', 'from', 'recipients', 'subject', 'body']
self.description = "Send a message through a Howlr service."
def execute
parameters['action'] = 'create'
parameters['resource'] = 'message'
parameters['parameters'] = {
'from' => parameters['from'],
'recipients' => parameters['recipients'],
'subject' => parameters['subject'],
'body' => parameters['body']
}
super
end
end
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Base
#parameters, #task, #task_action
Instance Method Summary collapse
Methods inherited from Base
Constructor Details
This class inherits a constructor from Taskr::Actions::Base
Instance Method Details
#execute ⇒ Object
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 |
# File 'lib/taskr/actions.rb', line 254 def execute auth = nil if parameters['username'] auth = {} auth['username'] = parameters['username'] if parameters['username'] auth['password'] = parameters['password'] if parameters['password'] end if parameters['params'].kind_of? String params2 = {} parameters['params'].split('&').collect do |p| key, value = p.split('=') params2[key] = value end parameters['params'] = params2 end = {:logger => LogEntry.logger_for_action(task_action)} .merge!(auth) if auth Restr.do(parameters['method'], parameters['url'], (parameters['params'] unless parameters['params'].blank?), ) end |