private ReleaseInfo CreateReleaseInfo(QueryResponseItem item) { var magnetUri = new Uri(_MagnetUri.Replace(KeyInfoHash, item.InfoHash)); return(new ReleaseInfo { Title = item.Name, Category = MapTrackerCatToNewznab(item.Category.ToString()), Comments = item.Id == 0 ? null : new Uri($"{SiteLink}description.php?id={item.Id}"), MagnetUri = magnetUri, InfoHash = item.InfoHash, PublishDate = DateTimeUtil.UnixTimestampToDateTime(item.Added), Guid = magnetUri, Seeders = item.Seeders, Peers = item.Seeders + item.Leechers, Size = item.Size, Files = item.NumFiles, DownloadVolumeFactor = 0, UploadVolumeFactor = 1, Imdb = string.IsNullOrEmpty(item.Imdb) ? null : ParseUtil.GetImdbID(item.Imdb) }); }
List <QueryResponseItem> ParseQueryResponse(string seperatorTag, string resp, string[] fields) { List <QueryResponseItem> result = new List <QueryResponseItem>(); int pos = resp.IndexOf(seperatorTag + "%3A"); try { QueryResponseItem respItm = null; while (pos >= 0 && pos < resp.Length) { int pos2 = resp.IndexOf("%3A", pos); if (pos2 < 0) { break; } string tagName = resp.Substring(pos, pos2 - pos); pos = pos2 + 3; pos2 = resp.IndexOf(" ", pos); if (pos2 < 0) { pos2 = resp.Length; } string fieldValue = resp.Substring(pos, pos2 - pos); if (tagName.Equals(seperatorTag)) { respItm = new QueryResponseItem(fields.Length); result.Add(respItm); } int fieldIdx = Array.IndexOf(fields, tagName); if (fieldIdx >= 0) { respItm.Values[fieldIdx] = Util.UriDecode(fieldValue); } pos = pos2 + 1; } } catch (Exception ex) { Console.WriteLine("SqueezeCenter: Error parsing response:\n" + ex.ToString()); } return(result); }
private ReleaseInfo CreateReleaseInfo(QueryResponseItem item) { var details = item.Id == 0 ? null : new Uri($"{SiteLink}description.php?id={item.Id}"); var imdbId = string.IsNullOrEmpty(item.Imdb) ? null : ParseUtil.GetImdbID(item.Imdb); return(new ReleaseInfo { Title = item.Name, Category = MapTrackerCatToNewznab(item.Category.ToString()), Guid = details, Details = details, InfoHash = item.InfoHash, // magnet link is auto generated from infohash PublishDate = DateTimeUtil.UnixTimestampToDateTime(item.Added), Seeders = item.Seeders, Peers = item.Seeders + item.Leechers, Size = item.Size, Files = item.NumFiles, DownloadVolumeFactor = 0, UploadVolumeFactor = 1, Imdb = imdbId }); }
List<QueryResponseItem> ParseQueryResponse(string seperatorTag, string resp, string[] fields) { List<QueryResponseItem> result = new List<QueryResponseItem>(); int pos = resp.IndexOf (seperatorTag + "%3A"); try { QueryResponseItem respItm = null; while (pos >= 0 && pos < resp.Length) { int pos2 = resp.IndexOf ("%3A", pos); if (pos2 < 0) break; string tagName = resp.Substring (pos, pos2 - pos); pos = pos2 + 3; pos2 = resp.IndexOf (" ", pos); if (pos2 < 0) pos2 = resp.Length; string fieldValue = resp.Substring (pos, pos2-pos); if (tagName.Equals (seperatorTag)) { respItm = new QueryResponseItem (fields.Length); result.Add (respItm); } int fieldIdx = Array.IndexOf (fields, tagName); if (fieldIdx >= 0) respItm.Values[fieldIdx] = Util.UriDecode (fieldValue); pos = pos2 + 1; } } catch(Exception ex) { Console.WriteLine ("SqueezeCenter: Error parsing response:\n" + ex.ToString ()); } return result; }
public FilteredTransactionsResponseModel GetFilteredTransactions(RequestFilteredListModel model) { var res = new FilteredTransactionsResponseModel(); using (var client = GetClientByModel(model)) { var args = new API.FilteredTransactionsListGet_args(); args.GeneralQuery = new TransactionsQuery(); args.GeneralQuery.Flag = Convert.ToInt16((model.Flagg == "in") ? 1 : (model.Flagg == "out" ? 2 : 3)); args.GeneralQuery.Queries = new List <SingleQuery>(); foreach (var qry in model.Queries) { //var nq = new SingleQuery(); var sq = new SingleQuery(); sq.FromId = BCTransactionTools.GetTransactionIdByStr(qry.FromId == null ? "0.0" : qry.FromId); sq.RequestedAddress = SimpleBase.Base58.Bitcoin.Decode(qry.Address).ToArray(); if (qry.TokenQueries != null) { sq.TokensList = new List <SingleTokenQuery>(); foreach (var tokenReq in qry.TokenQueries) { var sqt = new SingleTokenQuery(); sqt.FromId = BCTransactionTools.GetTransactionIdByStr(tokenReq.FromId); sqt.TokenAddress = SimpleBase.Base58.Bitcoin.Decode(tokenReq.TokenAddress).ToArray(); sq.TokensList.Add(sqt); } } args.GeneralQuery.Queries.Add(sq); } var qResult = client.FilteredTransactionsListGet(args.GeneralQuery); if (model.Queries.Count() < qResult.QueryResponse.Count) { throw new Exception("Query and response lists are not syncronized"); } foreach (var qRep in qResult.QueryResponse) { var qRes = new QueryResponseItem(); qRes.QueryAddress = SimpleBase.Base58.Bitcoin.Encode(qRep.RequestedAddress); foreach (var tr in qRep.Transactions) { var newTr = new ShortTransactionInfo(); newTr.Amount = BCTransactionTools.GetDecimalByAmount(tr.Amount); newTr.Currency = Convert.ToUInt16(tr.Currency); var feeStr = Utils.ConvertCommission(tr.Fee.Commission).Replace(",", "."); var style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands; newTr.Fee = Decimal.Parse(feeStr, style, CultureInfo.InvariantCulture); if (model.Flagg == "in") { newTr.Source = SimpleBase.Base58.Bitcoin.Encode(tr.Source); } else if (model.Flagg == "out") { newTr.Target = SimpleBase.Base58.Bitcoin.Encode(tr.Target); } else { newTr.Source = SimpleBase.Base58.Bitcoin.Encode(tr.Source); newTr.Target = SimpleBase.Base58.Bitcoin.Encode(tr.Target); } newTr.TimeCreation = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddSeconds(tr.TimeCreation / 1000); newTr.TransactionId = Convert.ToString(tr.Id.PoolSeq) + "." + Convert.ToString(tr.Id.Index); newTr.Type = Convert.ToByte(tr.Type); newTr.UserData = SimpleBase.Base58.Bitcoin.Encode(tr.UserFields); qRes.Transactions.Add(newTr); } if (qRep.TransfersList != null) { foreach (var tokenResp in qRep.TransfersList) { var SingleTokenResponse = new QueryTokenResponseItem(); SingleTokenResponse.TokenAddress = SimpleBase.Base58.Bitcoin.Encode(tokenResp.TokenAddress); SingleTokenResponse.TokenName = tokenResp.TokenName; SingleTokenResponse.TokenTiker = tokenResp.TokenTiker; if (tokenResp.Transfers != null) { foreach (var singleTokenTransfer in tokenResp.Transfers) { var singleTokenTransferResult = new TokenTransferInfo(); singleTokenTransferResult.TokenAddress = SimpleBase.Base58.Bitcoin.Encode(singleTokenTransfer.Token); singleTokenTransferResult.Sender = SimpleBase.Base58.Bitcoin.Encode(singleTokenTransfer.Sender); singleTokenTransferResult.Receiver = SimpleBase.Base58.Bitcoin.Encode(singleTokenTransfer.Receiver); singleTokenTransferResult.TransferInitiator = SimpleBase.Base58.Bitcoin.Encode(singleTokenTransfer.Initiator); singleTokenTransferResult.TokenCode = singleTokenTransfer.Code; singleTokenTransferResult.TokenAmount = Convert.ToDecimal(singleTokenTransfer.Amount, CultureInfo.InvariantCulture); singleTokenTransferResult.TransactionID = Convert.ToString(singleTokenTransfer.Transaction.PoolSeq) + "." + Convert.ToString(singleTokenTransfer.Transaction.Index); singleTokenTransferResult.TimeCreation = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddSeconds(singleTokenTransfer.Time / 1000); singleTokenTransferResult.UserData = SimpleBase.Base58.Bitcoin.Encode(singleTokenTransfer.UserFields); if (singleTokenTransfer.Fee != null) { singleTokenTransferResult.Fee = Convert.ToDecimal(Utils.FeeByIndex(singleTokenTransfer.Fee.Commission), CultureInfo.InvariantCulture); } if (singleTokenTransfer.ExtraFee != null) { foreach (var it in singleTokenTransfer.ExtraFee) { var item = new EFeeItem(); item.Fee = Convert.ToDecimal(FormatAmount(it.Sum), CultureInfo.InvariantCulture); item.Comment = it.Comment; singleTokenTransferResult.ExtraFee.Add(item); } } SingleTokenResponse.Transfers.Add(singleTokenTransferResult); } qRes.TransfersList.Add(SingleTokenResponse); } } } res.QuerieResponses.Add(qRes); } } return(res); }