public void Resolve(AssetsResponse response) { AssetResponse asset = null; for (int i = 0; i < response.assets.Length; i++) { asset = response.assets[i]; if (asset.token_id == tokenId && String.Equals(asset.asset_contract.address, assetContractAddress, StringComparison.OrdinalIgnoreCase)) { if (OpenSeaRequestController.VERBOSE) { Debug.Log($"Request: resolved {this.ToString()}"); } assetResponse = asset; break; } } if (assetResponse == null) { error = $"asset {assetContractAddress}/{tokenId} not found in api response"; if (OpenSeaRequestController.VERBOSE) { Debug.Log($"Request: for {assetContractAddress}/{tokenId} not found {JsonUtility.ToJson(response)}"); } } resolved = true; }
void IRequestHandler.SetApiResponse(string responseJson, Action onSuccess, Action <string> onError) { AssetsResponse response = null; try { response = Utils.FromJsonWithNulls <AssetsResponse>(responseJson); } catch (Exception e) { onError?.Invoke(e.Message); } if (response == null) { return; } RequestAssetInBatch request = null; AssetResponse asset = null; int batchCount = requests.Count; for (int i = batchCount - 1; i >= 0; i--) { request = requests[i]; for (int j = 0; j < response.assets.Length; j++) { asset = response.assets[j]; bool isMatch = asset.token_id == request.tokenId && String.Equals(asset.asset_contract.address, request.contractAddress, StringComparison.OrdinalIgnoreCase); if (isMatch) { if (VERBOSE) { Debug.Log($"BatchAssetsRequestHandler: ({GetHashCode()}) resolved {request.contractAddress}/{request.tokenId}"); } request.Resolve(asset); requests.RemoveAt(i); break; } } } // Retry possible unresolved requests if (requests.Count > 0) { RetryBatch(requests); } onSuccess?.Invoke(); }