resource_party
==============
ResourceParty is a simple wrapper around HTTParty that allows you to do basic
operations with a restful resource (presumably implemented in rails). It
assumes a scaffolded resource in the following form:
class FoosController < ApplicationController
# GET /foo
# GET /foo.xml
def index
@foo = Foo.find(:all)
respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @foo.to_xml }
end
end
# GET /foo/1
# GET /foo/1.xml
def show
@foo = Foo.find(params[:id])
respond_to do |format|
format.html # show.rhtml
format.xml { render :xml => @foo.to_xml }
end
rescue ActiveRecord::RecordNotFound => rnf
render :text => rnf.message, :status => :not_found
rescue Exception => e
render :text => e.message, :status => :error
end
# GET /foo/new
def new
@foo = Foo.new
respond_to do |format|
format.html # new.rhtml
format.xml { render :xml => @foo.to_xml }
end
end
# GET /foo/1;edit
def edit
@foo = Foo.find(params[:id])
end
# POST /foo
# POST /foo.xml
def create
@foo = Foo.new(params[:foo])
respond_to do |format|
if @foo.save
flash[:notice] = 'Foo type was successfully created.'
format.html { redirect_to foo_url(@foo) }
format.xml { render :xml => @foo.to_xml }
else
format.html { render :action => "new" }
format.xml { render :xml => @foo.errors.to_xml }
end
end
rescue Exception => e
render :text => e.message, :status => :error
end
# PUT /foo/1
# PUT /foo/1.xml
def update
@foo = Foo.find(params[:id])
respond_to do |format|
if @foo.update_attributes(params[:foo])
flash[:notice] = 'Foo type was successfully updated.'
format.html { redirect_to foo_url(@foo) }
format.xml { render :xml => @foo.to_xml }
else
format.html { render :action => "edit" }
format.xml { render :xml => @foo.errors.to_xml }
end
end
rescue ActiveRecord::RecordNotFound => rnf
render :text => rnf.message, :status => :not_found
rescue Exception => e
render :text => e.message, :status => :error
end
# DELETE /foo/1
# DELETE /foo/1.xml
def destroy
@foo = Foo.find(params[:id])
@foo.destroy
respond_to do |format|
format.html { redirect_to foo_url }
format.xml { head :ok }
end
rescue ActiveRecord::RecordNotFound => rnf
render :text => rnf.message, :status => :not_found
rescue Exception => e
render :text => e.message, :status => :error
end
end
Returning head :ok for create and update is permissable (though I find returning
the actual resource is potentially more helpful as there may have been changes
made in the model before_create or before_update).
Notice that there is explicit exception handling which improves the
communication. This will hopefully be expanded to include better validation
error handling.
To make your models join the party:
require 'resource_party'
class Foo < ResourceParty::Base
base_uri 'http://localhost:3000'
route_for 'foos'
resource_for 'foo'
end
+route_for+ will be used to generate the path, i.e. "/{route_for}/4.xml"
+resource_for+ will be used when building params (like form_for)
I know both of these are automatic if you are already using active_support by
using class.to_s.downcase.singularize and friends. But hey.
Once this is built you should be able to
Foo.all
=> returns an array of Foos (from the index)
Foo.find(id)
=> returns a foo or a ResourceParty::RecordNotFound
Foo.destroy(id) or foo.destroy
=> Deletes the foo, returns true if successful
Foo.update(id, {:my_field => "this is the change!"}) or foo.update(...)
=> Updates the foo with the params, returns true if the controller
=> responds with :head, otherwise returns the foo
Foo.create({:my_field => "this is the new stuff"})
=> Creates the foo with the params, returns true if the controller
=> responds with :head, otherwise returns the foo
Foo.new
=> Fetches a blank foo so that defaulted params are possible
COPYRIGHT
=========
Copyright (c) 2008 Jeff Rafter. See LICENSE for details.Project
jeffrafter-resource_party
Simple wrapper for HTTParty for basic operations with a restful resource
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Pull Requests
Development
Dependencies
Runtime
>= 0
Project Readme