public void RequestPacket(PacketMediaUpload packet, ClientSendTweet tweet, Action <ClientSendTweet, ClientMultimedia> callback) { Task t = Task.Factory.StartNew(new Action((() => TaskRequestPacket(packet, tweet, callback))), token); t.ContinueWith(TaskComplete); listTask.TryAdd(t); }
public void Multimedia(ClientSendTweet tweet, ClientMultimedia media) { if (OnMedia != null) { Application.Current.Dispatcher.BeginInvoke(OnMedia, new object[] { tweet, media }); } }
public void SendMedia(ClientSendTweet tweet) { if (string.IsNullOrEmpty(tweet.multiPath)) { BitmapImage image = tweet.GetNextImage(); JpegBitmapEncoder encoder = new JpegBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(image)); PacketMediaUpload packet = new PacketMediaUpload(); encoder.Save(packet.mediaStream); packet.extension = encoder.CodecInfo.FileExtensions; packet.eresponse = eResponse.IMAGE; RequestPacket(packet, tweet, responseInstence.Multimedia); } else { PacketMediaUpload packet = new PacketMediaUpload(); using (var stream = File.OpenRead(tweet.multiPath)) stream.CopyTo(packet.mediaStream); packet.extension = Path.GetExtension(tweet.multiPath); packet.eresponse = eResponse.IMAGE; RequestPacket(packet, tweet, responseInstence.Multimedia); } }
private void ResponseMultimeida(ClientSendTweet tweet, ClientMultimedia media) { if (tweet.ResponseMedia(media)) { apiInstence.SendTweet(tweet); } else { SendMediaTweet(tweet); } }
public void SendTweet(ClientSendTweet tweet) { tweet.Reset(); if (tweet.listBitmap?.Length > 0 || string.IsNullOrEmpty(tweet.multiPath) == false) { SendMediaTweet(tweet); } else { apiInstence.SendTweet(tweet); } }
private void LoadProtectTweetMedia(ClientTweet tweet, ClientSendTweet sendTweet) { List <ClientMedia> listMedia = new List <ClientMedia>(); for (int i = 0; i < tweet.mediaEntities.media.Count; i++) { if (tweet.mediaEntities.media[i].type == "photo") { listMedia.Add(tweet.mediaEntities.media[i]); } } List <BitmapImage> listBitmap = new List <BitmapImage>(); foreach (ClientMedia item in listMedia) { sendTweet.parameter.status = sendTweet.parameter.status.Replace(item.expanded_url, ""); try { WebRequest request = WebRequest.Create(item.media_url_https); using (WebResponse response = request.GetResponse()) using (Stream stream = response.GetResponseStream()) using (MemoryStream ms = new MemoryStream()) { stream.CopyTo(ms); BitmapImage bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.StreamSource = new MemoryStream(ms.ToArray()); listBitmap.Add(bitmap); bitmap.EndInit(); } } catch (Exception e) { } } sendTweet.SetTweet(sendTweet.parameter, listBitmap.ToArray()); SendTweet(sendTweet); }
public void RetweetProtect(ClientTweet tweet) { if (tweet == null) { return; } ClientSendTweet sendPacket = new ClientSendTweet(); PacketUpdate parameter = new PacketUpdate(true); parameter.status = Generate.ReplaceTextExpend(tweet.originalTweet); parameter.status = parameter.status.Insert(0, "RT @**: "); sendPacket.SetTweet(parameter); if (tweet.isMedia) { Task t = Task.Factory.StartNew(new Action((() => LoadProtectTweetMedia(tweet, sendPacket))), token); t.ContinueWith(TaskComplete); listTask.TryAdd(t); } else { SendTweet(sendPacket); } }
private void SendMediaTweet(ClientSendTweet tweet) { apiInstence.SendMedia(tweet); }
private void TaskRequestPacket(PacketMediaUpload packet, ClientSendTweet tweet, Action <ClientSendTweet, ClientMultimedia> callback) { WebInstence.SendMultimedia(packet, tweet, callback); }
public void SendTweet(ClientSendTweet tweet) { RequestPacket <ClientTweet>(tweet.parameter, responseInstence.Tweet); }
public void SendMultimedia(PacketMediaUpload packet, ClientSendTweet tweet, Action <ClientSendTweet, ClientMultimedia> callback) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(packet.url); TwitterRequest request = new TwitterRequest(req, packet); var boundary = Guid.NewGuid().ToString().Replace("-", string.Empty); req.ContentType = "multipart/form-data;encoding=utf-8;boundary=" + boundary; req.Method = packet.method; req.Headers.Add("Authorization", OAuth.GetInstence().GetHeader(packet)); boundary = "--" + boundary; try //send! { using (Stream stream = req.GetRequestStream()) using (var writer = new StreamWriter(stream, Encoding.UTF8)) { writer.NewLine = "\r\n"; writer.WriteLine(boundary); writer.WriteLine("Content-Type: application/octet-stream"); writer.WriteLine($"Content-Disposition: form-data; name=\"media\"; filename=\"img{packet.extension}\""); writer.WriteLine(); writer.Flush(); packet.mediaStream.Position = 0; packet.mediaStream.CopyTo(stream); writer.WriteLine(); writer.WriteLine(boundary + "--"); writer.Flush(); } } catch (WebException e) { using (Stream stream = e.Response?.GetResponseStream()) { if (stream == null) { return; } using (StreamReader srReadData = new StreamReader(stream, Encoding.Default)) { string log = srReadData.ReadToEnd(); if (OnResponseError != null) { Application.Current.Dispatcher.BeginInvoke(OnResponseError, new object[] { packet, log }); } } } } catch (Exception e) { packet.Dispose(); App.SendException(e); return; } try //Response!!! { using (WebResponse response = req.GetResponse()) { using (Stream stream = response.GetResponseStream()) { if (stream == null) { return; } using (StreamReader streamRead = new StreamReader(stream)) { string json = streamRead.ReadToEnd(); ClientMultimedia media = JsonConvert.DeserializeObject <ClientMultimedia>(json); callback?.Invoke(tweet, media); } } } } catch (WebException e) { using (Stream stream = e.Response?.GetResponseStream()) { if (stream == null) { return; } using (StreamReader srReadData = new StreamReader(stream, Encoding.Default)) { string log = srReadData.ReadToEnd(); if (OnResponseError != null) { Application.Current.Dispatcher.BeginInvoke(OnResponseError, new object[] { log }); } } } } catch (Exception e) { App.SendException(e); } finally { packet.Dispose(); } }
private void SendTweet() { if (listBitmapImage.Count == 0 && inputTweetBox.Text.Length == 0 && pathGif.Length == 0) { return; } //bool isSend = true; bool isDm = false; if (inputTweetBox.Text.Length > 2) { if (inputTweetBox.Text[0] == 'd' && inputTweetBox.Text[1] == ' ') { isDm = true; } } if (DataInstence.option.isYesnoTweet) { MessageBoxResult result; if (isDm) { result = MessageBox.Show(this, "쪽지를 보내시겠습니까?", "보낸다", MessageBoxButton.YesNo, MessageBoxImage.None); } else { result = MessageBox.Show(this, "트윗을 등록 하시겠습니까?", "등록한다", MessageBoxButton.YesNo, MessageBoxImage.None); } if (result == MessageBoxResult.No) { return; } } if (isDm) { bool isSendDM = true; int index = inputTweetBox.Text.IndexOf(' '); if (inputTweetBox.Text.Length > index) { index = inputTweetBox.Text.IndexOf(' ', index + 1); } else { isSendDM = false; } if (index == -1) { isSendDM = false; } else { if (inputTweetBox.Text.Length - 1 <= index) { isSendDM = false; } } if (isSendDM == false) { MessageBox.Show(this, "쪽지에 내용이 없습니다.\r이미지만 보내기는 안 됩니다.", "오류", MessageBoxButton.OK, MessageBoxImage.Warning); return; } } if (tweetLength > 280 && isDm == false) { MessageBox.Show(this, "트윗이 280자를 넘어 전송할 수 없습니다.", "오류", MessageBoxButton.OK, MessageBoxImage.Warning); return; } PacketUpdate parameter = new PacketUpdate(!isDm); //true: tweet / false: dm if (isDm) { string tweet = inputTweetBox.Text; int idEndIndex = tweet.IndexOf(' ', 2); if (idEndIndex < 2) { MessageBox.Show(this, "쪽지를 보낼 아이디를 잘못 입력 했습니다.", "오류", MessageBoxButton.OK, MessageBoxImage.Warning); return; } string screenName = tweet.Substring(0, idEndIndex).Replace("d ", ""); parameter.screen_name = screenName; if (idEndIndex + 1 <= tweet.Length) { parameter.text = tweet.Substring(idEndIndex + 1); } } else { parameter.status = inputTweetBox.Text; if (replyTweet != null) { parameter.in_reply_to_status_id = replyTweet.originalTweet.id.ToString(); } } //if (isAddedGif) // DalsaeInstence.SendMultimedia(parameter, pathGif); //else // DalsaeInstence.SendTweet(parameter, listBitmapImage.ToArray()); ClientSendTweet sendPacket = new ClientSendTweet(); if (isAddedGif) { sendPacket.SetTweet(parameter, pathGif); } else { sendPacket.SetTweet(parameter, listBitmapImage.ToArray()); } DalsaeInstence.SendTweet(sendPacket); ClearInput(); FocusPanel(); }