private static bool FieldUsesKind(ServiceInfo service, ServiceFieldInfo field, ServiceTypeKind kind)
        {
            var type = service.GetFieldType(field);

            if (type.Kind == kind)
            {
                return(true);
            }

            var valueType = type;

            while (true)
            {
                valueType = valueType.ValueType;
                if (valueType == null)
                {
                    break;
                }
                if (valueType.Kind == kind)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        private string RenderUriComponent(ServiceFieldInfo field, ServiceInfo service)
        {
            var fieldTypeKind = service.GetFieldType(field).Kind;
            var fieldName     = field.Name;

            switch (fieldTypeKind)
            {
            case ServiceTypeKind.Enum:
                return($"request.{fieldName}");

            case ServiceTypeKind.String:
            case ServiceTypeKind.Bytes:
                return($"encodeURIComponent(request.{fieldName})");

            case ServiceTypeKind.Boolean:
            case ServiceTypeKind.Int32:
            case ServiceTypeKind.Int64:
            case ServiceTypeKind.Decimal:
                return($"request.{fieldName}.toString()");

            case ServiceTypeKind.Double:
                return($"encodeURIComponent(request.{fieldName}.toString())");

            case ServiceTypeKind.Dto:
            case ServiceTypeKind.Error:
            case ServiceTypeKind.Object:
                throw new NotSupportedException("Field type not supported on path/query: " + fieldTypeKind);

            default:
                throw new NotSupportedException("Unknown field type " + fieldTypeKind);
            }
        }
Exemplo n.º 3
0
        private string RenderJsConversion(ServiceFieldInfo field, ServiceInfo service, string value)
        {
            var fieldTypeKind = service.GetFieldType(field).Kind;

            switch (fieldTypeKind)
            {
            case ServiceTypeKind.Enum:
            case ServiceTypeKind.String:
            case ServiceTypeKind.Bytes:
                return(value);

            case ServiceTypeKind.Boolean:
                return($"parseBoolean({value})");

            case ServiceTypeKind.Int32:
            case ServiceTypeKind.Int64:
                return($"parseInt({value}, 10)");

            case ServiceTypeKind.Decimal:
            case ServiceTypeKind.Double:
                return($"parseFloat({value})");

            case ServiceTypeKind.Dto:
            case ServiceTypeKind.Error:
            case ServiceTypeKind.Object:
                throw new NotSupportedException("Field type not supported on path/query: " + fieldTypeKind);

            default:
                throw new NotSupportedException("Unknown field type " + fieldTypeKind);
            }
        }
Exemplo n.º 4
0
        private static bool IsValidRequestBodyField(ServiceFieldInfo fieldInfo, ServiceInfo serviceInfo)
        {
            var fieldTypeKind = serviceInfo.GetFieldType(fieldInfo).Kind;

            return(fieldTypeKind == ServiceTypeKind.Object ||
                   fieldTypeKind == ServiceTypeKind.Error ||
                   fieldTypeKind == ServiceTypeKind.Dto ||
                   fieldTypeKind == ServiceTypeKind.Result ||
                   fieldTypeKind == ServiceTypeKind.Array ||
                   fieldTypeKind == ServiceTypeKind.Map);
        }
Exemplo n.º 5
0
 internal HttpNormalFieldInfo(ServiceFieldInfo fieldInfo)
     : base(fieldInfo)
 {
     foreach (var parameter in GetHttpParameters(fieldInfo))
     {
         if (parameter.Name != "from")
         {
             AddInvalidHttpParameterError(parameter);
         }
     }
 }
Exemplo n.º 6
0
        private static bool IsValidPathOrQueryField(ServiceFieldInfo fieldInfo, ServiceInfo serviceInfo)
        {
            var fieldTypeKind = serviceInfo.GetFieldType(fieldInfo).Kind;

            return(fieldTypeKind == ServiceTypeKind.String ||
                   fieldTypeKind == ServiceTypeKind.Boolean ||
                   fieldTypeKind == ServiceTypeKind.Double ||
                   fieldTypeKind == ServiceTypeKind.Int32 ||
                   fieldTypeKind == ServiceTypeKind.Int64 ||
                   fieldTypeKind == ServiceTypeKind.Decimal ||
                   fieldTypeKind == ServiceTypeKind.Enum);
        }
Exemplo n.º 7
0
        internal HttpNormalFieldInfo(ServiceFieldInfo fieldInfo)
        {
            ServiceField = fieldInfo;

            foreach (var parameter in fieldInfo.GetHttpParameters())
            {
                if (parameter.Name != "from")
                {
                    throw parameter.CreateInvalidHttpParameterException();
                }
            }
        }
Exemplo n.º 8
0
        internal HttpPathFieldInfo(ServiceFieldInfo fieldInfo)
        {
            ServiceField = fieldInfo;

            foreach (var parameter in GetHttpParameters(fieldInfo))
            {
                if (parameter.Name != "from")
                {
                    AddInvalidHttpParameterError(parameter);
                }
            }
        }
Exemplo n.º 9
0
 internal HttpBodyFieldInfo(ServiceFieldInfo fieldInfo)
     : base(fieldInfo)
 {
     foreach (var parameter in GetHttpParameters(fieldInfo))
     {
         if (parameter.Name == "code")
         {
             StatusCode = TryParseStatusCodeInteger(parameter);
         }
         else if (parameter.Name != "from")
         {
             AddInvalidHttpParameterError(parameter);
         }
     }
 }
Exemplo n.º 10
0
        private static SwaggerParameter CreateSwaggerParameter(ServiceInfo service, ServiceFieldInfo fieldInfo, string inKind, string name)
        {
            var parameterObject = GetTypeSchema <SwaggerParameter>(service.GetFieldType(fieldInfo));

            parameterObject.In   = inKind;
            parameterObject.Name = name ?? fieldInfo.Name;
            if (parameterObject.Name != fieldInfo.Name)
            {
                parameterObject.Identifier = fieldInfo.Name;
            }
            parameterObject.Description = GetSummaryOrNull(fieldInfo);
            parameterObject.Required    = inKind == SwaggerParameterKind.Path ? true : default(bool?);
            parameterObject.Obsolete    = GetObsoleteOrNull(fieldInfo);
            return(parameterObject);
        }
Exemplo n.º 11
0
        internal HttpBodyFieldInfo(ServiceFieldInfo fieldInfo)
        {
            ServiceField = fieldInfo;

            foreach (var parameter in fieldInfo.GetHttpParameters())
            {
                if (parameter.Name == "code")
                {
                    StatusCode = HttpAttributeUtility.ParseStatusCodeInteger(parameter);
                }
                else if (parameter.Name != "from")
                {
                    throw parameter.CreateInvalidHttpParameterException();
                }
            }
        }
Exemplo n.º 12
0
        internal HttpQueryFieldInfo(ServiceFieldInfo fieldInfo)
        {
            ServiceField = fieldInfo;
            Name         = fieldInfo.Name;

            foreach (var parameter in fieldInfo.GetHttpParameters())
            {
                if (parameter.Name == "name")
                {
                    Name = parameter.Value;
                }
                else if (parameter.Name != "from")
                {
                    throw parameter.CreateInvalidHttpParameterException();
                }
            }
        }
Exemplo n.º 13
0
        internal HttpHeaderFieldInfo(ServiceFieldInfo fieldInfo)
            : base(fieldInfo)
        {
            Name = fieldInfo.Name;

            foreach (var parameter in GetHttpParameters(fieldInfo))
            {
                if (parameter.Name == "name")
                {
                    Name = parameter.Value;
                }
                else if (parameter.Name != "from")
                {
                    AddInvalidHttpParameterError(parameter);
                }
            }
        }
Exemplo n.º 14
0
        private static bool IsValidSimpleField(ServiceFieldInfo fieldInfo, ServiceInfo serviceInfo)
        {
            var fieldType     = serviceInfo.GetFieldType(fieldInfo);
            var fieldTypeKind = fieldType?.Kind;

            if (fieldTypeKind == null)
            {
                return(false);
            }

            if (fieldTypeKind == ServiceTypeKind.Array)
            {
                fieldTypeKind = fieldType.ValueType.Kind;
            }

            return(fieldTypeKind == ServiceTypeKind.String ||
                   fieldTypeKind == ServiceTypeKind.Boolean ||
                   fieldTypeKind == ServiceTypeKind.Double ||
                   fieldTypeKind == ServiceTypeKind.Int32 ||
                   fieldTypeKind == ServiceTypeKind.Int64 ||
                   fieldTypeKind == ServiceTypeKind.Decimal ||
                   fieldTypeKind == ServiceTypeKind.Enum);
        }
Exemplo n.º 15
0
 private protected HttpFieldInfo(ServiceFieldInfo fieldInfo)
 {
     ServiceField = fieldInfo;
 }
 public ServiceTypeInfo?GetFieldType(ServiceFieldInfo field) => Service.GetFieldType(field);
Exemplo n.º 17
0
 private static bool IsValidResponseBodyField(ServiceFieldInfo fieldInfo, ServiceInfo serviceInfo)
 {
     return(IsValidRequestBodyField(fieldInfo, serviceInfo) ||
            serviceInfo.GetFieldType(fieldInfo)?.Kind == ServiceTypeKind.Boolean);
 }
 public static string GetFieldPropertyName(ServiceFieldInfo fieldInfo)
 {
     return(TryGetJavaScriptName(fieldInfo) ?? CodeGenUtility.Capitalize(fieldInfo.Name));
 }
Exemplo n.º 19
0
 /// <summary>
 /// Gets the property name for the specified field.
 /// </summary>
 public string GetFieldPropertyName(ServiceFieldInfo field) =>
 m_fieldPropertyNames.TryGetValue(field, out var value) ? value : CodeGenUtility.Capitalize(field.Name);
Exemplo n.º 20
0
 private static bool IsValidHeaderField(ServiceFieldInfo fieldInfo, ServiceInfo serviceInfo)
 {
     return(serviceInfo.GetFieldType(fieldInfo).Kind == ServiceTypeKind.String);
 }