public static string GetSignature(UriData data, string uri, string body) { var bodyGen = string.Empty; if (!string.IsNullOrEmpty(body)) { var jObj = (JObject)JsonConvert.DeserializeObject(body); Sort(jObj); bodyGen = BodyGenerator(jObj); } var result = $"{data.nonce}{data.timestamp}{data.method}{uri}"; if (!string.IsNullOrEmpty(data.quary)) { result = $"{result}?{data.quary}"; if (!string.IsNullOrEmpty(bodyGen)) { result = $"{result}&{bodyGen}"; } } else { if (!string.IsNullOrEmpty(bodyGen)) { result = $"{result}?{bodyGen}"; } } logger.Debug($"{result}"); return(CreateToken(result, data.serviceApiSecret)); }
public HttpWebRequest GetWebRequest(UriData data, string body) { var uri = GetUri(data); if (string.IsNullOrEmpty(uri)) { logger.Warn("GetUri Is Null or Empty"); return(null); } data.signature = Signature.GetSignature(data, uri, body); var requestUriString = $"{baseUri}{uri}"; if (!string.IsNullOrEmpty(data.quary)) { requestUriString = $"{requestUriString}?{data.quary}"; } logger.Debug($"RequestUri={requestUriString}"); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create($"{requestUriString}"); webRequest.Method = data.method; webRequest.Accept = "*/*"; if (!string.IsNullOrEmpty(data.serviceApiKey)) { webRequest.Headers.Add("service-api-key", data.serviceApiKey); } if (!string.IsNullOrEmpty(data.signature)) { webRequest.Headers.Add("Signature", data.signature); } if (data.timestamp > 0) { webRequest.Headers.Add("Timestamp", data.timestamp.ToString()); } if (!string.IsNullOrEmpty(data.nonce)) { webRequest.Headers.Add("Nonce", data.nonce); } if (!string.IsNullOrEmpty(body)) { webRequest.ContentType = "application/json"; TextWriter writer = new StreamWriter(webRequest.GetRequestStream()); writer.Write(body); writer.Close(); } logger.Debug($"uri={uri} method={data.method} apikey={data.serviceApiKey}"); logger.Debug($"sign={data.signature} tstamp={data.timestamp} nonce={data.nonce}"); logger.Debug($"body={body}"); return(webRequest); }
public string RequestResult(UriData data, string body) { var webRequest = uriManager.GetWebRequest(data, body); if (null == webRequest) { logger.Warn("GetWebRequest Is null"); return(string.Empty); } var tResult = HttpManager.Instance.Request(webRequest); var result = tResult.Result; if (result.Item1 == 200 || result.Item1 == 202) { if (!string.IsNullOrEmpty(result.Item2)) { var status = JsonConvert.DeserializeObject <ResponesDataHeader>(result.Item2); logger.Info($"Type={data.type.ToString()} ResponseTime={status.responseTime} StatusCode={status.statusCode} StatusMessage={status.statusMessage}"); } else { logger.Warn($"Type={data.type.ToString()} Result IsNullOrEmpt"); } } else { logger.Warn($"Type={data.type.ToString()} StatusCode={result.Item1}"); } return(result.Item2); }
public string GetUri(UriData data) { var result = string.Empty; switch (data.type) { case ApiUriType.IssueNonFungible: case ApiUriType.TokenTypeInfo_NonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles"; } break; case ApiUriType.IssueFungible: case ApiUriType.TokenTypeInfo_Fungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } result = $"/item-tokens/{data.itemContractId}/fungibles"; } break; case ApiUriType.CreateWallet: result = "/wallets"; break; case ApiUriType.MintNonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/mint"; } break; case ApiUriType.MultiMintNonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles/multi-mint"; } break; case ApiUriType.MintFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } result = $"/item-tokens/{data.itemContractId}/fungibles/{data.tokenType}/mint"; } break; case ApiUriType.BurnNonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenIdx), data.tokenIdx)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/{data.tokenIdx}/burn"; } break; case ApiUriType.BurnFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } result = $"/item-tokens/{data.itemContractId}/fungibles/{data.tokenType}/burn"; } break; case ApiUriType.TransferNonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenIdx), data.tokenIdx)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/{data.tokenIdx}/transfer"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/{data.tokenIdx}/transfer"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TransferFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/fungibles/{data.tokenType}/transfer"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/fungibles/{data.tokenType}/transfer"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.BatchTransfer: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/non-fungibles/batch-transfer"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/non-fungibles/batch-transfer"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TokenBalancesOf_NonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/non-fungibles"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/non-fungibles"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TokenBalancesOf_Fungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/fungibles"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/fungibles"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TokenTypeBalancesOf_NonFungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TokenTypeBalancesOf_Fungible: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/item-tokens/{data.itemContractId}/fungibles/{data.tokenType}"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/fungibles/{data.tokenType}"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TransactionHash: { if (!CheckAlphabet_Uppercase_Numeric(data.type.ToString(), nameof(data.txHash), data.txHash)) { break; } result = $"/transactions/{data.txHash}"; } break; case ApiUriType.GetTokenParent: case ApiUriType.AddTokenParent: case ApiUriType.RemoveTokenParent: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenIdx), data.tokenIdx)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/{data.tokenIdx}/parent"; } break; case ApiUriType.GetTokenChildren: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenIdx), data.tokenIdx)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/{data.tokenIdx}/children"; } break; case ApiUriType.GetTokenRoot: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenType), data.tokenType)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.tokenIdx), data.tokenIdx)) { break; } result = $"/item-tokens/{data.itemContractId}/non-fungibles/{data.tokenType}/{data.tokenIdx}/root"; } break; case ApiUriType.TokenTypeInfo_ServiceToken: result = $"/service-tokens"; break; case ApiUriType.TokenTypeInfo_ServiceTokenByContractId: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.serviceContractId), data.serviceContractId)) { break; } result = $"/service-tokens/{data.serviceContractId}"; } break; case ApiUriType.TokenBalancesOf_ServiceToken: { if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/service-tokens"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/service-tokens"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.TokenBalancesOf_ServiceTokenByContractId: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.serviceContractId), data.serviceContractId)) { break; } if (!string.IsNullOrEmpty(data.walletAddr)) { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } result = $"/wallets/{data.walletAddr}/service-tokens/{data.serviceContractId}"; } else if (!string.IsNullOrEmpty(data.userId)) { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}/service-tokens/{data.serviceContractId}"; } else { logger.Warn($"{data.type.ToString()} No UserID or Address"); } } break; case ApiUriType.MintServiceToken: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.serviceContractId), data.serviceContractId)) { break; } result = $"/service-tokens/{data.serviceContractId}/mint"; } break; case ApiUriType.BurnServiceToken: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.serviceContractId), data.serviceContractId)) { break; } result = $"/service-tokens/{data.serviceContractId}/burn"; } break; case ApiUriType.TransferServiceToken: { if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.walletAddr), data.walletAddr)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.serviceContractId), data.serviceContractId)) { break; } result = $"/wallets/{data.walletAddr}/service-tokens/{data.serviceContractId}/transfer"; } break; case ApiUriType.IssueServiceTokenTransfer: { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.serviceContractId), data.serviceContractId)) { break; } result = $"/users/{data.userId}/service-tokens/{data.serviceContractId}/request-transfer"; } break; case ApiUriType.GetUser: { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } result = $"/users/{data.userId}"; } break; case ApiUriType.GetProxy: { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/proxy"; } break; case ApiUriType.RequestProxy: { if (!Check_Alphabet_Case_Numeric(data.type.ToString(), nameof(data.userId), data.userId)) { break; } else if (!CheckAlphabet_Lowercase_Numeric(data.type.ToString(), nameof(data.itemContractId), data.itemContractId)) { break; } result = $"/users/{data.userId}/item-tokens/{data.itemContractId}/request-proxy"; } break; case ApiUriType.CommitUserRequest: { if (string.IsNullOrEmpty(data.requestSessionToken)) { logger.Warn($"{data.type.ToString()} SessionToken Is null or empty"); break; } result = $"/user-requests/{data.requestSessionToken}/commit"; } break; default: break; } if (!string.IsNullOrEmpty(result)) { result = $"{version}{result}"; } return(result); }
UriData GetUriData(ApiUriType type) { var result = new UriData(); switch (type) { case ApiUriType.IssueFungible: case ApiUriType.IssueNonFungible: case ApiUriType.CreateWallet: case ApiUriType.MintNonFungible: case ApiUriType.MultiMintNonFungible: case ApiUriType.MintFungible: case ApiUriType.BurnNonFungible: case ApiUriType.BurnFungible: case ApiUriType.TransferNonFungible: case ApiUriType.TransferFungible: case ApiUriType.BatchTransfer: case ApiUriType.AddTokenParent: case ApiUriType.MintServiceToken: case ApiUriType.BurnServiceToken: case ApiUriType.TransferServiceToken: case ApiUriType.IssueServiceTokenTransfer: case ApiUriType.RequestProxy: case ApiUriType.CommitUserRequest: { result.type = type; result.method = "POST"; } break; case ApiUriType.GetUser: case ApiUriType.TokenTypeInfo_NonFungible: case ApiUriType.TokenTypeInfo_Fungible: case ApiUriType.TokenBalancesOf_NonFungible: case ApiUriType.TokenBalancesOf_Fungible: case ApiUriType.TokenTypeBalancesOf_NonFungible: case ApiUriType.TokenTypeBalancesOf_Fungible: case ApiUriType.TransactionHash: case ApiUriType.GetTokenParent: case ApiUriType.GetTokenChildren: case ApiUriType.GetTokenRoot: case ApiUriType.TokenTypeInfo_ServiceToken: case ApiUriType.TokenTypeInfo_ServiceTokenByContractId: case ApiUriType.TokenBalancesOf_ServiceToken: case ApiUriType.TokenBalancesOf_ServiceTokenByContractId: case ApiUriType.GetProxy: { result.type = type; result.method = "GET"; } break; case ApiUriType.RemoveTokenParent: { result.type = type; result.method = "DELETE"; } break; default: break; } if (result.type == type) { result.serviceApiKey = lbdInfo.apiKey; result.serviceApiSecret = lbdInfo.apiSecret; result.signature = "brown"; result.nonce = nonce.GetNonce(); result.timestamp = UnixTime.NowUnixTimeMilliseconds(); result.itemContractId = lbdInfo.itemTokenContractId; } return(result); }