15
WordPress APIs — iPhone and Beyond! Joseph Scott - WordCamp SF 2008

WordPress APIs

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: WordPress APIs

WordPress APIs — iPhone and Beyond!

Joseph Scott - WordCamp SF 2008

Page 2: WordPress APIs

APIs - The Big TwoXML-RPC

AtomPub

Page 3: WordPress APIs

XML-RPC

• XML over HTTP POST

• Basic data types (int, bool, string, double, dateTime.iso8601, base64) combined with structs and arrays

• Supports pipelining with system.multicall

• Authentication in the POST content

• Spec - xmlrpc.com/spec

Page 4: WordPress APIs

XML-RPCRequest

<?xml version="1.0"?><methodCall> <methodName>metaWeblog.getPost</methodName> <params> <param> <value><int>1</int></value> </param> <param> <value><string>admin</string></value> </param> <param> <value><string>XXXXXX</string></value> </param> </params> </methodCall>

Page 5: WordPress APIs

XML-RPCResponse

<?xml version="1.0"?><methodResponse> <params> <param> <value> <struct> <member><name>dateCreated</name><value><dateTime.iso8601>20080807T19:01:03</dateTime.iso8601></value></member> <member><name>userid</name><value><string>1</string></value></member> <member><name>postid</name><value><string>1</string></value></member> <member><name>description</name><value><string>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</string></value></member> <member><name>title</name><value><string>Hello world!</string></value></member> <member><name>link</name><value><string>http://localhost/~joseph/wp/trunk/?p=1</string></value></member> <member><name>permaLink</name><value><string>http://localhost/~joseph/wp/trunk/?p=1</string></value></member> <member><name>categories</name><value><array><data> <value><string>Uncategorized</string></value></data></array></value></member> <member><name>mt_excerpt</name><value><string></string></value></member> <member><name>mt_text_more</name><value><string></string></value></member> <member><name>mt_allow_comments</name><value><int>1</int></value></member> <member><name>mt_allow_pings</name><value><int>1</int></value></member> <member><name>mt_keywords</name><value><string></string></value></member> <member><name>wp_slug</name><value><string>hello-world</string></value></member> <member><name>wp_password</name><value><string></string></value></member> <member><name>wp_author_id</name><value><string>1</string></value></member> <member><name>wp_author_display_name</name><value><string>admin</string></value></member> <member><name>date_created_gmt</name><value><dateTime.iso8601>20080808T01:01:03</dateTime.iso8601></value></member> <member><name>post_status</name><value><string>publish</string></value></member> <member><name>custom_fields</name><value><array><data></data></array></value></member></struct> </value> </param> </params></methodResponse>

Page 6: WordPress APIs

AtomPub• XML over HTTP (GET, POST, PUT,

DELETE)

• Very related to Atom feeds

• Collections (Posts, Comments), Entries (Individual posts and comments)

• Great intro from Joe Gregorio - http://bitworking.org/news/343/intro-to-atompub-on-youtube

• RFC 5023 - http://tools.ietf.org/html/

Page 7: WordPress APIs

AtomPubRequest

curl -u myusername:iamapassword http://localhost/~joseph/wp/trunk/wp-app.php/post/1

Response<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xml:lang="en"> <id>http://localhost/~joseph/wp/trunk/?p=1</id> <title type="text">Hello world!</title> <updated>2008-08-08T01:01:03Z</updated> <published>2008-08-08T01:01:03Z</published> <app:edited>2008-08-08T01:01:03Z</app:edited> <app:control> <app:draft>no</app:draft> </app:control> <author> <name>admin</name> </author> <link href="http://localhost/~joseph/wp/trunk/?p=1" /> <content type="text">Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</content> <link rel="edit" href="http://localhost/~joseph/wp/trunk/wp-app.php/post/1" /> <category scheme="http://localhost/~joseph/wp/trunk" term="Uncategorized" /> <summary type="text">Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</summary></entry>

Page 8: WordPress APIs

2,429

1,755,642

Page 9: WordPress APIs

XML-RPC Blogging APIs

MetaWeblog (metaWeblog.*)

Movable Type (mt.*)

Blogger (blogger.*)WordPress (wp.*)

Page 10: WordPress APIs

WordPress Additions•Manage Pages•Improved category support•Exposes subset of WordPress options (some are read only)•Extended metaWeblog.(new|edit)Post✴slug, password, author, status, tags (mt_keywords), custom fields✴dateCreated vs. date_created_gmt

Page 11: WordPress APIs

More To ComeComment Management - 2.7

create/retrieve/update/delete

Continued AtomPub Improvements

wp-admin

Page 12: WordPress APIs

The iPhone App

The real reason whyyou came to this session

Page 13: WordPress APIs

An Open Source iPhone App?

Yep, GPL’d and everything!

Questions? Ask Raanan Bar-Cohen

Page 14: WordPress APIs

Blog: http://iphone.wordpress.org/Subversion: http://iphone.svn.wordpress.org/Trac: http://iphone.trac.wordpress.org/iPhone SDK: http://developer.apple.com/iphone/

XML-RPC Client: http://ditchnet.org/xmlrpc/HTTP Scoop: http://www.tuffcode.com/

WP-XMLRPC Email List:http://lists.automattic.com/mailman/listinfo/wp-xmlrpc

Page 15: WordPress APIs

Questions?