/// <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();
        }
Esempio n. 2
0
        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);
            //}
        }