| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- using FastJSON;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- namespace Top.Api.Util
- {
- /// <summary>
- /// 请求验证器。
- /// </summary>
- public sealed class RequestValidator
- {
- private const string ERR_CODE_PARAM_MISSING = "40";
- private const string ERR_CODE_PARAM_INVALID = "41";
- private const string ERR_MSG_PARAM_MISSING = "client-error:Missing required arguments:{0}";
- private const string ERR_MSG_PARAM_INVALID = "client-error:Invalid arguments:{0}";
- /// <summary>
- /// 验证参数是否为空。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- public static void ValidateRequired(string name, object value)
- {
- if (value == null)
- {
- throw new TopException(ERR_CODE_PARAM_MISSING, string.Format(ERR_MSG_PARAM_MISSING, name));
- }
- else
- {
- if (value.GetType() == typeof(string))
- {
- string strValue = value as string;
- if (string.IsNullOrEmpty(strValue))
- {
- throw new TopException(ERR_CODE_PARAM_MISSING, string.Format(ERR_MSG_PARAM_MISSING, name));
- }
- }
- }
- }
- /// <summary>
- /// 验证字符串参数的最大长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxLength">最大长度</param>
- public static void ValidateMaxLength(string name, string value, int maxLength)
- {
- if (value != null && value.Length > maxLength)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- /// <summary>
- /// 验证上传文件的最大字节长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxLength">最大长度</param>
- public static void ValidateMaxLength(string name, FileItem value, int maxLength)
- {
- if (value != null && value.GetFileLength() > maxLength)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- /// <summary>
- /// 验证以逗号分隔的字符串参数的最大列表长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxSize">最大列表长度</param>
- public static void ValidateMaxListSize(string name, string value, int maxSize)
- {
- if (value != null)
- {
- string[] data = value.Split(',');
- if (data != null && data.Length > maxSize)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- }
- /// <summary>
- /// 验证以逗号分隔的字符串参数的最大列表长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxSize">最大列表长度</param>
- public static void ValidateMaxListSize(string name, List<string> value, int maxSize)
- {
- if (value != null)
- {
- if (value != null && value.Count > maxSize)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, ERR_MSG_PARAM_INVALID);
- }
- }
- }
- /// <summary>
- /// 验证以逗号分隔的字符串参数的最大列表长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxSize">最大列表长度</param>
- public static void ValidateMaxListSize(string name, List<long> value, int maxSize)
- {
- if (value != null)
- {
- if (value != null && value.Count > maxSize)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, ERR_MSG_PARAM_INVALID);
- }
- }
- }
- /// <summary>
- /// 验证以逗号分隔的字符串参数的最大列表长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxSize">最大列表长度</param>
- public static void ValidateMaxListSize(string name, List<bool> value, int maxSize)
- {
- if (value != null)
- {
- if (value != null && value.Count > maxSize)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, ERR_MSG_PARAM_INVALID);
- }
- }
- }
- /// <summary>
- /// 验证复杂结构数组参数的最大列表长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxSize">最大列表长度</param>
- public static void ValidateObjectMaxListSize(string name, string value, int maxSize)
- {
- if (value != null)
- {
- IList list = JSON.Parse(value) as IList;
- if (list != null && list.Count > maxSize)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- }
- /// <summary>
- /// 验证字符串参数的最小长度。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="minLength">最小长度</param>
- public static void ValidateMinLength(string name, string value, int minLength)
- {
- if (value != null && value.Length < minLength)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- /// <summary>
- /// 验证数字参数的最大值。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="maxValue">最大值</param>
- public static void ValidateMaxValue(string name, Nullable<long> value, long maxValue)
- {
- if (value != null && value > maxValue)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- /// <summary>
- /// 验证数字参数的最小值。
- /// </summary>
- /// <param name="name">参数名</param>
- /// <param name="value">参数值</param>
- /// <param name="minValue">最小值</param>
- public static void ValidateMinValue(string name, Nullable<long> value, long minValue)
- {
- if (value != null && value < minValue)
- {
- throw new TopException(ERR_CODE_PARAM_INVALID, string.Format(ERR_MSG_PARAM_INVALID, name));
- }
- }
- }
- }
|