{"id":53,"date":"2009-08-02T18:39:35","date_gmt":"2009-08-02T18:39:35","guid":{"rendered":"http:\/\/sunny.byethost18.com\/WP\/?p=53"},"modified":"2009-08-02T18:39:35","modified_gmt":"2009-08-02T18:39:35","slug":"twitpic-api-library-twipli-2","status":"publish","type":"post","link":"https:\/\/inullable.in\/blog\/?p=53","title":{"rendered":"TwitPic API Library : TwiPLi"},"content":{"rendered":"<p><font size=\"2\">On last weekend, I have been playing around with <\/font><a href=\"http:\/\/twitpic.com\/api.do\"><font size=\"2\">TwitPic API<\/font><\/a><font size=\"2\">. <\/font> <\/p>\n<p><font size=\"2\">Ok! The thing is that <\/font><a href=\"http:\/\/twitpic.com\/api.do\"><font size=\"2\">TwitPic API<\/font><\/a><font size=\"2\"> is not that much complex, since all <\/font><a href=\"http:\/\/twitpic.com\/\"><font size=\"2\">TwitPic<\/font><\/a><font size=\"2\"> provides is that it lets you post your funny\/sad looking pictures or any picture you want to post on it, so it can be shared on twitter or any other site. Its pretty much easy to implement all you have to know is how to create a web request, parse a XML, and post Multipart\/form-data. You can get complete reference to TwitPic API here: <\/font><a href=\"http:\/\/twitpic.com\/api.do\"><font size=\"2\">http:\/\/twitpic.com\/api.do<\/font><\/a><font size=\"2\"> <\/font> <\/p>\n<p><font size=\"2\">Since, hosting pictures is a part of some web applications that, I write and will write in future. So, I wrote my own library in .NET framework, that I can use to post pictures on TwitPic. As usual being a lazy guy and considering that code and methods involved are straight forward. I\u2019m giving link to the CodePlex hosted project page, where you can download the library and complete source code <strong>(MS-Pl Licensed).<\/strong> <\/font> <\/p>\n<p><font size=\"2\">I have documented code at many places, wherever I thought was needed. So, there is very small possibility that you would say the \u201cHoly F Word\u201d while going through it, still if you may want to say so. \ud83d\ude1b <\/font> <\/p>\n<p><a href=\"http:\/\/twipli.codeplex.com\/\"><font size=\"2\"><strong>CodePlex Project Link<\/strong> http:\/\/twipli.codeplex.com<\/font><\/a><font size=\"2\"> <\/font> <\/p>\n<p><font size=\"2\">Here I would share the basic process, you need to follow to post your image file on TwitPic.com <\/font> <\/p>\n<p><font size=\"2\">TwitPic.com provides 2 methods: UploadAndPost and Upload <\/font> <\/p>\n<p><font size=\"2\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; <\/font> <\/p>\n<p><font size=\"2\"><strong>METHOD: <\/strong>UploadAndPost <\/font> <\/p>\n<p><b><font size=\"2\">http:\/\/twitpic.com\/api\/uploadAndPost<\/font><\/b><a name=\"uploadAndPost\"><\/a><font size=\"2\"> <\/font> <\/p>\n<p><font size=\"2\">Use this method to upload an image to TwitPic and to send it as a status update to Twitter. <\/font> <\/p>\n<p><font size=\"2\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; <\/font> <\/p>\n<p><font size=\"2\"><strong>METHOD: <\/strong>Upload <\/font> <\/p>\n<p><b><font size=\"2\">http:\/\/twitpic.com\/api\/upload<\/font><\/b><a name=\"upload\"><\/a><font size=\"2\"> <\/font> <\/p>\n<p><font size=\"2\">Use this method if you just want to upload a photo to TwitPic. <\/font> <\/p>\n<p><font size=\"2\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; <\/font> <\/p>\n<p><font size=\"2\">response to both method is in XML format. <\/font> <\/p>\n<p><font size=\"2\">Here is an example: <\/font> <\/p>\n<p><font size=\"2\"><strong>Fields to post in Method: UploadAndPost<br \/><\/strong>(post data should be formatted as <strong>multipart\/form-data<\/strong>): <\/font> <\/p>\n<p><font size=\"2\">&#8211; media (required) &#8211; Binary image data<br \/>&#8211; username (required) &#8211; Twitter username<br \/>&#8211; password (required) &#8211; Twitter password<br \/>&#8211; message (optional) &#8211; Message to post to twitter. The URL of the image is automatically added.<\/font><\/p>\n<p><font size=\"2\">Response XML:<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">&lt;?<\/span><span class=\"html\">xml<\/span> <span class=\"attr\">version<\/span><span class=\"kwrd\">=\"1.0\"<\/span> <span class=\"attr\">encoding<\/span><span class=\"kwrd\">=\"UTF-8\"<\/span>?<span class=\"kwrd\">&gt;<\/span>\n\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">rsp<\/span> <span class=\"attr\">status<\/span><span class=\"kwrd\">=\"ok\"<\/span><span class=\"kwrd\">&gt;<\/span> <span class=\"kwrd\">&lt;<\/span><span class=\"html\">statusid<\/span><span class=\"kwrd\">&gt;<\/span>1111<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">statusid<\/span><span class=\"kwrd\">&gt;<\/span>\n\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">userid<\/span><span class=\"kwrd\">&gt;<\/span>11111<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">userid<\/span><span class=\"kwrd\">&gt;<\/span>\n\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">mediaid<\/span><span class=\"kwrd\">&gt;<\/span>abc123<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">mediaid<\/span><span class=\"kwrd\">&gt;<\/span>\n\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">mediaurl<\/span><span class=\"kwrd\">&gt;<\/span>http:\/\/twitpic.com\/abc123<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">mediaurl<\/span><span class=\"kwrd\">&gt;<\/span>\n\n<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">rsp<\/span><span class=\"kwrd\">&gt;<\/span>\n<\/pre>\n<p><font size=\"2\"><\/font>&nbsp;<\/p>\n<p><font size=\"2\">Here is the abstract sequence in C# that is needed to do above:<\/font><\/p>\n<p><font size=\"2\">Let the variable<strong> Username<\/strong> and<strong> Password<\/strong> store the Twitter account credentials and <strong>ImagePath <\/strong>and <strong>Message <\/strong>are the path to image and Message to be posted.<\/font><\/p>\n<p><font size=\"2\">The first step would be to prepare the post data in Multipart\/form-data format<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">string<\/span> boundary = Guid.NewGuid().ToString();\n\n<span class=\"kwrd\">string<\/span> requestUrl = <span class=\"str\">\"http:\/\/twitpic.com\/api\/uploadAndPost\"<\/span>;\n\n<span class=\"kwrd\">string<\/span> encoding = <span class=\"str\">\"iso-8859-1\"<\/span>;\n<span class=\"kwrd\">string<\/span> header = <span class=\"kwrd\">string<\/span>.Format(<span class=\"str\">\"--{0}\"<\/span>, boundary);\n<span class=\"kwrd\">string<\/span> footer = <span class=\"kwrd\">string<\/span>.Format(<span class=\"str\">\"--{0}--\"<\/span>, boundary);\nStringBuilder contents = <span class=\"kwrd\">new<\/span> StringBuilder();\ncontents.AppendLine(header);\n\n<span class=\"rem\">\/\/Add image to POST content string<\/span>\n\n <span class=\"rem\">\/\/determing file content-type                <\/span>\n<span class=\"kwrd\">string<\/span> fileContentType = GetFileContentType(filename); <span class=\"rem\">\/\/MIME type of image \/\/The filename of image<\/span>\n<span class=\"kwrd\">string<\/span> fileHeader =\nString.Format(<span class=\"str\">\"Content-Disposition: file; name=\"{0}\"; filename=\"{1}\"\"<\/span>, <span class=\"str\">\"media\"<\/span>, filename);\n<span class=\"kwrd\">string<\/span> fileData = Encoding.GetEncoding(encoding).GetString(binaryImageData);\n\ncontents.AppendLine(fileHeader);\ncontents.AppendLine(String.Format(<span class=\"str\">\"Content-Type: {0}\"<\/span>, fileContentType));\ncontents.AppendLine();\ncontents.AppendLine(fileData);\n\n <span class=\"rem\">\/\/Add user field in POST string                  <\/span>\ncontents.AppendLine(header);\ncontents.AppendLine(String.Format(<span class=\"str\">\"Content-Disposition: form-data; name=\"{0}\"\"<\/span>, <span class=\"str\">\"username\"<\/span>));\ncontents.AppendLine();\ncontents.AppendLine(Username);\n\n<span class=\"rem\">\/\/Add Password in POST string                 <\/span>\ncontents.AppendLine(header);\ncontents.AppendLine(String.Format(<span class=\"str\">\"Content-Disposition: form-data; name=\"{0}\"\"<\/span>, <span class=\"str\">\"password\"<\/span>));\ncontents.AppendLine();\ncontents.AppendLine(Password);\n\n <span class=\"rem\">\/\/Add Message in Post string                <\/span>\n<span class=\"kwrd\">if<\/span> (!String.IsNullOrEmpty(Message))\n{\n                    contents.AppendLine(header);\n                    contents.AppendLine(String.Format(<span class=\"str\">\"Content-Disposition: form-data; name=\"{0}\"\"<\/span>, <span class=\"str\">\"message\"<\/span>));\n                    contents.AppendLine();\n                    contents.AppendLine(Message);\n}\n\ncontents.AppendLine(footer);\nencoding = <span class=\"str\">\"iso-8859-1\"<\/span>;\n<span class=\"kwrd\">byte<\/span>[] bytes = Encoding.GetEncoding(encoding).GetBytes(contents.ToString());<\/pre>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p><font size=\"2\"><\/font>&nbsp;<\/p>\n<p><font size=\"2\">Here is the details of Method: <strong>GetFileContentType<\/strong><\/font><\/p>\n<p>It simply returns appropriate MIME type, for an image format.<\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">private<\/span> <span class=\"kwrd\">string<\/span> GetFileContentType(<span class=\"kwrd\">string<\/span> FileName)\n        {\n            <span class=\"kwrd\">if<\/span>(FileName.EndsWith(<span class=\"str\">\"jpg\"<\/span>,<span class=\"kwrd\">true<\/span>,System.Globalization.CultureInfo.CurrentCulture))\n            {\n                <span class=\"kwrd\">return<\/span> <span class=\"str\">\"image\/jpeg\"<\/span>;\n            }\n            <span class=\"kwrd\">else<\/span> <span class=\"kwrd\">if<\/span>(FileName.EndsWith(<span class=\"str\">\"jpeg\"<\/span>,<span class=\"kwrd\">true<\/span>,System.Globalization.CultureInfo.CurrentCulture))\n            {\n                <span class=\"kwrd\">return<\/span> <span class=\"str\">\"image\/jpeg\"<\/span>;\n            }\n            <span class=\"kwrd\">else<\/span> <span class=\"kwrd\">if<\/span>(FileName.EndsWith(<span class=\"str\">\"gif\"<\/span>,<span class=\"kwrd\">true<\/span>,System.Globalization.CultureInfo.CurrentCulture))\n            {\n                <span class=\"kwrd\">return<\/span> <span class=\"str\">\"image\/gif\"<\/span>;\n            }\n            <span class=\"kwrd\">else<\/span> <span class=\"kwrd\">if<\/span>(FileName.EndsWith(<span class=\"str\">\"png\"<\/span>,<span class=\"kwrd\">true<\/span>,System.Globalization.CultureInfo.CurrentCulture))\n            {\n                <span class=\"kwrd\">return<\/span> <span class=\"str\">\"image\/png\"<\/span>;\n            }\n            <span class=\"kwrd\">else<\/span>\n            {\n                <span class=\"kwrd\">return<\/span> <span class=\"str\">\"\"<\/span>;\n            }\n        }<\/pre>\n<p><style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<\/p>\n<p>Finally parse the response XML, this is done by METHOD: RSPXMLParser<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">private<\/span> Response RSPXMLParser(<span class=\"kwrd\">string<\/span> XMLresponse)\n        {\n            XmlDocument XmlDoc = <span class=\"kwrd\">new<\/span> XmlDocument();\n            <span class=\"kwrd\">int<\/span>  UserId;\n            <span class=\"kwrd\">int<\/span> StatusId;\n            <span class=\"kwrd\">string<\/span> MediaId;\n            <span class=\"kwrd\">string<\/span> MediaUrl;\n            <span class=\"kwrd\">int<\/span> ErrorCode;\n            <span class=\"kwrd\">string<\/span> ErrorMessage;\n\n            <span class=\"kwrd\">try<\/span>\n            {\n                XmlDoc.LoadXml(XMLresponse);\n                XmlNodeList RootNode = XmlDoc.SelectNodes(<span class=\"str\">\"rsp\"<\/span>);\n                <span class=\"kwrd\">if<\/span>(RootNode.Item(0).Attributes[<span class=\"str\">\"status\"<\/span>].InnerText==<span class=\"str\">\"ok\"<\/span>)\n                {\n                    MediaId = RootNode.Item(0).SelectNodes(<span class=\"str\">\"mediaid\"<\/span>).Item(0).InnerText;\n                    MediaUrl = RootNode.Item(0).SelectNodes(<span class=\"str\">\"mediaurl\"<\/span>).Item(0).InnerText;\n                    <span class=\"kwrd\">try<\/span>\n                    {\n                        UserId = <span class=\"kwrd\">int<\/span>.Parse(RootNode.Item(0).SelectNodes(<span class=\"str\">\"userid\"<\/span>).Item(0).InnerText);\n                        StatusId = <span class=\"kwrd\">int<\/span>.Parse(RootNode.Item(0).SelectNodes(<span class=\"str\">\"statusid\"<\/span>).Item(0).InnerText);\n                        <span class=\"kwrd\">return<\/span> <span class=\"kwrd\">new<\/span> Response(StatusId, UserId, MediaId, MediaUrl);\n                    }\n                    <span class=\"kwrd\">catch<\/span>\n                    {\n                        <span class=\"kwrd\">return<\/span> <span class=\"kwrd\">new<\/span> Response(MediaId, MediaUrl);\n                    }\n                }\n                <span class=\"kwrd\">else<\/span>\n                {\n                    <span class=\"rem\">\/\/&lt;err code=\"1001\" msg=\"Invalid twitter username or password\" \/&gt;<\/span>\n                    ErrorCode = <span class=\"kwrd\">int<\/span>.Parse(RootNode.Item(0).SelectNodes(<span class=\"str\">\"err\"<\/span>).Item(0).Attributes[<span class=\"str\">\"code\"<\/span>].InnerText);\n                    ErrorMessage = RootNode.Item(0).SelectNodes(<span class=\"str\">\"err\"<\/span>).Item(0).Attributes[<span class=\"str\">\"msg\"<\/span>].InnerText;\n                    <span class=\"kwrd\">return<\/span> <span class=\"kwrd\">new<\/span> Response(ErrorCode, ErrorMessage);\n                }\n            }\n            <span class=\"kwrd\">catch<\/span>(Exception ex)\n            {\n                <span class=\"kwrd\">return<\/span> <span class=\"kwrd\">new<\/span> Response(<span class=\"str\">\"XML Parse error: \"<\/span>+ex.ToString());\n            }\n        }<\/pre>\n<p><style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<\/p>\n<p><strong>The Response object referred above:<\/strong><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">public<\/span> <span class=\"kwrd\">class<\/span> Response\n    {\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">int<\/span> StatusID;                  <span class=\"rem\">\/\/ like 1111<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">int<\/span> UserID;                     <span class=\"rem\">\/\/ like 11111<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">string<\/span> MediaID;             <span class=\"rem\">\/\/ like abc123<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">string<\/span> MediaUrl;            <span class=\"rem\">\/\/ Something like this http:\/\/twitpic.com\/abc123<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">string<\/span> MiniImage;         <span class=\"rem\">\/\/ Mini Thumbnail URL<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">string<\/span> ThumbImage;     <span class=\"rem\">\/\/ Thumbnail URL<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">bool<\/span> Status;                  <span class=\"rem\">\/\/ True = Success | False= Fail :-(<\/span>\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">int<\/span> ErrorCode;                 <span class=\"rem\">\/\/ err_code= 1001 - Invalid twitter username or passwor<\/span>\n                                                        <span class=\"rem\">\/\/ err_code= 1002 - Image not found<\/span>\n                                                        <span class=\"rem\">\/\/ err_code= 1003 - Invalid image type<\/span>\n                                                        <span class=\"rem\">\/\/ err_code= 1004 - Image larger than 4MB <\/span>\n\n        <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">readonly<\/span> <span class=\"kwrd\">string<\/span> ErrorMessage;     <span class=\"rem\">\/\/Will contain the sorry excuse for not doing ur job ;-)<\/span>\n                                                         <span class=\"rem\">\/\/Invalid twitter username or password<\/span>\n\n        <span class=\"kwrd\">public<\/span> Response(<span class=\"kwrd\">int<\/span> statusid, <span class=\"kwrd\">int<\/span> userid, <span class=\"kwrd\">string<\/span> mediaid, <span class=\"kwrd\">string<\/span> mediaurl) <span class=\"rem\">\/\/to be called, when Method = UploadAndPost<\/span>\n        {\n                    StatusID = statusid;\n                    UserID = userid;\n                    MediaID = mediaid;\n                    MediaUrl = mediaurl;\n                    MiniImage = <span class=\"str\">\"http:\/\/twitpic.com\/show\/mini\/\"<\/span>+mediaid;\n                    ThumbImage = <span class=\"str\">\"http:\/\/twitpic.com\/show\/thumb\/\"<\/span>+mediaid;;\n                    Status = <span class=\"kwrd\">true<\/span>;\n                    ErrorCode = 0;\n                    ErrorMessage = <span class=\"str\">\"\"<\/span>;\n        }\n        <span class=\"kwrd\">public<\/span> Response(<span class=\"kwrd\">string<\/span> mediaid, <span class=\"kwrd\">string<\/span> mediaurl) <span class=\"rem\">\/\/to be called, when Method = Upload<\/span>\n        {\n            StatusID = 0;\n            UserID = 0;\n            MediaID = mediaid;\n            MediaUrl = mediaurl;\n            MiniImage = <span class=\"str\">\"http:\/\/twitpic.com\/show\/mini\/\"<\/span> + mediaid;\n            ThumbImage = <span class=\"str\">\"http:\/\/twitpic.com\/show\/thumb\/\"<\/span> + mediaid; ;\n            Status = <span class=\"kwrd\">true<\/span>;\n            ErrorCode = 0;\n            ErrorMessage = <span class=\"str\">\"\"<\/span>;\n        }\n        <span class=\"kwrd\">public<\/span> Response(<span class=\"kwrd\">int<\/span> errorcode, <span class=\"kwrd\">string<\/span> message) <span class=\"rem\">\/\/to be called, when error occurs<\/span>\n        {\n                    StatusID = -1;\n                    UserID = -1;\n                    MediaID = <span class=\"str\">\"\"<\/span>;\n                    MediaUrl = <span class=\"str\">\"\"<\/span>;\n                    MiniImage = <span class=\"str\">\"\"<\/span>;\n                    ThumbImage = <span class=\"str\">\"\"<\/span>;\n                    Status = <span class=\"kwrd\">false<\/span>;\n                    ErrorCode = errorcode;\n                    ErrorMessage = message;\n        }\n        <span class=\"kwrd\">public<\/span> Response(<span class=\"kwrd\">string<\/span> message)\n        {\n            Status = <span class=\"kwrd\">false<\/span>;\n            ErrorCode = 0; <span class=\"rem\">\/\/there is some internal problem<\/span>\n            ErrorMessage = message;\n        }\n\n    }<\/pre>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p>&nbsp;<\/p>\n<p>You can run a quick demo of the <a href=\"http:\/\/twipli.codeplex.com\" target=\"_blank\">Library<\/a>, by creating an Instance in Object test bench and invoking the UploadAndPost method.<\/p>\n<p>In case you want the source code, please download it from <a href=\"http:\/\/twipli.codeplex.com\/\" target=\"_blank\">here<\/a><\/p>\n<p><style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style><\/p>\n","protected":false},"excerpt":{"rendered":"<p>On last weekend, I have been playing around with TwitPic API. Ok! The thing is that TwitPic API is not that much complex, since all TwitPic provides is that it lets you post your funny\/sad looking pictures or any picture you want to post on it, so it can be shared on twitter or any [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11,91],"tags":[],"_links":{"self":[{"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=\/wp\/v2\/posts\/53"}],"collection":[{"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=53"}],"version-history":[{"count":0,"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions"}],"wp:attachment":[{"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inullable.in\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}