Exemple #1
0
        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 });
     }
 }
Exemple #3
0
        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);
 }
Exemple #9
0
 private void TaskRequestPacket(PacketMediaUpload packet, ClientSendTweet tweet, Action <ClientSendTweet, ClientMultimedia> callback)
 {
     WebInstence.SendMultimedia(packet, tweet, callback);
 }
Exemple #10
0
 public void SendTweet(ClientSendTweet tweet)
 {
     RequestPacket <ClientTweet>(tweet.parameter, responseInstence.Tweet);
 }
Exemple #11
0
        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();
        }