private Dictionary<string, MimeType> GetRequestMimeTypes(ApiDescription api) { var mediaTypes = api.SupportedRequestBodyFormatters.SelectMany(f => f.SupportedMediaTypes).ToArray(); var mimeTypes = new Dictionary<string, MimeType>(); var apiParam = api.ParameterDescriptions.FirstOrDefault(p => p.Source == ApiParameterSource.FromBody); MimeType mimeType = null; if (apiParam != null) { var type = apiParam.ParameterDescriptor.ParameterType; var schemaName = AddSchema(type); mimeType = new MimeType { Schema = schemaName }; } if(mimeType != null && !mediaTypes.Any()) mimeTypes.Add("application/json", mimeType); foreach (var mediaType in mediaTypes) { mimeTypes.Add(mediaType.MediaType, mediaType.MediaType == "application/json" ? mimeType : new MimeType()); } return mimeTypes; }
private string GetReturnTypeFromParameter(Method method, Resource resource, MimeType mimeType, string fullUrl, string returnType) { var type = schemaParameterParser.Parse(mimeType.Schema, resource, method, fullUrl); if (schemaObjects.Values.Any(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant())) { var apiObject = schemaObjects.Values .First(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant()); return GetTypeFromApiObject(apiObject); } if (schemaResponseObjects.Values.Any(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant())) { var apiObject = schemaResponseObjects.Values .First(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant()); return GetTypeFromApiObject(apiObject); } return returnType; }
// avois infinite recursion private string GetReturnTypeFromResponseWithoutCheckingResourceTypes(Method method, Resource resource, MimeType mimeType, string key, string responseCode, string fullUrl) { var returnType = GetNamedReturnType(method, resource, mimeType, fullUrl); if (!string.IsNullOrWhiteSpace(returnType)) return returnType; if (ResponseHasKey(key)) return GetReturnTypeFromResponseByKey(key); var responseKey = key + ParserHelpers.GetStatusCode(responseCode) + GeneratorServiceBase.ResponseContentSuffix; if (ResponseHasKey(responseKey)) return GetReturnTypeFromResponseByKey(responseKey); if (linkKeysWithObjectNames.ContainsKey(key)) { var linkedKey = linkKeysWithObjectNames[key]; if (ResponseHasKey(linkedKey)) return GetReturnTypeFromResponseByKey(linkedKey); } if (linkKeysWithObjectNames.ContainsKey(responseKey)) { var linkedKey = linkKeysWithObjectNames[responseKey]; if (ResponseHasKey(linkedKey)) return GetReturnTypeFromResponseByKey(linkedKey); } return returnType; }
private string GetReturnTypeFromName(MimeType mimeType, string returnType) { var type = mimeType.Schema.ToLowerInvariant(); if (schemaObjects.Values.Any(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant())) { var apiObject = schemaObjects.Values.First(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant()); returnType = GetTypeFromApiObject(apiObject); return returnType; } if (schemaResponseObjects.Values.Any(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant())) { var apiObject = schemaResponseObjects.Values.First(o => o.Name.ToLowerInvariant() == type.ToLowerInvariant()); return GetTypeFromApiObject(apiObject); } return returnType; }
private string GetNamedReturnType(Method method, Resource resource, MimeType mimeType, string fullUrl) { var returnType = string.Empty; if (mimeType.Schema.Contains("<<") && mimeType.Schema.Contains(">>")) { returnType = GetReturnTypeFromParameter(method, resource, mimeType, fullUrl, returnType); } else if (!mimeType.Schema.Contains("<") && !mimeType.Schema.Contains("{")) { returnType = GetReturnTypeFromName(mimeType, returnType); } return returnType; }
private string GetReturnTypeFromParameter(Method method, Resource resource, MimeType mimeType, string fullUrl, string returnType) { var type = schemaParameterParser.Parse(mimeType.Schema, resource, method, fullUrl); if (schemaResponseObjects.Values.Any(o => o.Properties.Any() && o.Name.ToLowerInvariant() == type.ToLowerInvariant())) { var apiObject = schemaResponseObjects.Values.First( o => o.Properties.Any() && o.Name.ToLowerInvariant() == type.ToLowerInvariant()); returnType = apiObject.IsArray ? CollectionTypeHelper.GetCollectionType(apiObject.Name) : apiObject.Name; } return returnType; }
private string GetReturnTypeFromName(MimeType mimeType, string returnType) { var type = mimeType.Schema.ToLowerInvariant(); if (schemaResponseObjects.Values.Any(o => o.Properties.Any() && o.Name.ToLowerInvariant() == type.ToLowerInvariant())) { var apiObject = schemaResponseObjects.Values.First(o => o.Properties.Any() && o.Name.ToLowerInvariant() == type.ToLowerInvariant()); returnType = apiObject.IsArray ? CollectionTypeHelper.GetCollectionType(apiObject.Name) : apiObject.Name; } return returnType; }
protected Dictionary<string, MimeType> CreateMimeTypes(MimeType mimeType) { var mimeTypes = new Dictionary<string, MimeType> { { "application/json", mimeType } }; return mimeTypes; }