AerialForWindows.Services.AssetClient.GetAssetsAsync C# (CSharp) Method

GetAssetsAsync() public method

public GetAssetsAsync ( ) : Task
return Task
        public async Task<Asset[]> GetAssetsAsync() {
            if (_assets == null) {
                try {
                    var webClient = new WebClient();
                    var content = await webClient.DownloadStringTaskAsync(MovieViewUrl);
                    var assetGroups = JsonConvert.DeserializeObject<AssetGroup[]>(content);
                    _assets = assetGroups.SelectMany(group => @group.Assets).ToArray();
                } catch {
                    _assets = new Asset[0];
                }
            }
            return _assets;
        }
    }

Usage Example

示例#1
0
        private async Task InitMoviesAsync()
        {
            if (File.Exists(MoviesPath))
            {
                try {
                    string fileData;
                    using (var reader = File.OpenText(MoviesPath)) {
                        fileData = await reader.ReadToEndAsync();
                    }
                    JsonConvert.PopulateObject(fileData, _movies);
                    _logger.Debug("Movies loaded");
                }
                catch (Exception ex) {
                    _logger.Error(ex, "Loading movies failed");
                }
            }

            var assetClient = new AssetClient();
            var assets      = await assetClient.GetAssetsAsync();

            var changed = false;

            foreach (var asset in assets)
            {
                if (_movies.All(a => a.AssetId != asset.Id))
                {
                    var movie = new Movie {
                        AssetId     = asset.Id,
                        DownloadUrl = asset.Url,
                        Location    = asset.AccessibilityLabel,
                        TimeOfDay   = asset.TimeOfDay
                    };
                    _movies.Add(movie);
                    changed = true;
                }
            }

            if (Settings.Instance.ShouldCacheMovies)
            {
                foreach (var movie in _movies.Where(m => string.IsNullOrEmpty(m.LocalPath)))
                {
                    var localPath = GetLocalPathForMovie(movie);
                    if (File.Exists(localPath))
                    {
                        movie.LocalPath = localPath;
                        changed         = true;
                    }
                }

                changed |= DownloadMovies();
            }

            if (changed)
            {
                Save();
            }
        }
All Usage Examples Of AerialForWindows.Services.AssetClient::GetAssetsAsync
AssetClient