// TO UPLOAD STREAM TO AWS public string UploadStream(S3Request model) { //- Build Put Object PutObjectRequest s3PutRequest = new PutObjectRequest { BucketName = S3Bucket, CannedACL = Amazon.S3.S3CannedACL.PublicRead, Key = model.NewFileName }; try { using (model.FileStream) { s3PutRequest.InputStream = model.FileStream; PutObjectResponse s3PutResponse = this.S3Client.PutObject(s3PutRequest); } } catch (Exception ex) { throw ex; } string url = ServiceUrl + "/" + S3Bucket + "/" + model.NewFileName; return(url); }
private static void service_BeforeAuthorize(object sender, S3RequestArgs e) { S3Request req = e.Request; req.ServicePoint.Expect100Continue = false; req.ReadWriteTimeout = 500; req.KeepAlive = false; }
internal static S3RequestEventArgs Create(S3Request request, AmazonS3Config config) { S3RequestEventArgs args = new S3RequestEventArgs { OriginalRequest = request, Headers = request.Headers, ServiceURL = config.ServiceURL }; return(args); }
public static void UpdateHeaders(this S3Request request, IReadOnlyDictionary <string, string> headers) { if (headers is null) { return; } foreach (var item in headers) { switch (item.Key) { case "Content-Encoding": request.Content.Headers.ContentEncoding.Add(item.Value); break; case "Content-Type": request.Content ??= new ByteArrayContent(Array.Empty <byte>()); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(item.Value); break; // Skip list... case "Accept-Ranges": case "Content-Length": case "Date": case "ETag": case "Server": case "Last-Modified": case "x-amz-id-2": case "x-amz-expiration": case "x-amz-request-id2": case "x-amz-request-id": break; default: request.Headers.Add(item.Key, item.Value); break; } } }
// FOR CONTRACTS public string GenerateContractDocument(ContractInsertRequest model) { Document document = CreateContractDocument(model); document.UseCmykColor = true; const bool unicode = false; const PdfFontEmbedding embedding = PdfFontEmbedding.Always; DocumentRenderer renderer = new DocumentRenderer(document); PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(unicode, embedding); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); MemoryStream stream = new MemoryStream(); pdfRenderer.PdfDocument.Save(stream, false); S3Request s3Request = new S3Request(); s3Request.NewFileName = Guid.NewGuid().ToString() + ".pdf"; s3Request.FileStream = stream; S3Handler s3Handler = new S3Handler(); string filename = s3Handler.UploadStream(s3Request); return(filename); //byte[] bytes = stream.ToArray(); //return bytes; }
public string UploadFile(S3Request model) { //- Build Put Object var s3PutRequest = new Amazon.S3.Model.PutObjectRequest { FilePath = model.FilePath, BucketName = S3Bucket, CannedACL = Amazon.S3.S3CannedACL.PublicRead }; if (!string.IsNullOrWhiteSpace(model.NewFileName)) { s3PutRequest.Key = model.NewFileName; } try { Amazon.S3.Model.PutObjectResponse s3PutResponse = this.S3Client.PutObject(s3PutRequest); if (model.DeleteLocalFileOnSuccess) { if (System.IO.File.Exists(model.FilePath)) { System.IO.File.Delete(model.FilePath); } } } catch (Exception ex) { throw ex; } string url = ServiceUrl + "/" + S3Bucket + "/" + model.NewFileName; return(url); }
NameValueCollection GetHeaders(S3Request request) { var propertyInfo = typeof(S3Request).GetProperty("Headers", BindingFlags.NonPublic | BindingFlags.Instance); return((NameValueCollection)propertyInfo.GetValue(request, null)); }
/// <summary> /// Configures an HttpWebRequest with settings from the /// ThreeSharpConfig instance and the Request object instance /// </summary> private HttpWebRequest ConfigureWebRequest(Request request) { HttpWebRequest httpWebRequest = null; if (request.ServiceType == ThreeSharpServiceType.S3) { S3Request s3Request = (S3Request)request; StringBuilder url = new StringBuilder(); String finalUrl = string.Empty; if (!String.IsNullOrEmpty(s3Request.RedirectUrl)) { url.Append(s3Request.RedirectUrl); } else { if (s3Request.QueryList.ContainsKey("requestPayment")) { config.Format = CallingFormat.SUBDOMAIN; } url.Append(config.IsSecure ? "https://" : "http://"); url.Append(ThreeSharpUtils.BuildUrlBase(config.Server, config.Port, s3Request.BucketName, config.Format)); if (!String.IsNullOrEmpty(s3Request.Key)) { url.Append(s3Request.Key); } // build the query string parameter url.Append(ThreeSharpUtils.ConvertQueryListToQueryString(s3Request.QueryList)); } httpWebRequest = WebRequest.Create(url.ToString()) as HttpWebRequest; httpWebRequest.AllowWriteStreamBuffering = false; httpWebRequest.AllowAutoRedirect = false; httpWebRequest.UserAgent = config.UserAgent; httpWebRequest.Method = s3Request.Method; httpWebRequest.Timeout = s3Request.Timeout; httpWebRequest.ContentType = s3Request.ContentType; httpWebRequest.ContentLength = s3Request.BytesTotal; if (this.config.Proxy != null) { httpWebRequest.Proxy = this.config.Proxy; } this.AddHeaders(httpWebRequest, s3Request.Headers); this.AddMetadataHeaders(httpWebRequest, s3Request.MetaData); this.AddAuthorizationHeader(httpWebRequest, s3Request); } else { AWS100Request aws100Request = (AWS100Request)request; StringBuilder url = new StringBuilder(); url.Append("https://"); url.Append(config.Server); url.Append(":"); url.Append("443"); url.Append("/2008-06-30/distribution/"); if (!string.IsNullOrEmpty(aws100Request.DistributionID)) { url.Append(aws100Request.DistributionID); if (aws100Request.GetType() == typeof(DistributionUpdateRequest)) { url.Append("/config"); } } httpWebRequest = WebRequest.Create(url.ToString()) as HttpWebRequest; httpWebRequest.KeepAlive = true; httpWebRequest.AllowWriteStreamBuffering = false; httpWebRequest.AllowAutoRedirect = false; httpWebRequest.UserAgent = config.UserAgent; httpWebRequest.Method = aws100Request.Method; httpWebRequest.Timeout = aws100Request.Timeout; httpWebRequest.ContentType = aws100Request.ContentType; httpWebRequest.ContentLength = aws100Request.BytesTotal; if (this.config.Proxy != null) { httpWebRequest.Proxy = this.config.Proxy; } this.AddHeaders(httpWebRequest, aws100Request.Headers); this.AddMetadataHeaders(httpWebRequest, aws100Request.MetaData); this.AddAuthorizationHeader(httpWebRequest, aws100Request); } return(httpWebRequest); }