Exemplo n.º 1
0
        private async Task <string> UploadImage(AssetData asset, int count = 0)
        {
            try
            {
                StreamReader fileStream = new StreamReader(asset.Path);

                string requestURI = "https://up-api-kage-4story.kakao.com/web/webstory-img/";

                string boundary = "----" + DateTime.Now.Ticks.ToString("x");

                HttpWebRequest request = WebRequest.CreateHttp(requestURI);
                request.Method      = "POST";
                request.ContentType = "multipart/form-data; boundary=" + boundary;
                CookieContainer containerNow = new CookieContainer();
                containerNow.SetCookies(new Uri("https://up-api-kage-4story.kakao.com/"), WebViewWindow.cookieString);
                request.CookieContainer = containerNow;

                request.Headers["Accept-Encoding"] = "gzip, deflate, br";
                request.Headers["Accept-Language"] = "ko-KR";
                request.Headers["Origin"]          = "https://story.kakao.com";

                request.Headers["DNT"] = "1";

                request.Referer               = "https://story.kakao.com/";
                request.KeepAlive             = true;
                request.UseDefaultCredentials = true;
                request.Host      = "up-api-kage-4story.kakao.com";
                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";
                request.Accept    = "*/*";
                request.AutomaticDecompression = DecompressionMethods.GZip;

                Stream writeStream = await request.GetRequestStreamAsync();

                WriteMultipartForm(writeStream, boundary, null, System.IO.Path.GetFileName(asset.Path), System.Web.MimeMapping.GetMimeMapping(asset.Path), fileStream.BaseStream);
                fileStream.Close();

                var readStream = await request.GetResponseAsync();

                var respReader = readStream.GetResponseStream();

                string respResult = await(new StreamReader(respReader, Encoding.UTF8)).ReadToEndAsync();
                respReader.Close();

                UploadedImageProp result = JsonConvert.DeserializeObject <UploadedImageProp>(respResult);

                return(result.access_key + "/" + result.info.original.filename + "?width=" + result.info.original.width + "&height=" + result.info.original.height + "&avg=" + result.info.original.avg);
            }
            catch (WebException e)
            {
                if ((int)(e.Response as HttpWebResponse).StatusCode == 401 && count < 10)
                {
                    return(await UploadImage(asset, ++count));
                }
                else
                {
                    return(null);
                }
            }
        }
Exemplo n.º 2
0
        public async static Task ReplyToFeed(string FeedID, string text, string id, string name, UploadedImageProp img = null)
        {
            text = text.Replace("\"", "\\\"");
            text = text.Replace("\r\n", "\\n");
            text = text.Replace("\n", "\\n");
            text = text.Replace("\r", "\\n");
            string requestURI = "https://story.kakao.com/a/activities/" + FeedID + "/comments";

            if (id != null && name != null)
            {
                text = text.Insert(0, "{!{{" + "\"id\":\"" + id + "\", \"type\":\"profile\", \"text\":\"" + name + "\"}}!} ");
            }

            List <QuoteData> rawContent  = GlobalHelper.GetQuoteDataFromString(text, true);
            string           textContent = Uri.EscapeDataString(JsonConvert.SerializeObject(rawContent).Replace("\"id\":null,", ""));

            string postData;
            string imageData  = "";
            string imageData2 = "";
            string textNow    = GlobalHelper.GetStringFromQuoteData(rawContent, false);

            if (img != null)
            {
                imageData2  = "(Image) ";
                imageData   = "{\"media_path\":\"" + img.access_key + "/" + img.info.original.filename + "?width=" + img.info.original.width + "&height=" + img.info.original.height + "&avg=" + img.info.original.avg + "\",\"type\":\"image\",\"text\":\"(Image) \"},";
                textContent = textContent.Insert(3, Uri.EscapeDataString(imageData));
            }

            postData = "text=" + Uri.EscapeDataString(imageData2 + textNow) + "&decorators=" + textContent;

            postData = postData.Replace("%20", "+");

            byte[] byteArray = Encoding.UTF8.GetBytes(postData);


            HttpWebRequest webRequest = GenerateDefaultProfile(requestURI, "POST");

            Stream writeStream = await webRequest.GetRequestStreamAsync();

            writeStream.Write(byteArray, 0, byteArray.Length);
            writeStream.Close();

            await GetResponseFromRequest(webRequest);
        }