< Summary

Class:DCLServices.CameraReelService.CameraReelResponses
Assembly:CameraReelNetworkService
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/CameraReelService/CameraReelWebRequestClient.cs
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:158
Line coverage:0% (0 of 1)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:1
Method coverage:0% (0 of 1)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CameraReelResponses()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/CameraReelService/CameraReelWebRequestClient.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL;
 3using DCL.Helpers;
 4using DCLServices.EnvironmentProvider;
 5using System;
 6using System.Collections.Generic;
 7using System.Threading;
 8using UnityEngine;
 9using UnityEngine.Networking;
 10
 11namespace DCLServices.CameraReelService
 12{
 13    public class CameraReelWebRequestClient : ICameraReelNetworkClient
 14    {
 15        private readonly IWebRequestController webRequestController;
 16        private readonly IEnvironmentProviderService environmentProviderService;
 17
 18        private readonly string imageBaseURL;
 19        private readonly string userBaseURL;
 20
 21        public CameraReelWebRequestClient(IWebRequestController webRequestController,
 22            IEnvironmentProviderService environmentProviderService)
 23        {
 24            this.webRequestController = webRequestController;
 25            this.environmentProviderService = environmentProviderService;
 26
 27            imageBaseURL = $"https://camera-reel-service.decentraland.{(IsProdEnv() ? "org" : "zone")}/api/images";
 28            userBaseURL = $"https://camera-reel-service.decentraland.{(IsProdEnv() ? "org" : "zone")}/api/users";
 29        }
 30
 31        private bool IsProdEnv() =>
 32            environmentProviderService.IsProd();
 33
 34        public async UniTask<CameraReelStorageResponse> GetUserGalleryStorageInfoRequest(string userAddress, Cancellatio
 35        {
 36            UnityWebRequest result = await webRequestController.GetAsync($"{userBaseURL}/{userAddress}", isSigned: true,
 37
 38            if (result.result != UnityWebRequest.Result.Success)
 39                throw new Exception($"Error fetching user gallery storage info :\n{result.error}");
 40
 41            CameraReelStorageResponse responseData = Utils.SafeFromJson<CameraReelStorageResponse>(result.downloadHandle
 42
 43            if (responseData == null)
 44                throw new Exception($"Error parsing gallery storage info response:\n{result.downloadHandler.text}");
 45
 46            return responseData;
 47        }
 48
 49        public async UniTask<CameraReelResponses> GetScreenshotGalleryRequest(string userAddress, int limit, int offset,
 50        {
 51            UnityWebRequest result = await webRequestController.GetAsync($"{userBaseURL}/{userAddress}/images?limit={lim
 52
 53            if (result.result != UnityWebRequest.Result.Success)
 54                throw new Exception($"Error fetching user screenshots gallery :\n{result.error}");
 55
 56            CameraReelResponses responseData = Utils.SafeFromJson<CameraReelResponses>(result.downloadHandler.text);
 57
 58            if (responseData == null)
 59                throw new Exception($"Error parsing screenshots gallery response:\n{result.downloadHandler.text}");
 60
 61            foreach (CameraReelResponse response in responseData.images)
 62                ResponseSanityCheck(response, result.downloadHandler.text);
 63
 64            return responseData;
 65        }
 66
 67        public async UniTask<CameraReelUploadResponse> UploadScreenshotRequest(byte[] image, ScreenshotMetadata metadata
 68        {
 69            var formData = new List<IMultipartFormSection>
 70            {
 71                new MultipartFormFileSection("image", image, $"{metadata.dateTime}.jpg", "image/jpeg"),
 72                new MultipartFormDataSection("metadata", JsonUtility.ToJson(metadata)),
 73            };
 74
 75            UnityWebRequest result = await webRequestController.PostAsync(imageBaseURL, formData, isSigned: true, cancel
 76
 77            CameraReelUploadResponse response = Utils.SafeFromJson<CameraReelUploadResponse>(result.downloadHandler.text
 78
 79            if (response == null)
 80                throw new Exception($"Error parsing screenshot response:\n{result.downloadHandler.text}");
 81
 82            ResponseSanityCheck(response.image, result.downloadHandler.text);
 83
 84            return response;
 85        }
 86
 87        public async UniTask<CameraReelStorageResponse> DeleteScreenshotRequest(string uuid, CancellationToken ct)
 88        {
 89            UnityWebRequest result = await webRequestController.DeleteAsync($"{imageBaseURL}/{uuid}", isSigned: true, ca
 90
 91            if (result.result != UnityWebRequest.Result.Success)
 92                throw new Exception($"error during deleting screenshot from the gallery:\n{result.error}");
 93
 94            CameraReelStorageResponse response = Utils.SafeFromJson<CameraReelStorageResponse>(result.downloadHandler.te
 95
 96            if (response == null)
 97                throw new Exception($"Error parsing screenshot delete response:\n{result.downloadHandler.text}");
 98
 99            return response;
 100        }
 101
 102        private static void ResponseSanityCheck(CameraReelResponse response, string downloadHandlerText)
 103        {
 104            if (response == null)
 105                throw new Exception($"Error parsing screenshot response:\n{downloadHandlerText}");
 106
 107            if (string.IsNullOrEmpty(response.url))
 108                throw new Exception($"No screenshot image url info retrieved:\n{downloadHandlerText}");
 109
 110            if (string.IsNullOrEmpty(response.thumbnailUrl))
 111                throw new Exception($"No screenshot thumbnail url info retrieved:\n{downloadHandlerText}");
 112
 113            if (response.metadata == null)
 114                throw new Exception($"No screenshot metadata info retrieved:\n{downloadHandlerText}");
 115        }
 116    }
 117
 118    [Serializable]
 119    public class CameraReelResponses
 120    {
 0121        public List<CameraReelResponse> images = new ();
 122        public int currentImages;
 123        public int maxImages;
 124    }
 125
 126    [Serializable]
 127    public class CameraReelResponse
 128    {
 129        public string id;
 130        public string url;
 131        public string thumbnailUrl;
 132
 133        public ScreenshotMetadata metadata;
 134    }
 135
 136    [Serializable]
 137    public class CameraReelUploadResponse
 138    {
 139        public int currentImages;
 140        public int maxImages;
 141
 142        public CameraReelResponse image;
 143    }
 144
 145    [Serializable]
 146    public class CameraReelStorageResponse
 147    {
 148        public int currentImages;
 149        public int maxImages;
 150    }
 151
 152    [Serializable]
 153    public class CameraReelErrorResponse
 154    {
 155        public string message;
 156        public string reason;
 157    }
 158}

Methods/Properties

CameraReelResponses()