Segment.Request.BlockingRequestHandler.MakeRequest C# (CSharp) Method

MakeRequest() public method

public MakeRequest ( Segment.Model.Batch batch ) : void
batch Segment.Model.Batch
return void
		public void MakeRequest(Batch batch)
        {
            Stopwatch watch = new Stopwatch();

			try
			{
				Uri uri = new Uri(_client.Config.Host + "/v1/import");

				// set the current request time
				batch.SentAt = DateTime.Now.ToString("o");

				string json = JsonConvert.SerializeObject(batch, settings);

				HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uri);

				// Basic Authentication
				// https://segment.io/docs/tracking-api/reference/#authentication
				request.Headers["Authorization"] = BasicAuthHeader(batch.WriteKey, "");

				request.Timeout = (int)Timeout.TotalMilliseconds;
				request.ContentType = "application/json";
				request.Method = "POST";

				// do not use the expect 100-continue behavior
				request.ServicePoint.Expect100Continue = false;
				// buffer the data before sending, ok since we send all in one shot
				request.AllowWriteStreamBuffering = true;

                Logger.Info("Sending analytics request to Segment.io ..", new Dict
                {
                    { "batch id", batch.MessageId },
                    { "json size", json.Length },
                    { "batch size", batch.batch.Count }
                });

                watch.Start();

				using (var requestStream = request.GetRequestStream())
				{
					using (StreamWriter writer = new StreamWriter(requestStream))
					{
						writer.Write(json);
					}
				}

				using (var response = (HttpWebResponse)request.GetResponse())
				{
                    watch.Stop();

					if (response.StatusCode == HttpStatusCode.OK)
					{
                        Succeed(batch, watch.ElapsedMilliseconds);
					}
					else
					{
						string responseStr = String.Format("Status Code {0}. ", response.StatusCode);
						responseStr += ReadResponse(response);
                        Fail(batch, new APIException("Unexpected Status Code", responseStr), watch.ElapsedMilliseconds);
					}
				}
			}
			catch (WebException e) 
			{
                watch.Stop();
                Fail(batch, ParseException(e), watch.ElapsedMilliseconds);
			}
			catch (System.Exception e)
			{
                watch.Stop();
                Fail(batch, e, watch.ElapsedMilliseconds);
			}
		}