/// <summary> /// Open an existing Object Parameters File /// </summary> /// <param name="Filename">Object Parameters File</param> public ObjectParameterDatabase(string Filename) { FileStream FS = new FileStream(Filename, FileMode.Open); byte[] Read = new byte[4]; FS.Read(Read, 0, 4); if (Encoding.ASCII.GetString(Read) != "SOPD") { throw new Exception("Invalid Database File"); } Version Check = new Version(FS.ReadByte(), FS.ReadByte()); if (Check < Version) { FS.Close(); Version = Check; return; } FS.ReadByte(); FS.ReadByte(); FS.Read(Read, 0, 4); if (Encoding.ASCII.GetString(Read) != "DICT") { throw new Exception("Invalid Database File"); } FS.Read(Read, 0, 4); int ParamCount = BitConverter.ToInt32(Read, 0); for (int i = 0; i < ParamCount; i++) { string ID = FS.PeekString(3); Parameter param; if (ID == "OBJ") { param = new ObjectParameter(); } else if (ID == "DSN") { param = new DesignParameter(); } else if (ID == "SND") { param = new SoundFXParameter(); } else { param = new ObjectParameter(); } param.Read(FS); ObjectParameters.Add(param.ClassName, param); } FS.Close(); }
private void button1_Click(object sender, EventArgs e) { IWebDriver webDriver = new ChromeDriver(); webDriver.Navigate().GoToUrl("https://teespring.com/login"); var divRoot = webDriver.FindElement(By.XPath("//div[@class='authentication__standalone js-user-auth-standalone authentication--email authentication--login_open']")); var divAuth = divRoot.FindElement(By.XPath("//div[@class='authentication authentication--login js-user-login']")); var emailInput = divAuth.FindElement(By.Name("email")); DivClick(webDriver, emailInput, "*****@*****.**", 1000); var passInput = divAuth.FindElement(By.Name("password")); DivClick(webDriver, passInput, "19001560", 1000); var loginBtn = divAuth.FindElement(By.XPath("//input[@class='button button--primary authentication__button js-email-login-submit']")); loginBtn.Click(); Thread.Sleep(1500); var tag = webDriver.FindElement(By.XPath("//meta[@name='csrf-token']")); CookieContainer container = new CookieContainer(); foreach (var cc in webDriver.Manage().Cookies.AllCookies) { container.Add(new System.Net.Cookie(cc.Name, cc.Value, cc.Path, cc.Domain)); } CustomWeb web = new CustomWeb(container); string token = tag.GetAttribute("content"); web.TOKEN = token; //string result = web.SendRequest("https://teespring.com/login", "GET", null, true); //var doc = new HtmlAgilityPack.HtmlDocument(); //doc.LoadHtml(result); //var metaNode = doc.DocumentNode.SelectSingleNode("//meta[@name='csrf-token']"); //token = metaNode.GetAttributeValue("content", string.Empty); ////web.TOKEN = token; //var htmlWeb = new HtmlAgilityPack.HtmlWeb(); //doc = htmlWeb.Load("https://teespring.com/login"); //metaNode = doc.DocumentNode.SelectSingleNode("//meta[@name='csrf-token']"); //token = metaNode.GetAttributeValue("content", string.Empty); ////web.TOKEN = token; //string url = "https://teespring.com/sessions"; NameValueCollection nvc = new NameValueCollection(); //nvc.Add("email", "*****@*****.**"); //nvc.Add("password", "19001560"); //string result = web.SendRequest(url, "POST", nvc, false, "application/x-www-form-urlencoded"); //Console.WriteLine("login: "******"csrftoken", token, "/", "teespring.com")); //Console.WriteLine("result: "+result); string responseUrl = ""; string result = web.SendRequest("https://teespring.com/designs", "GET", null, ref responseUrl); Console.WriteLine("response url: " + responseUrl); // signed request string imageName = RandomStringOnly(8) + ".png"; string signedUrl = "https://teespring.com/designs/sign_s3?s3_object_type=image/png&s3_object_name=" + imageName; result = web.SendRequest(signedUrl, "GET", null); Console.WriteLine("signed url: " + result); SignedResponse signedRes = JsonConvert.DeserializeObject <SignedResponse>(result); Console.WriteLine(signedUrl); // regist 1 signal string sign1Url = WebUtility.UrlDecode(signedRes.signed_request); Console.WriteLine(sign1Url); nvc.Clear(); string tempUrl = sign1Url.Split('?')[1]; string[] temp2 = tempUrl.Split('&'); //nvc.Add("X-Amz-Algorithm", temp2[0].Replace("X-Amz-Algorithm=", "")); //nvc.Add("X-Amz-Credential", temp2[1].Replace("X-Amz-Algorithm=", "")); //nvc.Add("X-Amz-Date", temp2[2].Replace("X-Amz-Algorithm=", "")); //nvc.Add("X-Amz-Expires", temp2[3].Replace("X-Amz-Algorithm=", "")); //nvc.Add("X-Amz-SignedHeaders", temp2[4].Replace("X-Amz-Algorithm=", "")); //nvc.Add("x-amz-acl", temp2[5].Replace("X-Amz-Algorithm=", "")); //nvc.Add("X-Amz-Signature", temp2[6].Replace("X-Amz-Algorithm=", "")); nvc.Add("PNG", ImageToBase64(Image.FromFile(@"D:\Auto\Logo\test.png"), System.Drawing.Imaging.ImageFormat.Png)); result = web.SendCustomRequest(sign1Url, "OPTIONS", "teespring-usercontent.s3.amazonaws.com", null, true, "PUT"); result = web.SendCustomRequest2(sign1Url, "PUT", "teespring-usercontent.s3.amazonaws.com", @"D:\Auto\Logo\test.png", false, "", false, "image/png"); // result = web.SendCustomRequest(sign1Url, "POST", "teespring-usercontent.s3.amazonaws.com", null); Console.WriteLine("sign1url result: " + result); string uploadUrl = responseUrl.Replace("edit", "uploads"); // string uploadImageUrl = "https://teespring.com/designs/lu32t4/uploads"; string randName = RandomStringOnly(8); //LogoModel logo = new LogoModel(@"D:\Auto\Logo\1.png", "png"); LogoModel logo = new LogoModel(imageName, "png"); result = web.HttpUploadFileByJson(uploadUrl, JsonConvert.SerializeObject(logo)); Console.WriteLine(result); // check valid url string title = "this-is-ultimate-113"; string checkUrl = "https://teespring.com/url/availability?url=" + title; result = web.SendCustomRequest(checkUrl, "GET", "teespring.com", null); Console.WriteLine("check url result: " + result); // put upload design string uploadDesignUrl = responseUrl.Replace("/edit", ""); string lookupId = uploadDesignUrl.Substring(uploadDesignUrl.LastIndexOf("/") + 1); //UploadDesignParameters desginParams = new UploadDesignParameters(lookupId, title.Replace("-", " "), // title, "I will write some description on here!", "#ipshirt", imageName, // "https://teespring-usercontent.s3.amazonaws.com/"+ imageName, "test.png"); DesignParameter designs = new DesignParameter(lookupId, title.Replace("-", " "), title, "I will write some description on here!", "#ipshirt", imageName, "https://teespring-usercontent.s3.amazonaws.com/" + imageName, "test.png"); string uploadResult = web.SendCustomRequest(uploadDesignUrl, "PUT", "teespring.com", designs.ConvertToNVC(), false, "", false, "application/x-www-form-urlencoded", "application/json"); //dynamic uploadResult = web.SendRequestWithStringData(uploadDesignUrl, "PUT", "teespring.com", // desginParams.ToString(), false, "", false, "application/json"); Console.WriteLine("upload reuslt: " + uploadResult); // camp id dynamic dResult = JsonConvert.DeserializeObject(uploadResult); string campId = dResult.campaign_id; // launch campaign string launchUrl = string.Format("https://teespring.com/campaigns/{0}/launch", campId); dynamic launchResult = web.SendRequestWithStringData(launchUrl, "POST", "teespring.com", "partnership=", false, "", false, "application/x-www-form-urlencoded; charset=UTF-8"); //Console.WriteLine(launchResult); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(launchResult); var metaNode = doc.DocumentNode.SelectSingleNode("//meta[@name='csrf-token']"); token = metaNode.GetAttributeValue("content", string.Empty); web.TOKEN = token; string url = "https://teespring.com/sessions"; nvc.Clear(); nvc.Add("email", "*****@*****.**"); nvc.Add("password", "19001560"); result = web.SendRequest(url, "POST", nvc, false, "application/x-www-form-urlencoded"); Console.WriteLine("login2 : " + result); launchResult = web.SendRequestWithStringData(launchUrl, "POST", "teespring.com", "partnership=", false, "", false, "application/x-www-form-urlencoded; charset=UTF-8"); string readyUrl = "https://teespring.com/designs/" + lookupId + "/assets_ready"; //for (int i = 0; i < 5; i++) //{ string finalResult = web.SendRequest(readyUrl, "GET", null); Console.WriteLine(finalResult); Thread.Sleep(2000); //} }