private dynamic ExecuteAction(BaseMethodRequest request) { var webRequest = WebRequest.Create(string.Format("{0}/bot{1}/{2}", ApiUrl, ApiToken, request.MethodName)); webRequest.Method = "POST"; var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo); webRequest.ContentType = "multipart/form-data; boundary=" + boundary; boundary = "--" + boundary; using (var requestStream = webRequest.GetRequestStream()) { var options = request.Parse(); // Write the values foreach (var parameter in options.Parameters) { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"{1}{1}", parameter.Key, Environment.NewLine)); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes(parameter.Value + Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); } // Write the files foreach (var file in options.Files) { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes( string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"{2}", file.Key, file.FileName, Environment.NewLine)); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Type: {0}{1}{1}", file.ContentType, Environment.NewLine)); requestStream.Write(buffer, 0, buffer.Length); new MemoryStream(file.File).CopyTo(requestStream); buffer = Encoding.ASCII.GetBytes(Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); } var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--"); requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length); } try { return DecodeWebResponse(webRequest.GetResponse()); } catch (WebException e) { return DecodeWebResponse(e.Response); } }
dynamic ExecuteAction(BaseMethodRequest request) { var webRequest = WebRequest.Create($"{ApiUrl}/bot{ApiToken}/{request.MethodName}"); var updatesRequest = request as GetUpdatesRequest; if (updatesRequest?.Timeout != null) { const int milliSecondsInSecond = 1000; webRequest.Timeout += updatesRequest.Timeout.Value * milliSecondsInSecond; } webRequest.Method = "POST"; var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo); webRequest.ContentType = "multipart/form-data; boundary=" + boundary; boundary = "--" + boundary; using (var requestStream = webRequest.GetRequestStream()) { var options = request.Parse(); // Write the values foreach (var parameter in options.Parameters) { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes($"Content-Disposition: form-data; name=\"{parameter.Key}\"{Environment.NewLine}{Environment.NewLine}"); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes(parameter.Value + Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); } // Write the files foreach (var file in options.Files) { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes($"Content-Disposition: form-data; name=\"{file.Key}\"; filename=\"{file.FileName}\"{Environment.NewLine}"); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes($"Content-Type: {file.ContentType}{Environment.NewLine}{Environment.NewLine}"); requestStream.Write(buffer, 0, buffer.Length); new MemoryStream(file.File).CopyTo(requestStream); buffer = Encoding.ASCII.GetBytes(Environment.NewLine); requestStream.Write(buffer, 0, buffer.Length); } var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--"); requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length); } try { return DecodeWebResponse(webRequest.GetResponse()); } catch (WebException e) { return DecodeWebResponse(e.Response); } }
private dynamic ExecuteAction(BaseMethodRequest request) { const string httpNewLine = "\r\n"; var webRequest = WebRequest.Create($"{ApiUrl}/bot{ApiToken}/{request.MethodName}"); // If the request is a GetUpdatesRequest, the timeout property can be set for long polling. // Set the timeout property of the WebRequest to the same time, so the WebRequest won't // timeout before the API does. This way other requests will still timeout on time. var updatesRequest = request as GetUpdatesRequest; if (updatesRequest?.Timeout != null) { const int milliSecondsInSecond = 1000; webRequest.Timeout += updatesRequest.Timeout.Value * milliSecondsInSecond; } webRequest.Method = "POST"; var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo); webRequest.ContentType = "multipart/form-data; boundary=" + boundary; boundary = "--" + boundary; using (var requestStream = webRequest.GetRequestStream()) { var options = request.Parse(); // Write the values foreach (var parameter in options.Parameters) { var buffer = Encoding.ASCII.GetBytes(boundary + httpNewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes($"Content-Disposition: form-data; name=\"{parameter.Key}\"{httpNewLine}{httpNewLine}"); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes(parameter.Value + httpNewLine); requestStream.Write(buffer, 0, buffer.Length); } // Write the files foreach (var file in options.Files) { var buffer = Encoding.ASCII.GetBytes(boundary + httpNewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes($"Content-Disposition: form-data; name=\"{file.Key}\"; filename=\"{file.FileName}\"{httpNewLine}"); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes($"Content-Type: {file.ContentType}{httpNewLine}{httpNewLine}"); requestStream.Write(buffer, 0, buffer.Length); new MemoryStream(file.File).CopyTo(requestStream); buffer = Encoding.ASCII.GetBytes(httpNewLine); requestStream.Write(buffer, 0, buffer.Length); } var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--"); requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length); } try { return(DecodeWebResponse(webRequest.GetResponse())); } catch (WebException e) { return(DecodeWebResponse(e.Response)); } }
private dynamic ExecuteAction(BaseMethodRequest request) { const string httpNewLine = "\r\n"; var webRequest = WebRequest.Create($"{ApiUrl}/bot{ApiToken}/{request.MethodName}"); // If the request is a GetUpdatesRequest, the timeout property can be set for long polling. // Set the timeout property of the WebRequest to the same time, so the WebRequest won't // timeout before the API does. This way other requests will still timeout on time. var updatesRequest = request as GetUpdatesRequest; if (updatesRequest?.Timeout != null) { const int milliSecondsInSecond = 1000; webRequest.Timeout += updatesRequest.Timeout.Value * milliSecondsInSecond; } webRequest.Method = "POST"; var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo); webRequest.ContentType = "multipart/form-data; boundary=" + boundary; boundary = "--" + boundary; using (var requestStream = webRequest.GetRequestStream()) { var options = request.Parse(); // Write the values foreach (var parameter in options.Parameters) { var buffer = Encoding.ASCII.GetBytes(boundary + httpNewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes($"Content-Disposition: form-data; name=\"{parameter.Key}\"{httpNewLine}{httpNewLine}"); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes(parameter.Value + httpNewLine); requestStream.Write(buffer, 0, buffer.Length); } // Write the files foreach (var file in options.Files) { var buffer = Encoding.ASCII.GetBytes(boundary + httpNewLine); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes($"Content-Disposition: form-data; name=\"{file.Key}\"; filename=\"{file.FileName}\"{httpNewLine}"); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes($"Content-Type: {file.ContentType}{httpNewLine}{httpNewLine}"); requestStream.Write(buffer, 0, buffer.Length); new MemoryStream(file.File).CopyTo(requestStream); buffer = Encoding.ASCII.GetBytes(httpNewLine); requestStream.Write(buffer, 0, buffer.Length); } var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--"); requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length); } try { return DecodeWebResponse(webRequest.GetResponse()); } catch (WebException e) { return DecodeWebResponse(e.Response); } }