Mango API - How to Create a Post
I've been using Mango Blog on and off for quite a while, but recently I've really began to dig my heels in and use it as a platform to base entire websites on. Part of the magic of Mango Blog is its extensibility. Laura has done a fabulous job of providing hooks into the core engine. My goal is to write code around it that does what I want but never actually modifies the core engine. This is easier said than done, but Mango makes that goal a lot easier to reach. Now, one of the things that comes up often is creating new posts automatically. They could be coming from an RSS feed, another content management system, or user submissions. The first thing that springs to mind would be to write the data directly to the database. That, however, would be a Very Bad Thing(tm). Mango may change the database structure with a new release, or move to some other means of storing posts entirely. That would also bypass the event announcements that plugins are looking for. That would ruin your whole day! So what are we to do?
Enter the API. Mango provides a pretty decent set of APIs into the core functionality. One of these is the ability to create a new post through code in a way that lets Mango handle the data storage and preserves the event announcements and all the other "work" that goes on in the background. The API says, "Give me the data and I'll take care of the dirty work for you." How do we use the API? It's simple, really. Here's an example:
<cfscript>
// Get the API
mangoAPI = createObject("component", "api.api");
// Set up the post attributes.
myPost = structNew();
myPost.username = "admin-username";
myPost.password = "admin-password";
myPost.title = "API Post Title";
myPost.content = "This is a post through the API";
myPost.publish = true;
myPost.blogID = "";
// Call the API. Returns the post ID or an error string.
postID = mangoAPI.newPost(argumentcollection=myPost);
</cfscript>
Wasn't that easy? The username and password would be the login credentials of the admin user you want to "own" the post. The publish setting determines whether the post will be published on the site or put into "draft" mode. The blogID is ignored as of this writing (perhaps it's reserved for a future release where Mango supports multiple blogs on the same install). The API will return either a UUID which is the new post ID, or an error string letting you know what isn't right. Hopefully this will help anyone who's trying to automate their Mango a bit. Cheers!
James ~ Jun 17, 2010 at 11:02 AM
Justin Scott ~ Jun 17, 2010 at 11:23 AM
John Gag ~ Jul 27, 2010 at 5:02 PM
Varun Dixit ~ Aug 2, 2010 at 4:59 AM
Justin Scott ~ Aug 4, 2010 at 11:13 AM