A Ruby library for the “Mashery API”:support.mashery.com/docs/mashery_api.

h2. Prerequisites

Install the gem dependencies (see “gembundler.com”:gembundler.com/ if you aren't familiar with Bundler):

@$ bundle install@

h2. Calling methods from the command line

A set of Thor tasks are provided so that you can call API methods from the command line (read more about Thor at “github.com/wycats/thor”:http://github.com/wycats/thor).

The following examples assume you have Thor installed system-wide. If it's local to your bundle, then replace @thor@ with @bundle exec thor@.

You can see all available Mashery tasks with this command:

@$ thor list mashery@

h3. Environment

Before you can successfully call an API method, you must set these environment variables:

bc. $ export MASHERY_SITE_ID=666 $ export MASHERY_API_KEY=cafebebedeadbeefcafebebedeadbeef $ export MASHERY_SHARED_SECRET=blahblahblah

By default, the thor tasks call methods in the Mashery sandbox. If you want them to access the production environment instead, set the {{MASHERY_PRODUCTION_MODE}} environment variable to any value:

bc. $ export MASHERY_PRODUCTION_MODE=hi

h3. Querying objects

The Mashery API supports querying the following types of objects: “members”:support.mashery.com/docs/mashery_api/member/, “applications”:support.mashery.com/docs/mashery_api/application/, “keys”:support.mashery.com/docs/mashery_api/key/, “services”:support.mashery.com/docs/mashery_api/service/, and “roles”:support.mashery.com/docs/mashery_api/role/.

To perform a query, construct a Query object for the type of object you want to query:

bc. query = Mashery::Query.new('members') members = query.fetch_all

The @fetch_all@ method will automatically paginate through the results for you. You can also control this yourself with the @page@ parameter and @execute@:

bc. query = Mashery::Query.new('members', :page => 2) result = query.execute items = result

(Or, use the @items@ method, which combines @execute@ and @result@ – however, this does not return result set metadata, like current page and total pages.)

The default will return all fields (e.g., @SELECT * FROM members@). To control this, specify the @:fields@ parameter.

To control which records are returned, specify the @:where@ parameter.

bc. query = Mashery::Query.new('members', :where => 'username = “Jeff”'