Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        // 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);
        }
Esempio n. 4
0
        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");
        }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
 /// <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();
 }
Esempio n. 7
0
 /// <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);
 }
Esempio n. 9
0
        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"));
            }
        }
Esempio n. 10
0
 /// <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);
 }
Esempio n. 11
0
        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
                });
            }
        }
Esempio n. 12
0
 /// <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();
 }