Exemplo n.º 1
0
        private async Task <bool> PrepareAndReadInputFile()
        {
            switch (_userSession.InputSource)
            {
            case InputSource.LocalFile:
                ViewModel.InputFileName = _userSession.InputUri;
                return(true);

            case InputSource.GoogleMyMapsUrl:
                var errorMessage = "Cannot download KML file for provided URL. Make sure the map is shared publicly.";
                var uri          = _googleMyMapAdapter.GetKmlDownloadUrl(new Uri(_userSession.InputUri));
                if (uri == null)
                {
                    await _dialog.InvalidOperationMessage(errorMessage);

                    return(false);
                }
                try
                {
                    var inputData = await _webClient.GetAsync(uri);

                    ViewModel.InputFileName = $"{Path.GetTempPath()}{_resourceName.GetTempFolderPrefix()}{Guid.NewGuid()}.kmz";
                    await _file.WriteBytesAsync(ViewModel.InputFileName, inputData);

                    _tempFilesCreated.Add(ViewModel.InputFileName);
                    return(true);
                }
                catch (Exception)
                {
                    await _dialog.InvalidOperationMessage(errorMessage);
                }
                break;

            default:
                throw new NotSupportedException($"Input source type is invalid: {_userSession.InputSource}");
            }

            return(false);
        }