Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Ruby client for the Posterous API

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 autotest
Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec
Octocat-spinner-32 .rvmrc
Octocat-spinner-32 Gemfile
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 posterous.gemspec
README.md

Posterous

Dependencies

Typhoeus https://github.com/dbalatero/typhoeus

Installation

gem install posterous

Rails

In your Gemfile:

gem 'posterous'

Create config/initializers/posterous.rb.

Posterous.config = {
  'username'  => '<username>',
  'password'  => '<password>',
  'api_token' => '<api_token>'
}

A note on rate limits

By default the gem will wait one second per api request. However, if you have a whitelisted token, you can pass 'limit' => false in Posterous.config like so:

Posterous.config = {
  'username'  => '<username>',
  'password'  => '<password>',
  'api_token' => '<api_token>'
  'limit'     => false
}

Elsewhere

require 'posterous'

Posterous.config = {
  'username'  => '<username>',
  'password'  => '<password>',
  'api_token' => '<api_token>'
}

include Posterous

API

User

Current user info

> User.me
=> <#<Posterous::User:0x00000100cacbe0> {:last_activity=>"2011/04/25 20:33:50 -0700",
:nickname=>"postertester", :lastname=>nil, :id=>1288737, :firstname=>nil, 
:profile_pic=>"http://posterous.com/images/profile/unknown75.gif"}>

Favorites

> @user = User.me
> @user.favorites(:page => 1)
=> [<#<Posterous::Post:0x00000100c2c7b0>...] 

Subscriptions

> @user = User.me
> @user.subscriptions(:page => 1)
=> [<#<Posterous::Site:0x00000100c2c7b0>...] 

Subscription Posts

> @user = User.me
> @user.subscriptions.posts(:page => 1)
=> [<#<Posterous::Post:0x00000100c2c7b0>...] 

Sites

Find a primary site

> Site.primary
=> <#<Posterous::Site:0x00000100c22490> {:header_image=>nil, :name=>"postertester's posterous" ... }>

Find a Site by its hostname

> Site.find('twoism')
=> <#<Posterous::Site:0x00000100c22490> {:header_image=>nil, :name=>"postertester's posterous" ... }>

Find all of the current user's Sites

> Site.all(:page => 1)
=> [<#<Posterous::Site:0x00000100c22490> {:header_image=>nil, :name=>"postertester's posterous" ... }>]

Creating a new Site

> @site = Site.create(:hostname => 'superawesome',:is_private => false)
=> <#<Posterous::Site:0x00000100c22490> {:header_image=>nil, :name=>"superawesome's posterous" ... }>

Updating a Site

> @site = Site.primary
=> @site.hostname = 'anotherawesomesite'
=> @site.save

Deleting a Site

> @site = Site.find('sitetodelete')
=> @site.destroy

Posts

Creating Posts

> @site = Site.primary
> @post = @site.posts.create(:title => 'New Post', :body => 'From posterous API', 
:media => [File.open('/path/to/file')], :autopost => true)
=> <#<Posterous::Post:0x00000100c2c7b0>

Updating Posts

> @post = @site.posts.find(<id>)
> @post.title = 'Kittens are radical!'
> @post.save

Deleting Posts

> @post = @site.posts.find(<id>)
> @post.destroy

Retrieving Posts

# paginated
> @site.posts(:page => 1)

# paginated since a given id
> @site.posts(:page => 3, :since_id => 123)

Commenting

> @site = Site.find('someawesomesite')
> @site.posts.first.comments.create(:body => "Yes, kittens are very
> radical")

Liking

> @site = Site.find('someawesomesite')
> @site.posts.first.likes.create

Subscribers

> @site = Site.find('someawesomesite')
> @site.subscribers(:page => 1)

External Sites / Autopost

> @site.external_sites(:page => 1)
=> [<#<Posterous::ExternalSite:0x00000100c2c7b0>]

Interactive Console Usage

In your terminal type...

$ posterous

You will then be walked through the setup process. Type newb to get some help.

****************************************************************************************************
Hi <username>, welcome to the Posterous API Console! For help type `newb`.
****************************************************************************************************
> newb

# Get your primary site
> Site.primary
=> <#<Posterous::Site:0x000001013e9b88> ... }>

# Get all your sites
> Site.all
=> [<#<Posterous::Site:0x000001013e9b88> ... }>]

# Get any public site
> Site.find('twoism')
=> <#<Posterous::Site:0x000001013e9b88> ... }>

# Get some posts
> s = Site.primary
> s.posts(:page => 1)
=> [<#<Posterous::Post:0x0000010138ced8> ... }>]

# Create a post and add a comment to it
> s = Site.primary
> post = s.posts.create(:title => 'Woo Hoo!')
 => <#<Posterous::Post:0x00000101398670> 
> post.comments.create(:body => 'Kittens are radical!')
=> <#<Posterous::Comment:0x0000010135f758> ... }>
Something went wrong with that request. Please try again.