public static void GetModGalleryImage(ModProfile profile, string imageFileName, ModGalleryImageSize size, Action <Texture2D> onSuccess, Action <WebRequestError> onError) { var cachedImageTexture = CacheClient.LoadModGalleryImage(profile.id, imageFileName, size); if (cachedImageTexture != null) { if (onSuccess != null) { onSuccess(cachedImageTexture); } } else { // - Fetch from Server - var download = DownloadClient.DownloadModGalleryImage(profile, imageFileName, size); download.succeeded += (d) => { CacheClient.SaveModGalleryImage(profile.id, imageFileName, size, d.imageTexture); }; download.succeeded += (d) => onSuccess(d.imageTexture); download.failed += (d) => onError(d.error); } }
// TODO(@jackson): Take ModMediaCollection instead of profile public static ImageRequest DownloadModGalleryImage(ModProfile profile, string imageFileName, ModGalleryImageSize size) { Debug.Assert(profile != null, "[mod.io] Profile parameter cannot be null"); Debug.Assert(!String.IsNullOrEmpty(imageFileName), "[mod.io] imageFileName parameter needs to be not null or empty (used as identifier for gallery images)"); ImageRequest request = null; if (profile.media == null) { Debug.LogWarning("[mod.io] The given mod profile has no media information"); } else { GalleryImageLocator locator = profile.media.GetGalleryImageWithFileName(imageFileName); if (locator == null) { Debug.LogWarning("[mod.io] Unable to find mod gallery image with the file name \'" + imageFileName + "\' for the mod profile \'" + profile.name + "\'[" + profile.id + "]"); } else { request = DownloadClient.DownloadModGalleryImage(locator, size); } } return(request); }