/// <summary> /// ToSecretProofTransaction /// </summary> /// <param name="tx"></param> /// <param name="txInfo"></param> /// <returns></returns> private static SecretProofTransaction ToSecretProofTransaction(JObject tx, TransactionInfo txInfo) { var transaction = tx["transaction"].ToObject <JObject>(); var version = transaction["version"]; //Bug - It seems the dotnetcore does not //understand the Integer. //The workaround it to double cast the version int versionValue; try { versionValue = (int)((uint)version); } catch (Exception) { versionValue = (int)version; } var network = TransactionMappingUtils.ExtractNetworkType(versionValue); var txVersion = TransactionMappingUtils.ExtractTransactionVersion(versionValue); var deadline = new Deadline(transaction["deadline"].ToObject <UInt64DTO>().ToUInt64()); var maxFee = transaction["maxFee"]?.ToObject <UInt64DTO>().ToUInt64(); var signature = transaction["signature"].ToObject <string>(); var signer = new PublicAccount(transaction["signer"].ToObject <string>(), network); var recipient = Recipient.From(Address.CreateFromHex(transaction["recipient"].ToObject <string>())); var hashType = HashTypeExtension.GetRawValue(transaction["hashAlgorithm"].ToObject <int>()); var secret = transaction["secret"].ToObject <string>(); var proof = transaction["proof"].ToObject <string>(); return(new SecretProofTransaction( network, txVersion, deadline, maxFee, hashType, recipient, secret, proof, signature, signer, txInfo)); }
/// <summary> /// Get composite hash /// </summary> /// <param name="hash">The composite hash.</param> /// <returns>IObservable<List<SecretLockWithMetaInfo>></returns> public IObservable <List <SecretLockWithMetaInfo> > GetCompositeHash(string hash) { HashTypeExtension.GetRawValue(1); var route = $"{BasePath}/lock/compositeHash/{hash}"; return(Observable.FromAsync(async ar => await route.GetJsonAsync <List <SecretLockWithMeta> >()) .Select(i => i.Select(info => new SecretLockWithMetaInfo( new MetaLock(info.Meta.id), new SecretLockInfo(info.Lock.Account, info.Lock.AccountAddress, info.Lock.MosaicId.ToUInt64(), info.Lock.Amount.ToUInt64(), info.Lock.Height.ToUInt64(), info.Lock.Status, HashTypeExtension.GetRawValue((int)info.Lock.HashAlgorithm), info.Lock.Secret, info.Lock.Recipient, info.Lock.CompositeHash) )).ToList())); }
/// <summary> /// Get account secret hash /// </summary> /// <param name="account">The public account.</param> /// <returns>IObservable<List<SecretLockWithMetaInfo>></returns> public IObservable <List <SecretLockWithMetaInfo> > GetAccountSecretLockHash(PublicAccount account) { Guard.NotNull(account, nameof(account), "Public account should not be null"); var route = $"{BasePath}/account/{account.PublicKey}/lock/secret"; return(Observable.FromAsync(async ar => await route.GetJsonAsync <List <SecretLockWithMeta> >()) .Select(i => i.Select(info => new SecretLockWithMetaInfo( new MetaLock(info.Meta.id), new SecretLockInfo(info.Lock.Account, info.Lock.AccountAddress, info.Lock.MosaicId.ToUInt64(), info.Lock.Amount.ToUInt64(), info.Lock.Height.ToUInt64(), info.Lock.Status, HashTypeExtension.GetRawValue((int)info.Lock.HashAlgorithm), info.Lock.Secret, info.Lock.Recipient, info.Lock.CompositeHash) )).ToList())); }