Esempio n. 1
0
        // [RequestKeyValidationActionFilter]
        public ActionResult Grab(GrabRequest request)
        {
            if (request != null && !string.IsNullOrWhiteSpace(request.Url) && !string.IsNullOrWhiteSpace(request.RequestKey))
            {
                var webRequest = WebRequest.Create(request.Url);

                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();

                var response = (HttpWebResponse)webRequest.GetResponse();

                {
                    //HttpClient client = new HttpClient();
                    //var response = await client.GetAsync(request.Url);
                    var statusCode = ((HttpWebResponse)response).StatusCode;
                    if (statusCode == HttpStatusCode.OK)
                    {
                        return HandleSuccessResponse(request, response);
                    }
                    else
                    {
                        return HandleFailureResponse(request, response);
                    }

                }
            }
            else
            {
                return View();
            }

            //var response = await request.GetResponseAsync();
        }
Esempio n. 2
0
        private ActionResult HandleBinaryContent(GrabRequest request, HttpWebResponse response)
        {
            if (string.IsNullOrWhiteSpace(request.ToEmail))
            {
                return new HttpWebResponseResult(response);
                //byte[] buffer = new byte[response.ContentLength];
                //var buff = response.GetResponseStream().Read(buffer, 0, buffer.Length);
                //Response.OutputStream.Write(buffer, 0, buffer.Length);
                var contentType = response.ContentType;
                //Response.AppendHeader("Content-Type", contentType);
                return new FileStreamResult(response.GetResponseStream(), contentType);

            }
            else
            {
                return HandleOtherResponse(request, response);
            }

            return new EmptyResult();
        }
Esempio n. 3
0
        private ActionResult ReturnFile(string filePath, GrabRequest request, HttpWebResponse response)
        {
            try
            {

                var message = new MailMessage();
                message.To.Add(request.ToEmail);

                message.Attachments.Add(new Attachment(filePath));
                message.Body = string.Format(CultureInfo.InvariantCulture, "Here is your content for the following parameters : {0}", this.HttpContext.Request.Url.Query);

                var client = new SmtpClient();

                client.EnableSsl = false;

                client.Send(message);

                return new ContentResult() { Content = "Successful operation" };
            }
            catch (Exception ex)
            {
                return new ContentResult() { Content = ex.Message };
                //throw;
            }

            //return File(filePath, "application/msword",string.Format(CultureInfo.InvariantCulture,"{0}.docx",DateTime.Now.ToString()));
        }
Esempio n. 4
0
        private ActionResult HandleSuccessResponse(GrabRequest request, HttpWebResponse response)
        {
            var contentTypeHeader = response.ContentType;
            string contentType = "text/html";
            Encoding encoding = null;
            if (contentTypeHeader != null)
            {
                contentType = contentTypeHeader.Split(';')[0];

                var match = Regex.Match(contentTypeHeader, @"(?<=charset\=).*");
                if (match.Success)
                    encoding = Encoding.GetEncoding(match.ToString());

                if (contentType.IndexOf("image") >= 0)
                {
                    contentType = "image";
                }
            }

            switch (contentType)
            {

                case "text/html":
                    return HandleHtmlContent(request, response);
                    break;
                case "image":
                    return HandleBinaryContent(request, response);

                default:
                    return HandleOtherResponse(request, response);
                    break;
            }

            //else
            //{
            //    HandleOtherResponse(request, response);
            //}
        }
Esempio n. 5
0
        private ActionResult HandleOtherResponse(GrabRequest request, HttpWebResponse response)
        {
            var filePath = GetFilePath();
            //Response.ClearContent();
            //Response.ClearHeaders();

            using (var fs = System.IO.File.OpenWrite(filePath))
            {
                byte[] buffer = new byte[response.ContentLength];
                //var buff = response.GetResponseStream().Read(buffer, 0, buffer.Length);
                var responseStrm = response.GetResponseStream();
                var buff = 0;
                while ((buff = responseStrm.ReadByte()) >= 0)
                {
                    fs.WriteByte(Convert.ToByte(buff));
                }

            }

            return ReturnFile(filePath, request, response);
        }
Esempio n. 6
0
 private ActionResult HandleHtmlContent(GrabRequest request, HttpWebResponse response)
 {
     return new HttpWebResponseResult(response);
 }
Esempio n. 7
0
 private ActionResult HandleFailureResponse(GrabRequest request, HttpWebResponse response)
 {
     return new EmptyResult();
 }