< Summary

Class:MainScripts.DCL.ServiceProviders.OpenSea.OpenSeaService
Assembly:OpenSea_Internal
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/ServiceProviders/OpenSea/OpenSeaService.cs
Covered lines:7
Uncovered lines:32
Coverable lines:39
Total lines:83
Line coverage:17.9% (7 of 39)
Covered branches:0
Total branches:0
Covered methods:2
Total methods:6
Method coverage:33.3% (2 of 6)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
OpenSeaService(...)0%110100%
MainScripts-DCL-ServiceProviders-OpenSea-Interfaces-IOpenSea-FetchNFTsFromOwner()0%42600%
MainScripts-DCL-ServiceProviders-OpenSea-Interfaces-IOpenSea-FetchNFTInfo()0%42600%
ResponseToNftOwner(...)0%6200%
ResponseToNftInfo(...)0%2100%
Dispose()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/ServiceProviders/OpenSea/OpenSeaService.cs

#LineLine coverage
 1using MainScripts.DCL.ServiceProviders.OpenSea.Interfaces;
 2using MainScripts.DCL.ServiceProviders.OpenSea.Requests;
 3using System;
 4using System.Collections;
 5using UnityEngine;
 6
 7namespace MainScripts.DCL.ServiceProviders.OpenSea
 8{
 9    public class OpenSeaService : IOpenSea
 10    {
 11        private readonly KernelConfig kernelConfig;
 13012        private readonly MarketInfo openSeaMarketInfo = new () { name = "OpenSea" };
 13        private readonly RequestController requestController;
 14
 13015        public OpenSeaService(KernelConfig kernelConfig)
 16        {
 13017            this.kernelConfig = kernelConfig;
 13018            requestController = new RequestController(this.kernelConfig);
 13019        }
 20
 21        IEnumerator IOpenSea.FetchNFTsFromOwner(string address, Action<OwnNFTInfo> onSuccess, Action<string> onError)
 22        {
 023            var request = requestController.FetchOwnedNFT(address);
 24
 025            yield return new WaitUntil(() => !request.pending);
 26
 027            if (request.resolved)
 028                onSuccess?.Invoke(ResponseToNftOwner(address, request.resolvedValue));
 29            else
 030                onError?.Invoke(request.error);
 031        }
 32
 33        IEnumerator IOpenSea.FetchNFTInfo(string chain, string assetContractAddress, string tokenId, Action<NFTInfo> onS
 34        {
 035            RequestBase<OpenSeaNftDto> request = requestController.FetchNFT(chain, assetContractAddress, tokenId);
 36
 037            yield return new WaitUntil(() => !request.pending);
 38
 039            if (request.resolved)
 040                onSuccess?.Invoke(ResponseToNftInfo(request.resolvedValue.nft));
 41            else
 042                onError?.Invoke(request.error);
 043        }
 44
 45        private OwnNFTInfo ResponseToNftOwner(string ethAddress, OpenSeaManyNftDto response)
 46        {
 047            OwnNFTInfo infoInfo = OwnNFTInfo.Default;
 048            infoInfo.ethAddress = ethAddress;
 49
 050            foreach (NftDto assetResponse in response.nfts)
 051                infoInfo.assets.Add(ResponseToNftInfo(assetResponse));
 52
 053            return infoInfo;
 54        }
 55
 56        private NFTInfo ResponseToNftInfo(NftDto nft)
 57        {
 058            NFTInfo ret = NFTInfo.Default;
 059            ret.marketInfo = openSeaMarketInfo;
 060            ret.name = nft.name;
 061            ret.description = nft.description;
 062            ret.thumbnailUrl = nft.image_url; // todo: we only have the original now
 063            ret.previewImageUrl = nft.image_url; //
 064            ret.originalImageUrl = nft.image_url; //
 065            ret.imageUrl = nft.image_url;
 066            ret.assetLink = nft.opensea_url;
 067            ret.marketLink = nft.opensea_url;
 068            ret.tokenId = nft.identifier;
 069            ret.assetContract.address = nft.contract;
 070            ret.assetContract.name = nft.contract; // we have no name now
 071            ret.owners = nft.owners;
 72
 73            // TODO: Fetch market info? (on-sale value)
 74
 075            return ret;
 76        }
 77
 78        public void Dispose()
 79        {
 13080            requestController?.Dispose();
 13081        }
 82    }
 83}