Added support for the Textamerica API.
Added support fot posts titles via the MetaWeblog API. LifeBlogger is now using Apache's XML-RPC library.
This commit is contained in:
parent
3134321d29
commit
cb53098f59
18 changed files with 505 additions and 2041 deletions
256
src/net/thauvin/lifeblogger/LifeRPC.java
Normal file
256
src/net/thauvin/lifeblogger/LifeRPC.java
Normal file
|
@ -0,0 +1,256 @@
|
|||
/*
|
||||
* @(#)LifeRPC.java
|
||||
*
|
||||
* Copyright (C) 2005 by Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of the authors nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
package net.thauvin.lifeblogger;
|
||||
|
||||
import org.apache.xmlrpc.Base64;
|
||||
import org.apache.xmlrpc.XmlRpcClient;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
import java.util.Hashtable;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
/**
|
||||
* The <code>LifeRPC</code> class implements the blogger.newPost, metaWeblog.newPost, metaWeblog.newMediaObject and
|
||||
* ta.Entry.Update XML-RPC methods.
|
||||
*
|
||||
* @author Erik C. Thauvin
|
||||
* @version $Revision$, $Date$
|
||||
* @created Apr 13, 2005
|
||||
* @since 1.0
|
||||
*/
|
||||
public class LifeRPC
|
||||
{
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if the constructor is called.
|
||||
*/
|
||||
private LifeRPC()
|
||||
throws UnsupportedOperationException
|
||||
{
|
||||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements the blogger.newPost XML-RPC call.
|
||||
*
|
||||
* @param url The XML-RPC URL endpoint.
|
||||
* @param blogID The blog ID.
|
||||
* @param login The login username.
|
||||
* @param password The login password.
|
||||
* @param description The blog description's text/description.
|
||||
*
|
||||
* @return The post ID.
|
||||
*
|
||||
* @throws Exception If an error occurred while posting.
|
||||
*/
|
||||
public static String bloggerNewPost(String url, String blogID, String login, String password, String description)
|
||||
throws Exception
|
||||
{
|
||||
final XmlRpcClient xmlrpc = new XmlRpcClient(url);
|
||||
final Vector params = new Vector(0);
|
||||
|
||||
// Set the API key
|
||||
params.add("0a6afffffffaffffffb8ffffff8569474cffffffc778500c03ffffffecffffff876116565a27283bffffffda56");
|
||||
|
||||
params.add(blogID);
|
||||
params.add(login);
|
||||
params.add(password);
|
||||
params.add(description);
|
||||
|
||||
// Set the publish flag
|
||||
params.add(Boolean.valueOf(true));
|
||||
|
||||
return ((String) xmlrpc.execute("blogger.newPost", params));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements blogger.newPost XML-RPC call.
|
||||
*
|
||||
* @param url The XML-RPC URL endpoint.
|
||||
* @param blogID The blog ID.
|
||||
* @param login The login username.
|
||||
* @param password The login password.
|
||||
* @param filename The name of the object to store.
|
||||
* @param mimeType The object's MIME type.
|
||||
* @param file The file to store.
|
||||
*
|
||||
* @return The URL of the new media object.
|
||||
*
|
||||
* @throws Exception If an error occurred while upload the new media object.
|
||||
*/
|
||||
public static String metaWeblogNewMediaObject(String url, String blogID, String login, String password,
|
||||
String filename, String mimeType, File file)
|
||||
throws Exception
|
||||
{
|
||||
final XmlRpcClient xmlrpc = new XmlRpcClient(url);
|
||||
final Vector params = new Vector(0);
|
||||
|
||||
final InputStream is = new FileInputStream(file);
|
||||
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
|
||||
final BufferedInputStream bufferedInputStream = new BufferedInputStream(is);
|
||||
|
||||
final byte[] bytes = new byte[1024];
|
||||
int len = 0;
|
||||
|
||||
while ((len = bufferedInputStream.read(bytes)) > 0)
|
||||
{
|
||||
byteArrayOutputStream.write(bytes, 0, len);
|
||||
}
|
||||
|
||||
is.close();
|
||||
bufferedInputStream.close();
|
||||
|
||||
params.add(blogID);
|
||||
params.add(login);
|
||||
params.add(password);
|
||||
|
||||
final Hashtable media = new Hashtable(0);
|
||||
|
||||
media.put("name", filename);
|
||||
media.put("type", mimeType);
|
||||
media.put("bits", byteArrayOutputStream.toByteArray());
|
||||
|
||||
params.add(media);
|
||||
|
||||
final Hashtable response = (Hashtable) xmlrpc.execute("metaWeblog.newMediaObject", params);
|
||||
|
||||
return ((String) response.get("url"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements the metaWeblog.newPost XML-RPC call.
|
||||
*
|
||||
* @param url The XML-RPC URL endpoint.
|
||||
* @param blogID The blog ID.
|
||||
* @param login The login username.
|
||||
* @param password The login password.
|
||||
* @param title The blog description's title.
|
||||
* @param description The blog description's text/description.
|
||||
*
|
||||
* @return The post ID.
|
||||
*
|
||||
* @throws Exception If an error occurred while posting.
|
||||
*/
|
||||
public static String metaWeblogNewPost(String url, String blogID, String login, String password, String title,
|
||||
String description)
|
||||
throws Exception
|
||||
{
|
||||
final XmlRpcClient xmlrpc = new XmlRpcClient(url);
|
||||
final Vector params = new Vector(0);
|
||||
|
||||
params.add(blogID);
|
||||
params.add(login);
|
||||
params.add(password);
|
||||
|
||||
final Hashtable blogEntry = new Hashtable(0);
|
||||
blogEntry.put("title", title);
|
||||
blogEntry.put("description", description);
|
||||
params.add(blogEntry);
|
||||
|
||||
// Set the publish flag
|
||||
params.add(Boolean.valueOf(true));
|
||||
|
||||
return ((String) xmlrpc.execute("metaWeblog.newPost", params));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements the metaWeblog.newPost XML-RPC call.
|
||||
*
|
||||
* @param url The XML-RPC URL endpoint.
|
||||
* @param blogID The blog ID.
|
||||
* @param login The login username.
|
||||
* @param password The login password.
|
||||
* @param title The blog description's title.
|
||||
* @param description The blog description's text/description.
|
||||
* @param file The file location.
|
||||
* @param fileType The file type.
|
||||
*
|
||||
* @return The post ID.
|
||||
*
|
||||
* @throws Exception If an error occurred while posting.
|
||||
*/
|
||||
public static String taEntryUpdate(String url, String blogID, String login, String password, String title,
|
||||
String description, String file, String fileType)
|
||||
throws Exception
|
||||
{
|
||||
final XmlRpcClient xmlrpc = new XmlRpcClient(url);
|
||||
final Vector params = new Vector(0);
|
||||
|
||||
final InputStream is = new FileInputStream(file);
|
||||
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
|
||||
final BufferedInputStream bufferedInputStream = new BufferedInputStream(is);
|
||||
|
||||
final byte[] bytes = new byte[1024];
|
||||
int len = 0;
|
||||
|
||||
while ((len = bufferedInputStream.read(bytes)) > 0)
|
||||
{
|
||||
byteArrayOutputStream.write(bytes, 0, len);
|
||||
}
|
||||
|
||||
is.close();
|
||||
bufferedInputStream.close();
|
||||
|
||||
final byte[] encodedBytes = Base64.encode(byteArrayOutputStream.toByteArray());
|
||||
|
||||
// Set the API key
|
||||
params.add("TA113805");
|
||||
|
||||
params.add(login);
|
||||
params.add(password);
|
||||
params.add(blogID);
|
||||
|
||||
// Set the entry ID
|
||||
params.add("0");
|
||||
|
||||
params.add(title);
|
||||
params.add(description);
|
||||
|
||||
// Set the category ID
|
||||
params.add("0");
|
||||
|
||||
params.add(new String(encodedBytes));
|
||||
params.add(fileType);
|
||||
|
||||
return ((String) xmlrpc.execute("ta.entry.Update", params));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue