Exemplo n.º 1
0
		private void CallTheApi()
		{
			if (!string.IsNullOrWhiteSpace(txtUrl.Text) && !txtUrl.Text.EndsWith("/"))
				txtUrl.Text = txtUrl.Text + "/";

			if (!string.IsNullOrWhiteSpace(cboPath.Text) && !cboPath.Text.StartsWith("/"))
				cboPath.Text = "/" + cboPath.Text;

			var context = new WebApiRequestContext
			{
				PublicKey = txtPublicKey.Text,
				SecretKey = txtSecretKey.Text,
				Url = txtUrl.Text + (radioOdata.Checked ? "odata/" : "api/") + txtVersion.Text + cboPath.Text,
				HttpMethod = cboMethod.Text,
				HttpAcceptType = (radioJson.Checked ? ApiConsumer.JsonAcceptType : ApiConsumer.XmlAcceptType)
			};

			if (!string.IsNullOrWhiteSpace(cboQuery.Text))
				context.Url = string.Format("{0}?{1}", context.Url, cboQuery.Text);

			if (!context.IsValid)
			{
				"Please enter Public-Key, Secret-Key, URL and method.".Box(MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
				Debug.WriteLine(context.ToString());
				return;
			}

			var apiConsumer = new ApiConsumer();
			var response = new WebApiConsumerResponse();
			var sb = new StringBuilder();
			StringBuilder requestContent = null;
			Dictionary<string, object> multiPartData = null;

			lblRequest.Text = "Request: " + context.HttpMethod + " " + context.Url;
			lblRequest.Refresh();

			if (radioApi.Checked && !string.IsNullOrEmpty(txtFile.Text) && cboPath.Text.StartsWith("/Upload"))
				multiPartData = apiConsumer.CreateProductImageMultipartData(txtFile.Text, txtProductId.Text.ToInt(), txtProductSku.Text);

			var webRequest = apiConsumer.StartRequest(context, cboContent.Text, multiPartData, out requestContent);
			txtRequest.Text = requestContent.ToString();

			bool result = apiConsumer.ProcessResponse(webRequest, response);

			lblResponse.Text = "Response: " + response.Status;

			sb.Append(response.Headers);

			if (result && radioJson.Checked && radioOdata.Checked)
			{
				var customers = response.TryParseCustomers();

				if (customers != null)
				{
					sb.AppendLine(string.Format("Parsed {0} customer(s):", customers.Count));

					foreach (var customer in customers)
						sb.AppendLine(customer.ToString());

					sb.Append("\r\n");
				}
			}

			sb.Append(response.Content);
			txtResponse.Text = sb.ToString();

			cboPath.InsertRolled(cboPath.Text, 64);
			cboQuery.InsertRolled(cboQuery.Text, 64);
			cboContent.InsertRolled(cboContent.Text, 64);
		}
Exemplo n.º 2
0
        private void CallTheApi()
        {
            if (txtUrl.Text.HasValue() && !txtUrl.Text.EndsWith("/"))
                txtUrl.Text = txtUrl.Text + "/";

            if (cboPath.Text.HasValue() && !cboPath.Text.StartsWith("/"))
                cboPath.Text = "/" + cboPath.Text;

            var context = new WebApiRequestContext
            {
                PublicKey = txtPublicKey.Text,
                SecretKey = txtSecretKey.Text,
                Url = txtUrl.Text + (radioOdata.Checked ? "odata/" : "api/") + txtVersion.Text + cboPath.Text,
                HttpMethod = cboMethod.Text,
                HttpAcceptType = (radioJson.Checked ? ApiConsumer.JsonAcceptType : ApiConsumer.XmlAcceptType)
            };

            if (cboQuery.Text.HasValue())
                context.Url = string.Format("{0}?{1}", context.Url, cboQuery.Text);

            if (!context.IsValid)
            {
                "Please enter Public-Key, Secret-Key, URL and method.".Box(MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Debug.WriteLine(context.ToString());
                return;
            }

            var apiConsumer = new ApiConsumer();
            var response = new WebApiConsumerResponse();
            var sb = new StringBuilder();
            StringBuilder requestContent = null;
            Dictionary<string, object> multiPartData = null;

            lblRequest.Text = "Request: " + context.HttpMethod + " " + context.Url;
            lblRequest.Refresh();

            if (radioApi.Checked && txtFile.Text.HasValue())
            {
                var id1 = txtIdentfier1.Text.ToInt();
                var id2 = txtIdentfier2.Text;
                var keyForId1 = "Id";
                var keyForId2 = "";

                multiPartData = new Dictionary<string, object>();

                if (cboPath.Text.StartsWith("/Uploads/ProductImages"))
                {
                    // only one identifier required: product id, sku or gtin
                    keyForId2 = "Sku";
                }
                else if (cboPath.Text.StartsWith("/Uploads/ImportFiles"))
                {
                    // only one identifier required: import profile id or profile name
                    keyForId2 = "Name";

                    // to delete existing import files:
                    //multiPartData.Add("deleteExisting", true);
                }

                if (id1 != 0)
                    multiPartData.Add(keyForId1, id1);

                if (id2.HasValue())
                    multiPartData.Add(keyForId2, id2);

                apiConsumer.AddApiFileParameter(multiPartData, txtFile.Text);
            }

            var webRequest = apiConsumer.StartRequest(context, cboContent.Text, multiPartData, out requestContent);
            txtRequest.Text = requestContent.ToString();

            var result = apiConsumer.ProcessResponse(webRequest, response);

            lblResponse.Text = "Response: " + response.Status;

            sb.Append(response.Headers);

            if (result && radioJson.Checked && radioOdata.Checked)
            {
                var customers = response.TryParseCustomers();

                if (customers != null)
                {
                    sb.AppendLine("Parsed {0} customer(s):".FormatInvariant(customers.Count));

                    customers.ForEach(x => sb.AppendLine(x.ToString()));

                    sb.Append("\r\n");
                }
            }

            sb.Append(response.Content);
            txtResponse.Text = sb.ToString();

            cboPath.InsertRolled(cboPath.Text, 64);
            cboQuery.InsertRolled(cboQuery.Text, 64);
            cboContent.InsertRolled(cboContent.Text, 64);
        }