public void UploadCsv_ShouldConvertItAndAddMissingFields() { IFormFile file = Substitute.For <IFormFile>(); file.OpenReadStream() .Returns(new MemoryStream(Encoding.UTF8.GetBytes( "Title,Description,Website,ImageUrl,FileUrl\r\ntitle,description,website?id=42,image,file"))); var fetcher = Substitute.For <IRemoteFileFetcherGateway>(); fetcher.GetFileContent("file").Returns(new RemoteFileFetcherGatewayResponse()); _httpGatewayFactory.CreateRemoteFileFetcherGateway(null).Returns(fetcher); var featureCollection = new FeatureCollection(new Collection <IFeature> { new Feature(new Point(new Coordinate(11, 12)), new AttributesTable()) }); _dataContainerConverterService.Convert(Arg.Any <byte[]>(), Arg.Any <string>(), FlowFormats.GEOJSON) .Returns(featureCollection.ToBytes()); var resutls = _controller.UploadCsv(file, "\\?id=(.*)", "http://sourceImageUrl/1.png", "icon", "icon-color", Categories.ROUTE_HIKE).Result as FileStreamResult; Assert.IsNotNull(resutls); var memoryStream = new MemoryStream(); resutls.FileStream.CopyTo(memoryStream); var resutlsString = Encoding.UTF8.GetString(memoryStream.ToArray()); Assert.IsTrue(resutlsString.Contains("42")); Assert.IsTrue(resutlsString.Contains("11")); Assert.IsTrue(resutlsString.Contains("12")); Assert.IsTrue(resutlsString.Contains("icon")); Assert.IsTrue(resutlsString.Contains("icon-color")); Assert.IsTrue(resutlsString.Contains("http://sourceImageUrl/1.png")); Assert.IsTrue(resutlsString.Contains("Hiking")); }
public ImageCreationService(IHttpGatewayFactory httpGatewayFactory, ILogger logger) { _reoutePenIndex = 0; _remoteFileFetcherGateway = httpGatewayFactory.CreateRemoteFileFetcherGateway(null); _logger = logger; _outLinerPen = new Pen(Color.White, PEN_WIDTH + 8) { LineJoin = LineJoin.Bevel }; _routePenArray = new[] { new Pen(Color.Blue, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Red, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Orange, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Pink, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Green, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Purple, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Turquoise, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Yellow, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Brown, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Cyan, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.Gray, PEN_WIDTH) {LineJoin = LineJoin.Bevel}, new Pen(Color.FromArgb(255, 16, 16, 16), PEN_WIDTH) {LineJoin = LineJoin.Bevel} }; _circleFillBrush = Brushes.White; _startRoutePen = new Pen(Color.Green, 7); _endRoutePen = new Pen(Color.Red, 7); }
// GET api/files?url=http://jeeptrip.co.il/routes/pd6bccre.twl public async Task <DataContainer> GetRemoteFile(string url) { var fetcher = _httpGatewayFactory.CreateRemoteFileFetcherGateway(_cache.Get(User.Identity.Name)); var response = await fetcher.GetFileContent(url); var dataContainer = await ConvertToDataContainer(response.Content, response.FileName); return(dataContainer); }
public void TestInitialize() { InitializeSubstitues(); _httpGatewayFactory = Substitute.For <IHttpGatewayFactory>(); _fileProvider = Substitute.For <IFileProvider>(); _remoteFileFetcherGateway = Substitute.For <IRemoteFileFetcherGateway>(); _httpGatewayFactory.CreateRemoteFileFetcherGateway(null).Returns(_remoteFileFetcherGateway); _adapter = new CsvPointsOfInterestAdapter(_elevationDataStorage, _elasticSearchGateway, _dataContainerConverterService, _itmWgs84MathTransfromFactory, _fileProvider, _httpGatewayFactory, _options, Substitute.For <ILogger>()); _adapter.SetFileName("csv.csv"); }
private string SetupGpxUrl(gpxType gpx, List<LineString> addibleLines = null) { var url = "url"; var fetcher = Substitute.For<IRemoteFileFetcherGateway>(); var fileResponse = new RemoteFileFetcherGatewayResponse { FileName = url, Content = new byte[0] }; fetcher.GetFileContent(url).Returns(fileResponse); _dataContainerConverterService.Convert(Arg.Any<byte[]>(), Arg.Any<string>(), Arg.Any<string>()) .Returns(gpx.ToBytes()); _httpGatewayFactory.CreateRemoteFileFetcherGateway(Arg.Any<TokenAndSecret>()).Returns(fetcher); _addibleGpxLinesFinderService.GetLines(Arg.Any<List<ILineString>>()).Returns( addibleLines ?? new List <LineString> { new LineString(new[] {new Coordinate(0, 0), new Coordinate(1, 1)}) }.AsEnumerable() ); return url; }
/// <summary> /// Contstructor, creates relevant colors and brushes accoridng to configuration /// </summary> /// <param name="httpGatewayFactory"></param> /// <param name="options"></param> /// <param name="logger"></param> public ImageCreationService(IHttpGatewayFactory httpGatewayFactory, IOptions <ConfigurationData> options, ILogger logger) { _remoteFileFetcherGateway = httpGatewayFactory.CreateRemoteFileFetcherGateway(null); _logger = logger; _outLinerPen = new Pen(Color.White, PEN_WIDTH + 8) { LineJoin = LineJoin.Bevel }; _circleFillBrush = new SolidBrush(Color.White); _startRoutePen = new Pen(Color.Green, 7); _endRoutePen = new Pen(Color.Red, 7); _routeColors = options.Value.Colors.Select(c => FromColorString(c)).ToArray(); }
/// <summary> /// Contstructor, creates relevant colors and brushes accoridng to configuration /// </summary> /// <param name="httpGatewayFactory"></param> /// <param name="options"></param> /// <param name="logger"></param> public ImageCreationService(IHttpGatewayFactory httpGatewayFactory, IOptions <ConfigurationData> options, ILogger logger) { _remoteFileFetcherGateway = httpGatewayFactory.CreateRemoteFileFetcherGateway(null); _logger = logger; _outLinerPen = new Pen(Color.White, PEN_WIDTH + 8) { LineJoin = LineJoin.Bevel }; _circleFillBrush = Brushes.White.Clone() as Brush; _startRoutePen = new Pen(Color.Green, 7); _endRoutePen = new Pen(Color.Red, 7); _routeColors = options.Value.Colors.Select(v => ColorTranslator.FromHtml(v)).ToArray(); }
/// <inheritdoc /> public WikipediaPointsOfInterestAdapter(IElevationDataStorage elevationDataStorage, IElasticSearchGateway elasticSearchGateway, IDataContainerConverterService dataContainerConverterService, IWikipediaGateway wikipediaGateway, IHttpGatewayFactory httpGatewayFactory, IItmWgs84MathTransfromFactory itmWgs84MathTransfromFactory, ILogger logger) : base(elevationDataStorage, elasticSearchGateway, dataContainerConverterService) { _wikipediaGateway = wikipediaGateway; _logger = logger; _itmWgs84MathTransfromFactory = itmWgs84MathTransfromFactory; _remoteFileFetcherGateway = httpGatewayFactory.CreateRemoteFileFetcherGateway(null); }
public async Task <IActionResult> UploadCsv([FromForm] IFormFile file, [FromQuery] string idRegExPattern, [FromQuery] string sourceImageUrl, [FromQuery] string icon = "icon-bike", [FromQuery] string iconColor = "black", [FromQuery] string category = Categories.ROUTE_BIKE) { var reader = new StreamReader(file.OpenReadStream()); var csvReader = new CsvReader(reader); csvReader.Configuration.HeaderValidated = null; csvReader.Configuration.MissingFieldFound = null; var pointsOfInterest = csvReader.GetRecords <CsvPointOfInterestRow>().ToList(); var stream = new MemoryStream(); using (TextWriter writer = new StreamWriter(stream, Encoding.UTF8, 1024, true)) { var csvWriter = new CsvWriter(writer); csvWriter.Configuration.HasHeaderRecord = true; csvWriter.WriteHeader <CsvPointOfInterestRow>(); csvWriter.NextRecord(); var fetcher = _httpGatewayFactory.CreateRemoteFileFetcherGateway(null); foreach (var csvRow in pointsOfInterest) { if (!string.IsNullOrWhiteSpace(csvRow.FileUrl)) { var response = await fetcher.GetFileContent(csvRow.FileUrl); var geojsonBytes = await _dataContainerConverterService.Convert(response.Content, response.FileName, FlowFormats.GEOJSON); var geoJson = geojsonBytes.ToFeatureCollection(); var coordinate = geoJson.Features.First().Geometry.Coordinate; csvRow.Latitude = coordinate.Y; csvRow.Longitude = coordinate.X; } csvRow.SourceImageUrl = sourceImageUrl; csvRow.Website = csvRow.Website; csvRow.Icon = icon; csvRow.IconColor = iconColor; csvRow.Category = category; csvRow.Id = Regex.Match(csvRow.Website, idRegExPattern).Groups[1].Value; csvWriter.WriteRecord(csvRow); csvWriter.NextRecord(); } csvWriter.Flush(); writer.Flush(); stream.Seek(0, SeekOrigin.Begin); return(File(stream, "text/csv")); } }
/// <summary> /// Constructor, make sure to use <see cref="SetFileName"/> after constructing this /// </summary> /// <param name="elevationDataStorage"></param> /// <param name="elasticSearchGateway"></param> /// <param name="dataContainerConverterService"></param> /// <param name="itmWgs84MathTransfromFactory"></param> /// <param name="fileProvider"></param> /// <param name="httpGatewayFactory"></param> /// <param name="options"></param> /// <param name="logger"></param> public CsvPointsOfInterestAdapter( IElevationDataStorage elevationDataStorage, IElasticSearchGateway elasticSearchGateway, IDataContainerConverterService dataContainerConverterService, IItmWgs84MathTransfromFactory itmWgs84MathTransfromFactory, IFileProvider fileProvider, IHttpGatewayFactory httpGatewayFactory, IOptions <ConfigurationData> options, ILogger logger ) : base(elevationDataStorage, elasticSearchGateway, dataContainerConverterService, itmWgs84MathTransfromFactory, options, logger) { _fileProvider = fileProvider; _remoteFileFetcherGateway = httpGatewayFactory.CreateRemoteFileFetcherGateway(null); }
private async Task <RemoteFileFetcherGatewayResponse> GetFile(string url, IFormFile file) { if (string.IsNullOrEmpty(url) == false) { var fetcher = _httpGatewayFactory.CreateRemoteFileFetcherGateway(_cache.Get(User.Identity.Name)); return(await fetcher.GetFileContent(url)); } if (file == null) { return(null); } using (var memoryStream = new MemoryStream()) { await file.CopyToAsync(memoryStream); return(new RemoteFileFetcherGatewayResponse { Content = memoryStream.ToArray(), FileName = file.FileName }); } }
/// <summary> /// Contstructor, creates relevant colors and brushes accoridng to configuration /// </summary> /// <param name="httpGatewayFactory"></param> /// <param name="options"></param> /// <param name="logger"></param> public ImageCreationService(IHttpGatewayFactory httpGatewayFactory, IOptions <ConfigurationData> options, ILogger logger) { _remoteFileFetcherGateway = httpGatewayFactory.CreateRemoteFileFetcherGateway(null); _logger = logger; _routeColors = options.Value.Colors.Select(c => FromColorString(c)).ToArray(); }