private object ConvertDataForResource(object value, SpParamInfo param, SpParamInfoEx paramEx, ApiInvokeOptions invokeOptions) { //fix UserString if (value is string valueString) { value = StringHelper.FixUserString(valueString); } if (param.SystemTypeName.ToLower() == "uniqueidentifier") { return(Guid.Parse(value as string)); } if (value is JToken || value is System.Collections.ICollection) //string is an IEnumerable { if (UseCamelCase) { Util.PascalizeJToken(value as JToken); } value = JsonConvert.SerializeObject(value); } return(value); }
private SpParamInfo ProcInfo_GetParamInfo(ParameterInfo paramInfo, Dictionary <string, SpParamInfoEx> paramsEx) { var isRetParam = paramInfo.Position == -1; var spParamInfo = new SpParamInfo { ParamName = isRetParam ? "returnValue" : paramInfo.Name, IsOutput = paramInfo.IsOut || paramInfo.IsRetval || isRetParam, IsOptional = paramInfo.IsOptional, DefaultValue = paramInfo.DefaultValue, UserTypeName = paramInfo.ParameterType.Name, SystemTypeName = paramInfo.ParameterType.Name }; //extended paramInfo var paramAttribute = paramInfo.GetCustomAttribute <DirectSpParamAttribute>() ?? new DirectSpParamAttribute(); var spParamInfoEx = new SpParamInfoEx() { SignType = paramAttribute.SignType }; paramsEx[spParamInfo.ParamName] = spParamInfoEx; return(spParamInfo); }
private object CheckJwt(object paramValue, SpParamInfo spParam, SpParamInfoEx spParamEx) { // Sign text if need to sign if (spParamEx?.SignType == SpSignType.JwtByCertThumb && !spParam.IsOutput) { string token = paramValue.ToString(); if (string.IsNullOrEmpty(token)) { return(string.Empty); } if (!_tokenSigner.CheckSign(token)) { throw new SpInvalidParamSignatureException(spParam.ParamName); } // Set param value by token payload return(StringHelper.FromBase64(token.Split('.')[1])); } return(paramValue); }