블로그 이미지
Sunny's

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

'sample'에 해당되는 글 2

  1. 2010.07.30 MetaWeblog API
  2. 2010.03.15 WPF와 관련된 자료가 잘 정리되어 있는 링크 입니다.
2010. 7. 30. 12:01 .NET Framework

 XML-RPC.NET library  :  http://xml-rpc.net/


The following code samples show how to use the XML-RPC.NET library and the .NET Framework to call MetaWeblog API methods exposed by Windows Live Space

MetaWeblogAPI C# Code Sample

MetaWeblogAPI VisualBasic .NET Code Sample



Example

This C# code example demonstrates how to use all of the methods supported by the MetaWeblog API. The example enables external programs to get and set the text and attributes of Weblog posts. The example uses the XML-RPC protocol for communication between client applications and the Weblog server.

using System;
using CookComputing.XmlRpc;
using System.Net;
 
namespace MetaWeblogApi
{
 
 
/// <summary>
/// This struct represents information about a user's blog.
/// </summary>
[XmlRpcMissingMapping(MappingAction.Ignore)]
struct UserBlog{
public string url;
public string blogid;
public string blogName;
}
 

/// <summary>
/// This struct represents information about a user.
/// </summary>
[XmlRpcMissingMapping(MappingAction.Ignore)]
struct UserInfo{
public string url;
public string blogid;
public string blogName;
public string firstname;
public string lastname;
public string email;
public string nickname;
}
 
 
/// <summary>
/// This struct represents the information about a category that could be returned by the
/// getCategories() method.
/// </summary>
[XmlRpcMissingMapping(MappingAction.Ignore)]
struct Category{
public string description;
public string title;
}
 
/// <summary>
/// This struct represents the information about a post that could be returned by the
/// editPost(), getRecentPosts() and getPost() methods.
/// </summary>
[XmlRpcMissingMapping(MappingAction.Ignore)]
struct Post {
public DateTime dateCreated;
public string description;
public string title;
public string postid;  
public string[] categories;
}
 
/// <summary>
/// This class can be used to programmatically interact with a Weblog on
/// MSN Spaces using the MetaWeblog API.
/// </summary>
[XmlRpcUrl("https://storage.msn.com/storageservice/MetaWeblog.rpc")]
class MsnSpacesMetaWeblog : XmlRpcClientProtocol {
 
 
/// <summary>
/// Returns the most recent draft and non-draft blog posts sorted in descending order by publish date.
/// </summary>
/// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <param name="password"> The user’s secret word. </param>
/// <param name="numberOfPosts"> The number of posts to return. The maximum value is 20. </param>
/// <returns></returns>
[XmlRpcMethod("metaWeblog.getRecentPosts")]
public Post[] getRecentPosts(
string blogid,
string username,
string password,
int numberOfPosts){

return (Post[]) this.Invoke("getRecentPosts", new object[]{ blogid, username, password, numberOfPosts}); 
}
 

        /// <summary>
        /// Posts a new entry to a blog.
        /// </summary>
/// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <param name="password"> The user’s secret word. </param>
/// <param name="post"> A struct representing the content to update. </param>
        /// <param name="publish"> If false, this is a draft post. </param>
        /// <returns> The postid of the newly-created post. </returns>
        [XmlRpcMethod("metaWeblog.newPost")]
public string newPost(
string blogid,
string username,
string password,
Post content,
bool publish){

return (string) this.Invoke("newPost", new object[]{ blogid, username, password, content, publish}); 
}
 
/// <summary>
/// Edits an existing entry on a blog.
/// </summary>
/// <param name="postid"> The ID of the post to update. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <param name="password"> The user’s secret word. </param>
/// <param name="post"> A struct representing the content to update. </param>
/// <param name="publish"> If false, this is a draft post. </param>
/// <returns> Always returns true. </returns>
[XmlRpcMethod("metaWeblog.editPost")]
public bool editPost(
string postid,
string username,
string password,
Post content,
bool publish){

return (bool) this.Invoke("editPost", new object[]{ postid, username, password, content, publish}); 
}
 
/// <summary>
/// Deletes a post from the blog.
/// </summary>
/// <param name="appKey"> This value is ignored. </param>
/// <param name="postid"> The ID of the post to update. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <param name="password"> The user’s secret word. </param>
/// <param name="post"> A struct representing the content to update. </param>
/// <param name="publish"> This value is ignored. </param>
/// <returns> Always returns true. </returns>
[XmlRpcMethod("blogger.deletePost")]
public bool deletePost(
string appKey,
string postid,
string username,
string password,
bool publish){

return (bool) this.Invoke("deletePost", new object[]{ appKey, postid, username, password,  publish}); 
}
 

/// <summary>
/// Returns information about the user’s space. An empty array is returned if the user does not have a space.
/// </summary>
/// <param name="appKey"> This value is ignored. </param>
/// <param name="postid"> The ID of the post to update. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <returns> An array of structs that represents each of the user’s blogs. The array will contain a maximum of one struct, since a user can only have a single space with a single blog. </returns>
[XmlRpcMethod("blogger.getUsersBlogs")]
public UserBlog[] getUsersBlogs(
string appKey,
string username,
string password){
 
return (UserBlog[]) this.Invoke("getUsersBlogs", new object[]{ appKey,  username, password}); 
}
 
/// <summary>
/// Returns basic user info (name, e-mail, userid, and so on).
/// </summary>
/// <param name="appKey"> This value is ignored. </param>
/// <param name="postid"> The ID of the post to update. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <returns> A struct containing profile information about the user.
/// Each struct will contain the following fields: nickname, userid, url, e-mail,
/// lastname, and firstname. </returns>
[XmlRpcMethod("blogger.getUserInfo")]
public UserInfo getUserInfo(
string appKey,
string username,
string password){
 
return (UserInfo) this.Invoke("getUserInfo", new object[]{ appKey,  username, password}); 
}
 
 
/// <summary>
/// Returns a specific entry from a blog.
/// </summary>
/// <param name="postid"> The ID of the post to update. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <param name="password"> The user’s secret word. </param>
    /// <returns> Always returns true. </returns>
[XmlRpcMethod("metaWeblog.getPost")]
public Post getPost(
string postid,
string username,
string password){

return (Post) this.Invoke("getPost", new object[]{ postid, username, password}); 
}
 
/// <summary>
/// Returns the list of categories that have been used in the blog.
/// </summary>
/// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param>
/// <param name="username"> The name of the user’s space. </param>
/// <param name="password"> The user’s secret word. </param>
/// <returns> An array of structs that contains one struct for each category. Each category struct will contain a description field that contains the name of the category. </returns>
[XmlRpcMethod("metaWeblog.getCategories")]
public Category[] getCategories(
string blogid,
string username,
string password){
 
return (Category[]) this.Invoke("getCategories", new object[]{ blogid, username, password}); 
}
 
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args) {
 
MsnSpacesMetaWeblog mw = new MsnSpacesMetaWeblog();
string username = "!Space3*Pqc3*yUo00Y0!";
string password = "mYsEcReTwOrD";
mw.Credentials = new NetworkCredential(username, password);
 
try{
 
  // Space3Pqc3yUo00Y0
Post post = new Post();
post.categories = new string[]{"Test Posts"};
post.title = "Tets 3";
post.description = "This is my 3rd test post";
post.dateCreated = DateTime.Now;
 
string id = mw.newPost("MyBlog", username, password, post, true);
 
post.title = "Test 3 (typo fixed)";
 
mw.editPost(id, username, password, post, true);

post = mw.getPost(id, username, password);
Console.WriteLine("Just edited the post with the title '{0}' at '{1}'", post.title, post.dateCreated);
 
/* display list of categories used on the blog */
Category[] categories = mw.getCategories("MyBlog", username, password);

foreach(Category c in categories){
Console.WriteLine("Category: {0}", c.description);
}
 
/* display title of the ten most recent posts */
Post[] posts = mw.getRecentPosts("MyBlog", username, password, 10);
 
foreach(Post p in posts){
Console.WriteLine("Post Title: {0}", p.title);
}
 
mw.deletePost(String.Empty, id, username, password, true);
Console.WriteLine("The post entitled '{0}' has been deleted", post.title);
 
/* get info on user's blogs */
UserBlog[] blogs = mw.getUsersBlogs(String.Empty, username, password);

foreach(UserBlog b in blogs){
Console.WriteLine("The URL of '{0}' is {1}", b.blogName, b.url);
}
 
/* get info on the user */
UserInfo user = mw.getUserInfo(String.Empty, username, password);
Console.WriteLine("{0} {1} ({2}) is the owner of the space whose URL is {3}", user.firstname, user.lastname, user.email, user.url);

 
}catch(XmlRpcFaultException xrfe){
Console.WriteLine("ERROR: {0}", xrfe.FaultString);
}
 
Console.ReadLine();
}

}

}


posted by Sunny's
2010. 3. 15. 13:23 WPF, Silverlight

WPF를 처음 사용하시는 분들~ ^^
쉽지 않으셨으리라 생각됩니다. 관련된 테마별로 소스와 문서가 잘 정리되어 있는 링크를 공유합니다.
Visual Studio 2010과 함께 WPF도 4.0으로 업그레이드 될 예정입니다.

http://code.msdn.microsoft.com/wpfsamples 
posted by Sunny's
prev 1 next