public object Upload()
        {
            HttpPostedFile file = HttpContext.Current.Request.Files["file"];

            if (file == null)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "No file specified."));
            }

            if (file.ContentType != "application/octet-stream" || !file.FileName.ToLower().EndsWith(".csv"))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "Specified file must be a CSV file."));
            }

            RedirectsProviderFile pfile = new RedirectsProviderFile(new HttpPostedFileWrapper(file));

            Dictionary <string, string> body = new Dictionary <string, string>();

            foreach (string key in HttpContext.Current.Request.Form.Keys)
            {
                body[key] = HttpContext.Current.Request.Form[key];
            }

            return(new RedirectsImportService().Import(pfile, CsvImportOptions.FromDictionary(body)));
        }
Example #2
0
        public object Import(RedirectsProviderFile file, IImportOptions options)
        {
            if (file == null)
            {
                throw new ArgumentNullException(nameof(file));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (!(options is CsvImportOptions))
            {
                throw new ArgumentException("Must be an instance of CsvImportOptions", nameof(options));
            }

            return(Import(file, (CsvImportOptions)options));
        }
 public object Import(RedirectsProviderFile file, CsvImportOptions options)
 {
     return(new CsvRedirectsProvider().Import(file, options));
 }
 public object Import(RedirectsProviderFile file, JObject options)
 {
     return(Import(file, CsvImportOptions.Parse(options)));
 }
 public object Import(RedirectsProviderFile file, Dictionary <string, string> options)
 {
     return(Import(file, CsvImportOptions.FromDictionary(options)));
 }
 public object Import(RedirectsProviderFile file)
 {
     return(Import(file, default(CsvImportOptions)));
 }
Example #7
0
        public object Import(RedirectsProviderFile file, CsvImportOptions options)
        {
            if (file == null)
            {
                throw new ArgumentNullException(nameof(file));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            // Determine the encoding
            Encoding encoding;

            switch (options.Encoding)
            {
            case CsvImportEncoding.Ascii:
                encoding = Encoding.ASCII;
                break;

            case CsvImportEncoding.Utf8:
                encoding = Encoding.UTF8;
                break;

            case CsvImportEncoding.Windows1252:
                encoding = Encoding.GetEncoding(1252);
                break;

            default:
                encoding = Encoding.GetEncoding(1252);
                //using (var reader = new StreamReader(file.InputStream, Encoding.Default, true)) {
                //    reader.Peek(); // you need this!
                //    encoding = reader.CurrentEncoding;
                //}
                break;
            }

            // Load the CSV file from the stream
            CsvFile csv;

            using (Stream stream = file.InputStream) {
                csv = CsvFile.Load(stream, encoding);
            }

            CsvInternalImportOptions io = new CsvInternalImportOptions(csv, options);

            // Determine the columns
            MapCsvColumns(io);

            // Parse the rows
            List <RedirectImportItem> redirects = ParseCsvRows(io);


            var service = new RedirectsImportService();


            foreach (var redirect in redirects)
            {
                service.Import(redirect, options);
            }

            return(redirects);
        }