Пример #1
0
 public static void Execute(
     out HttpStatusCode hsc,
     out string status,
     out string url,
     string awsAccessKey,
     string awsSecretKey,
     Amazon.RegionEndpoint re,
     string bucketName,
     byte[] ba,
     string key,
     S3CannedACL acl,
     string contentType = null
     )
 {
     hsc    = HttpStatusCode.BadRequest;
     status = "";
     url    = "";
     try {
         using (var ms = new MemoryStream(ba)) {
             var uploadMultipartRequest = new TransferUtilityUploadRequest {
                 BucketName  = bucketName,
                 Key         = key,
                 CannedACL   = acl,
                 InputStream = ms,
                 //PartSize = 123?
             };
             if (!string.IsNullOrWhiteSpace(contentType))
             {
                 uploadMultipartRequest.ContentType = contentType;
             }
             using (var tu = new TransferUtility(awsAccessKey, awsSecretKey, re)) {
                 tu.Upload(uploadMultipartRequest);
             }
             //why encoding?
             url = HttpUtility.UrlDecode(Constants.S3_BASE + bucketName + "/" + HttpUtility.UrlEncode(key));
             hsc = HttpStatusCode.OK;
             return;
         }
     } catch (Exception ex) {
         LogIt.E(ex);
         hsc    = HttpStatusCode.InternalServerError;
         status = "unexecpected error";
         return;
     } finally {
         LogIt.I(JsonConvert.SerializeObject(
                     new {
             hsc,
             status,
             url,
             //ipAddress = GetPublicIpAddress.Execute(hc),
             //executedBy = GetExecutingUsername.Execute()
         }, Formatting.Indented));
     }
 }
Пример #2
0
        public static void Execute(
            string numberE164,
            out HttpStatusCode hsc,
            out string status
            )
        {
            hsc    = HttpStatusCode.BadRequest;
            status = "";

            try {
                if (string.IsNullOrWhiteSpace(numberE164))
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "number not found";
                    return;
                }

                if (numberE164[0] != '+')
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "e164 format number should start with +";
                    return;
                }

                var pnu = PhoneNumberUtil.GetInstance();
                var pn  = pnu.Parse(numberE164, null);
                if (!pnu.IsValidNumber(pn))
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "number is not valid";
                    return;
                }

                hsc = HttpStatusCode.OK;
                return;
            } catch (Exception ex) {
                hsc = HttpStatusCode.InternalServerError;
                //status = "unexpected error"; //maybe pass the ex.message here
                status = ex.Message;
                LogIt.E(ex);
            } finally {
                LogIt.I(JsonConvert.SerializeObject(new {
                    hsc,
                    status,
                    numberE164
                }));
            }
        }
Пример #3
0
        public static void Execute(
            out HttpStatusCode hsc,
            out string status,
            out string url,
            string awsAccessKey,
            string awsSecretKey,
            string bucketName,
            string key,
            Amazon.RegionEndpoint re,
            HttpContext hc      = null,
            int numberOfMinutes = 30
            )
        {
            url    = "";
            hsc    = HttpStatusCode.BadRequest;
            status = "";

            try {
                using (var s3Client = new AmazonS3Client(awsAccessKey, awsSecretKey, re)) {
                    var gpsur = new GetPreSignedUrlRequest {
                        BucketName = bucketName,
                        Key        = key,
                        Expires    = DateTime.UtcNow.AddMinutes(numberOfMinutes)
                    };
                    url = s3Client.GetPreSignedURL(gpsur);
                }
                hsc = HttpStatusCode.OK;
                return;
            } catch (Exception ex) {
                LogIt.E(ex);
                hsc    = HttpStatusCode.InternalServerError;
                status = "unexecpected error";
                return;
            } finally {
                LogIt.I(JsonConvert.SerializeObject(
                            new {
                    hsc,
                    status,
                    bucketName,
                    key,
                    url,
                    numberOfMinutes,
                    ipAddress  = GetPublicIpAddress.Execute(hc),
                    executedBy = GetExecutingUsername.Execute()
                }, Formatting.Indented));
            }
        }
Пример #4
0
 public static void Execute(
     request m,
     out HttpStatusCode hsc,
     out string status,
     string awsAccessKey,
     string awsSecretKey,
     out byte[] ba
     )
 {
     ba     = null;
     hsc    = HttpStatusCode.BadRequest;
     status = "";
     try {
         using (var s3c = new AmazonS3Client(awsAccessKey, awsSecretKey, m.re)) {
             var request = new Amazon.S3.Model.GetObjectRequest {
                 BucketName = m.bucketName,
                 Key        = m.key,
             };
             var response = s3c.GetObjectAsync(request).Result;
             using (var rs = response.ResponseStream) {
                 using (var ms = new MemoryStream()) {
                     rs.CopyTo(ms);
                     ba = ms.ToArray();
                 }
             }
         }
         hsc = HttpStatusCode.OK;
         return;
     } catch (Exception ex) {
         LogIt.E(ex);
         hsc    = HttpStatusCode.InternalServerError;
         status = "unexecpected error";
         return;
     } finally {
         LogIt.I(JsonConvert.SerializeObject(
                     new {
             hsc,
             status,
             m,
             //ipAddress = GetPublicIpAddress.Execute(hc),
             //executedBy = GetExecutingUsername.Execute()
         }, Formatting.Indented));
     }
 }
Пример #5
0
 public static void Execute(
     request m,
     out HttpStatusCode hsc,
     out string status,
     string awsAccessKey,
     string awsSecretKey
     )
 {
     hsc    = HttpStatusCode.BadRequest;
     status = "";
     try {
         using (var s3c = new AmazonS3Client(awsAccessKey, awsSecretKey, m.re)) {
             var request = new Amazon.S3.Model.DeleteObjectRequest {
                 BucketName = m.bucketName,
                 Key        = m.key,
             };
             var dor = s3c.DeleteObjectAsync(request).Result;
             hsc = dor.HttpStatusCode == System.Net.HttpStatusCode.NoContent
     ? HttpStatusCode.OK
     : HttpStatusCode.BadRequest
             ;
         }
         return;
     } catch (Exception ex) {
         LogIt.E(ex);
         hsc    = HttpStatusCode.InternalServerError;
         status = "unexecpected error";
         return;
     } finally {
         LogIt.I(JsonConvert.SerializeObject(
                     new {
             hsc,
             status,
             m,
             //ipAddress = GetPublicIpAddress.Execute(hc),
             //executedBy = GetExecutingUsername.Execute()
         }, Formatting.Indented));
     }
 }
Пример #6
0
 /// <summary>
 /// Cannot use async from MVC, only from svc
 /// </summary>
 public static void Execute(
     out HttpStatusCode hsc,
     out string status,
     MailMessage mm,
     string username,
     string password,
     string host,
     int port,
     int max_retries = 3,
     bool sendAsync  = false
     )
 {
     hsc    = HttpStatusCode.BadRequest;
     status = "";
     try {
         using (var sc = new SmtpClient()) {
             sc.Host        = host;
             sc.Port        = port;
             sc.EnableSsl   = true;
             sc.Credentials = new NetworkCredential(username, password);
             for (int i = 0; i < max_retries; i++)
             {
                 try {
                     sc.SendCompleted += new SendCompletedEventHandler(SendCompleted);
                     if (sendAsync)
                     {
                         var state = new object { };
                         sc.SendAsync(mm, state);
                     }
                     else
                     {
                         sc.Send(mm);
                         //log as sent?
                     }
                     hsc = HttpStatusCode.OK;
                     return;
                 } catch (Exception ex1) {
                     LogIt.W("attempt:" + i.ToString() + "|" + GetJsonString.Execute(mm));
                     LogIt.E(ex1);
                 }
             }
         }
     } catch (Exception ex) {
         LogIt.E(ex);
         hsc    = HttpStatusCode.InternalServerError;
         status = "unexpected error";
         return;
     } finally {
         try {
             LogIt.I(JsonConvert.SerializeObject(new {
                 hsc,
                 status,
                 from    = mm == null? null : new { mm.From.Address, mm.From.DisplayName },
                 to      = mm == null ? null : mm.To.Select(x => new { x.Address, x.DisplayName }).ToList(),
                 replyTo = mm == null ? null : mm.ReplyToList.Select(x => new { x.Address, x.DisplayName }).ToList(),
                 subject = mm == null ? null : mm.Subject,
             }, Formatting.Indented));
         } catch (Exception ex1) {
             LogIt.E(ex1);
         }
     }
 }
Пример #7
0
        public static void Execute(
            out HttpStatusCode hsc,
            out string status,
            out response r,
            request m,
            CancellationToken?ct = null,
            WebProxy wp          = null
            )
        {
            r      = new response {
            };
            hsc    = HttpStatusCode.BadRequest;
            status = "";

            try {
                if (ct.HasValue && ct.Value.IsCancellationRequested)
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "cancellation requested";
                    return;
                }

                var resource = $"/word?number={@m.total}";

                var client  = new RestClient("https://random-word-api.herokuapp.com/");
                var request = new RestRequest(
                    resource: resource,
                    method: Method.GET
                    );
                if (wp != null)
                {
                    client.Proxy = wp;
                }
                var response = client.Execute(request);

                if (response.ErrorException != null)
                {
                    status = $"response had error exception: {response.ErrorException.Message}";
                    hsc    = HttpStatusCode.BadRequest;
                    return;
                }
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    status = $"StatusCode was {response.StatusCode}";
                    hsc    = HttpStatusCode.BadRequest;
                    return;
                }
                if (string.IsNullOrWhiteSpace(response.Content))
                {
                    status = $"content was empty";
                    hsc    = HttpStatusCode.BadRequest;
                    return;
                }
                //["dorks","rosebud"]
                var     content = response.Content;
                dynamic json    = JsonConvert.DeserializeObject(content);

                if ((json == null) || json.Count == 0)
                {
                    status = $"there are no words";
                    hsc    = HttpStatusCode.BadRequest;
                    return;
                }
                foreach (var w in json)
                {
                    r.words.Add(w.Value);
                }

                hsc = HttpStatusCode.OK;
                return;
            } catch (Exception ex) {
                if (ct.HasValue && ct.Value.IsCancellationRequested)
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "task cancelled";
                    return;
                }

                status = $"unexpected error";
                hsc    = HttpStatusCode.InternalServerError;
                LogIt.E(ex);
            } finally {
                LogIt.I(JsonConvert.SerializeObject(new {
                    hsc,
                    status,
                    r,
                }, Formatting.Indented));
            }
        }
Пример #8
0
        public static void Execute(
            out HttpStatusCode hsc,
            out string status,
            out response r,
            request m,
            CancellationToken?ct = null
            )
        {
            hsc    = HttpStatusCode.BadRequest;
            status = "";
            r      = new response {
            };
            try {
                if (m == null)
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "params were null";
                    return;
                }
                if ((m.lat == 0) && (m.lng == 0))
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = "lat and long ZERO";
                    return;
                }
                var resource = "maps/api/geocode/json?latlng=" + m.lat.ToString() + "," + m.lng.ToString() + "&key=" + m.apiKey;
                var client   = new RestClient("https://maps.googleapis.com/");
                var request  = new RestRequest(resource, Method.GET);
                request.RequestFormat = DataFormat.Json;
                var response = client.Execute(request);
                if (response.ErrorException != null)
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = response.ErrorException.Message;
                    return;
                }
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = $"status was {response.StatusCode.ToString()}";
                    return;
                }
                var     content   = response.Content;
                dynamic json      = JObject.Parse(content);
                var     apiStatus = json.status.Value;
                if (apiStatus != "OK")
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = $"api status result was {apiStatus}";
                    return;
                }
                if (json.results.Count == 0)
                {
                    hsc    = HttpStatusCode.BadRequest;
                    status = $"results count was ZERO";
                    return;
                }
                r.address = json.results[0].formatted_address.Value;

                hsc = HttpStatusCode.OK;
                return;
            } catch (Exception ex) {
                LogIt.E(ex);
                hsc    = HttpStatusCode.InternalServerError;
                status = "unexecpected error";
                return;
            } finally {
                m.apiKey = "DO_NOT_LOG";
                LogIt.I(JsonConvert.SerializeObject(
                            new {
                    hsc,
                    status,
                    m,
                    //ipAddress = GetPublicIpAddress.Execute(hc),
                    //executedBy = GetExecutingUsername.Execute()
                }, Formatting.Indented));
            }
        }
Пример #9
0
        public static void Execute(
            request m,
            out HttpStatusCode hsc,
            out string status,
            string awsAccessKey,
            string awsSecretKey,
            Microsoft.AspNetCore.Http.HttpContext hc = null, CancellationToken?ct = null
            )
        {
            hsc    = HttpStatusCode.BadRequest;
            status = "";
            try {
                if (!Exists.Execute(
                        key: m.sourceKey,
                        bucketName: m.sourceBucketName,
                        url: out string sourceUrl,
                        re: m.re,
                        awsAccessKey: awsAccessKey,
                        awsSecretKey: awsSecretKey
                        ))
                {
                    status = "source did not exist";
                    hsc    = HttpStatusCode.BadRequest;
                    return;
                }

                //validate dest doesn't already exist, fail if it does bc we aren't validating that it is different? maybe shar eeach in future?

                if (Exists.Execute(
                        key: m.destKey,
                        bucketName: m.destBucketName,
                        url: out string destUrl,
                        re: m.re,
                        awsAccessKey: awsAccessKey,
                        awsSecretKey: awsSecretKey
                        ))
                {
                    status = "dest existed already";
                    hsc    = HttpStatusCode.BadRequest;
                    return;
                }

                //copy
                using (var s3c = new AmazonS3Client(
                           awsAccessKeyId: awsAccessKey,
                           awsSecretAccessKey: awsSecretKey,
                           region: m.re
                           )) {
                    var request = new CopyObjectRequest {
                        SourceBucket      = m.sourceBucketName,
                        SourceKey         = m.sourceKey,
                        DestinationBucket = m.destBucketName,
                        DestinationKey    = m.destKey,
                        CannedACL         = m.destAcl
                    };
                    if (!string.IsNullOrWhiteSpace(m.contentType))
                    {
                        request.MetadataDirective = S3MetadataDirective.REPLACE;
                        request.ContentType       = m.contentType;
                    }
                    var response = s3c.CopyObjectAsync(request, cancellationToken: ct.HasValue ? ct.Value : CancellationToken.None).Result;
                    hsc = response.HttpStatusCode;
                    return;
                    //fileLengthBytes = cor.
                }
            } catch (Exception ex) {
                LogIt.E(ex);
                hsc    = HttpStatusCode.InternalServerError;
                status = "unexecpected error";
                return;
            } finally {
                LogIt.I(JsonConvert.SerializeObject(
                            new {
                    hsc,
                    status,
                    m,
                    //ipAddress = GetPublicIpAddress.Execute(hc),
                    //executedBy = GetExecutingUsername.Execute()
                }, Formatting.Indented));
            }
        }