/// <summary> /// Post a picture /// </summary> /// <param name="postData"></param> public override void PostPicture(PicturePostObject postData) { #region Argument check //Check for empty path if (string.IsNullOrEmpty(postData.Filename)) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } //Check for empty credentials if (string.IsNullOrEmpty(postData.Username) || string.IsNullOrEmpty(postData.Password)) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } #endregion using (var file = new FileStream(postData.Filename, FileMode.Open, FileAccess.Read)) { try { //Load the picture data var incoming = new byte[file.Length]; file.Read(incoming, 0, incoming.Length); if (postData.UseAsync) { _workerPpo = (PicturePostObject)postData.Clone(); _workerPpo.PictureData = incoming; if (_workerThread == null) { _workerThread = new System.Threading.Thread(ProcessUpload){Name = "PictureUpload"}; _workerThread.Start(); } else { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.NotReady, string.Empty, "A request is already running.")); } } else { //use sync. postData.PictureData = incoming; XmlDocument uploadResult = UploadPictureMessage(API_UPLOAD, postData); if (uploadResult == null) { return; } var nm = new XmlNamespaceManager(uploadResult.NameTable); nm.AddNamespace("tweetPhoto", "http://tweetphotoapi.com"); if (uploadResult.SelectSingleNode("//tweetPhoto:Status",nm).InnerText!= "OK") { string errorText = uploadResult.SelectSingleNode("//err").Attributes["msg"].Value; OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, errorText)); } else { string url = uploadResult.SelectSingleNode("//MediaUrl").InnerText; OnUploadFinish(new PictureServiceEventArgs(PictureServiceErrorLevel.OK, url, string.Empty, postData.Filename)); } } } catch { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } } }
public override void PostPicture(PicturePostObject postData) { #region Argument check //Check for empty path if (string.IsNullOrEmpty(postData.Filename)) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } //Check for empty credentials if (string.IsNullOrEmpty(postData.Username) || string.IsNullOrEmpty(postData.Password)) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } #endregion using (FileStream file = new FileStream(postData.Filename, FileMode.Open, FileAccess.Read)) { try { //Load the picture data byte[] incoming = new byte[file.Length]; file.Read(incoming, 0, incoming.Length); if (postData.UseAsync) { workerPPO = (PicturePostObject)postData.Clone(); workerPPO.PictureData = incoming; if (workerThread == null) { workerThread = new System.Threading.Thread(new System.Threading.ThreadStart(ProcessUpload)); workerThread.Name = "PictureUpload"; workerThread.Start(); } else { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.NotReady, string.Empty, API_ERROR_NOTREADY)); } } else { //use sync. postData.PictureData = incoming; XmlDocument uploadResult = UploadPicture(postData); if (uploadResult == null) { return; } if (uploadResult.SelectSingleNode("rsp").Attributes["status"].Value != "fail") { XmlNode UrlKeyNode = uploadResult.SelectSingleNode("rsp/mediaurl"); string URL = UrlKeyNode.InnerText; URL = URL.Replace("\n",""); OnUploadFinish(new PictureServiceEventArgs(PictureServiceErrorLevel.OK, URL, string.Empty, postData.Filename)); } else { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } } } catch (Exception) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } } }
/// <summary> /// Start posting a picture /// </summary> /// <param name="postData"></param> public override void PostPicture(PicturePostObject postData) { #region Argument check //Check for empty path if (string.IsNullOrEmpty(postData.Filename)) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } //Check for empty credentials if (string.IsNullOrEmpty(postData.Username) || string.IsNullOrEmpty(postData.Password)) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } #endregion using (System.IO.FileStream file = new FileStream(postData.Filename, FileMode.Open, FileAccess.Read)) { try { //Load the picture data byte[] incoming = new byte[file.Length]; file.Read(incoming, 0, incoming.Length); if (postData.UseAsync) { workerPPO = (PicturePostObject)postData.Clone(); workerPPO.PictureData = incoming; if (workerThread == null) { workerThread = new System.Threading.Thread(new System.Threading.ThreadStart(ProcessUpload)); workerThread.Name = "PictureUpload"; workerThread.Start(); } else { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.NotReady, string.Empty, "A request is already running.")); } } else { //use sync. postData.PictureData = incoming; string uploadResult = UploadPicture(API_UPLOAD, postData); if (!string.IsNullOrEmpty(uploadResult)) { OnUploadFinish(new PictureServiceEventArgs(PictureServiceErrorLevel.OK, uploadResult, string.Empty, postData.Filename)); } } } catch (Exception) { OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_UPLOAD)); } } }