Project

posterous

0.01
No commit activity in last 3 years
No release in over 3 years
Official Ruby wrapper for the Posterous REST API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 0
 Project Readme

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> ... }>