public ActionResult <RuntimeCallResponse> Get() { //?&filter[latestRuntime]=true&filter[module_id]=system&page[size]=100 var uriParams = UriParse.PolkadotParseUri(Request.QueryString.Value); var moduleId = UriParse.TryGetValue(uriParams, "filter", "module_id"); var calls = _sch.DatabaseSchema.TableList .Where(t => t.ModuleName.Equals(moduleId, StringComparison.InvariantCultureIgnoreCase)); var result = RuntimeCallResponse.Default(); var lst = new List <RuntimeCall>(); foreach (var call in calls) { // Detect if call method is callable if (call.MethodName != null && call.MethodName.Length > 0 && Char.IsUpper(call.MethodName[0])) { continue; } var rc = new RuntimeCall { Type = "runtimecall", Id = $"1045-{call.ModuleName}-{call.MethodName}", Attributes = new RuntimeCall.CallAttribute { SpecVersion = "1045", CallId = call.MethodName, ModuleId = call.ModuleName, Name = call.MethodName } }; lst.Add(rc); } result.Data = lst; return(result); }
public ActionResult <ExtrinsicBase> Get(string id) { var targetTables = _metadataSchema.DatabaseSchema.TableList.Where(i => i.Title.Contains("Call")).ToArray(); if (!string.IsNullOrWhiteSpace(id)) { string addId = ""; Dictionary <TableSchema, IEnumerable <string> > data2; if (id.Length > 30) { var ids = id.Split('-'); if (ids.Count() > 1) { id = ids.ElementAt(0); addId = ids.ElementAt(1); } data2 = _dataAdapter.GetBlockByHash(targetTables, id, addId); if (data2.Count == 0) { data2 = _dataAdapter.GetTransactionByHash(targetTables, id, addId); } } else { var ids = id.Split('-'); if (ids.Count() > 1) { id = ids.ElementAt(0); addId = ids.ElementAt(1); } var tables = data2 = _dataAdapter.GetBlockByNumber(targetTables, id); } var resultData = ResponseWrapper.Transaction(data2, addId); if (resultData == null) { return(NotFound()); } var result2 = DTO.ExtrinsicResponseSingle.Default(); result2.Data = resultData; return(result2); } var result = DTO.ExtrinsicResponse.Default(); var uriParams = UriParse.PolkadotParseUri(Request.QueryString.Value); var tf = new TransactionFilter { Module = UriParse.TryGetValue(uriParams, "filter", "module_id"), Method = UriParse.TryGetValue(uriParams, "filter", "call_id"), AddressFrom = UriParse.TryGetValue(uriParams, "filter", "address_from"), AddressTo = UriParse.TryGetValue(uriParams, "filter", "address_to") }; var limit = Convert.ToInt32(UriParse.TryGetValue(uriParams, "page", "size")); var pnum = Convert.ToInt32(UriParse.TryGetValue(uriParams, "page", "number")); var data = _dataAdapter.GetFilteredTransactionList(tf, 0, 0); var list = ResponseWrapper.TransactionList(data); if (pnum > 1) { list = list.Skip((pnum - 1) * limit); } result.Data = list.Take(limit); return(result); }