/// <summary> /// Selects the file. /// </summary> /// <param name="pageContent">Content of the page.</param> /// <param name="packageName">Name of the package.</param> private void SelectFile(string pageContent, string packageName) { Assert.ArgumentNotNullOrEmpty(pageContent, nameof(pageContent)); Assert.ArgumentNotNullOrEmpty(packageName, nameof(packageName)); var package = Path.GetFileName(packageName); var uploadPackagePage = new HtmlResponse(pageContent); var viewState = uploadPackagePage.GetValueByElementName("__VIEWSTATE", false); var csrfToken = uploadPackagePage.GetValueByElementName("__CSRFTOKEN", false); this.formData = new NameValueCollection { { "__PARAMETERS", "" }, { "__EVENTTARGET", "NextButton" }, { "__EVENTARGUMENT", "" }, { "__SOURCE", "NextButton" }, { "__CSRFTOKEN", csrfToken }, { "__VIEWSTATE", viewState }, { "__EVENTTYPE", "click" }, { "__ISEVENT", "1" }, { "PackageFile", package }, { "AcceptLicense", "yes" }, { "PackageName", package }, { "Version", "1.0" }, { "Author", "" }, { "Publisher", "" }, { "Restart", "1" }, { "ReadmeText", "" } }; this.Client.Post(InstallationWizardUrl, this.formData); }
/// <summary> /// Adds the file. /// </summary> /// <param name="pageContent">Content of the page.</param> /// <param name="packagePath">The package path.</param> /// <returns></returns> private void AddFile(string pageContent, string packagePath) { Assert.ArgumentNotNullOrEmpty(pageContent, nameof(pageContent)); Assert.ArgumentNotNullOrEmpty(packagePath, nameof(packagePath)); var uploadPackagePage = new HtmlResponse(pageContent); var viewState = uploadPackagePage.GetValueByElementName("__VIEWSTATE", false); var csrfToken = uploadPackagePage.GetValueByElementName("__CSRFTOKEN", false); var fileHandler = uploadPackagePage.GetNameByElementType("file"); this.formData = new NameValueCollection { { "__CSRFTOKEN", csrfToken }, { "__VIEWSTATE", viewState }, { "Unzip", "0" }, { "Overwrite", "1" }, { "__EVENTTARGET", "NextButton" }, { "__EVENTARGUMENT", "" }, { "__SOURCE", "NextButton" }, { "__EVENTTYPE", "click" }, { "__ISEVENT", "1" }, { "__BUTTON", "0" }, { fileHandler, packagePath } }; this.Client.Post(uploadPackageWizardUrl, this.formData); }
/// <summary> /// Processes the specified client. /// </summary> /// <param name="pipelineContext">The args.</param> public void Process(IPipelineContext <IHttpClient> pipelineContext) { var client = pipelineContext.Model; var loginContent = this.GetLoginPageContent(client); if (string.IsNullOrEmpty(loginContent)) { pipelineContext.Aborted = true; return; } var loginPage = new HtmlResponse(loginContent); var viewState = loginPage.GetValueByElementName("__VIEWSTATE"); var submit = loginPage.GetNameByElementType("submit"); var submitValue = loginPage.GetValueByElementName(submit); var viewStateGenerator = loginPage.GetValueByElementName("__VIEWSTATEGENERATOR"); var eventValidation = loginPage.GetValueByElementName("__EVENTVALIDATION"); var loginPrefix = GetLoginPrefix(submit); var data = new NameValueCollection { { "__EVENTTARGET", "" }, { "__EVENTARGUMENT", "" }, { "__VIEWSTATE", viewState }, { "__VIEWSTATEGENERATOR", viewStateGenerator }, { "__EVENTVALIDATION", eventValidation }, { loginPrefix + "UserName", pipelineContext.Model.Connection.Credentials.UserName }, { loginPrefix + "Password", pipelineContext.Model.Connection.Credentials.Password }, { submit, submitValue } }; client.Post("sitecore/login", data); }