Exemple #1
0
 public GenSdk(
     IApiDescriptionGroupCollectionProvider apiDescriptionsProvider,
     IOptions <MvcJsonOptions> mvcJsonOpts,
     ILogger <GenSdk> logger)
 {
     _logger = logger;
     _apiDescriptionsProvider = apiDescriptionsProvider;
     _jsonSerializerSettings  = mvcJsonOpts.Value.SerializerSettings;
     _tsGen = new TypescriptGenerator(mvcJsonOpts.Value?.SerializerSettings?.ContractResolver
                                      ?? new DefaultContractResolver());
 }
Exemple #2
0
        private static string getApiErrors(GenSdkOptions opts, TypescriptGenerator tsGen)
        {
            IEnumerable <Type> apiErrors = typeof(ApiError).GetTypeInfo().Assembly
                                           .GetTypes()
                                           .Where(t => typeof(ApiError).IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract)
                                           .Select(t => t);

            var errorDefinitions = new List <ErrorDefinition>();

            foreach (var t in apiErrors)
            {
                var bt = t.GetTypeInfo().BaseType;

                if (bt == typeof(ApiError))
                {
                    errorDefinitions.Add(new ErrorDefinition()
                    {
                        Error    = t.Name,
                        DataType = null
                    });
                    continue;
                }
                else if (bt.IsConstructedGenericType &&
                         bt.GetTypeInfo().GetGenericTypeDefinition() == typeof(ApiError <>))
                {
                    var dataType = bt.GenericTypeArguments[0];
                    tsGen.Generate(dataType);
                    errorDefinitions.Add(new ErrorDefinition()
                    {
                        Error    = t.Name,
                        DataType = dataType
                    });
                    continue;
                }
            }

            var errs = new List <string>();

            foreach (var def in errorDefinitions)
            {
                errs.Add(opts.GetApiPromiseErrorFormat(def.Error, def.DataType != null ? tsGen.Generate(def.DataType) : "null"));
            }

            return(opts.GetApiPromiseFormat(apiErrors: indentAllButFirstLine(string.Join("\r\n", errs))));
        }