Skip to content

Commit

Permalink
Revert "Add WrapResponses to Angular client"
Browse files Browse the repository at this point in the history
This reverts commit d3eddb7.
  • Loading branch information
quails4Eva committed Aug 20, 2017
1 parent d3eddb7 commit 4ff9543
Show file tree
Hide file tree
Showing 13 changed files with 201 additions and 490 deletions.
Expand Up @@ -42,10 +42,6 @@ public class TypeScriptClientTemplateModel
Operations = operations;

BaseClass = _settings.ClientBaseClass?.Replace("{controller}", controllerName);

ResponseClass = settings.ResponseClass;
//ResponseClass = settings.ResponseClass.Replace("{controller}", controllerName);
WrapResponses = settings.WrapResponses;
}

/// <summary>Gets the class name.</summary>
Expand Down Expand Up @@ -116,11 +112,5 @@ public class TypeScriptClientTemplateModel

/// <summary>Gets or sets a value indicating whether DTO exceptions are wrapped in a SwaggerException instance.</summary>
public bool WrapDtoExceptions => _settings.WrapDtoExceptions;

/// <summary>Gets a value indicating whether to wrap success responses to allow full response access.</summary>
public bool WrapResponses { get; set; }

/// <summary>Gets the response class name.</summary>
public string ResponseClass { get; protected set; }
}
}
Expand Up @@ -69,30 +69,6 @@ public class TypeScriptFileTemplateModel
/// <summary>Gets or sets a value indicating whether DTO exceptions are wrapped in a SwaggerException instance.</summary>
public bool WrapDtoExceptions => _settings.WrapDtoExceptions;

/// <summary>Gets or sets a value indicating whether to wrap success responses to allow full response access.</summary>
public bool WrapResponses => _settings.WrapResponses;

///// <summary>Gets the response class name.</summary>
//public string ResponseClass => this._settings.ResponseClass;

/// <summary>Gets or sets a value indicating whether to generate the response class (only applied when WrapResponses == true, default: true).</summary>
public bool GenerateResponseClasses => _settings.GenerateResponseClasses;

/// <summary>Gets the response class names.</summary>
public IEnumerable<string> ResponseClassNames {
get {
if (_settings.OperationNameGenerator.SupportsMultipleClients) {
return _document.Operations
.GroupBy(o => _settings.OperationNameGenerator.GetClientName(_document, o.Path, o.Method, o.Operation))
.Select(g => _settings.ResponseClass.Replace("{controller}", g.Key))
.Where(a => _settings.TypeScriptGeneratorSettings.ExcludedTypeNames?.Contains(a) != true)
.Distinct();
}

return new[] { _settings.ResponseClass.Replace("{controller}", string.Empty) };
}
}

/// <summary>Gets a value indicating whether MomentJS is required.</summary>
public bool RequiresMomentJS => _settings.TypeScriptGeneratorSettings.DateTimeType == TypeScriptDateTimeType.MomentJS;

Expand Down
Expand Up @@ -15,7 +15,7 @@ namespace NSwag.CodeGeneration.TypeScript.Models
{
/// <summary>The TypeScript operation model.</summary>
public class TypeScriptOperationModel : OperationModelBase<TypeScriptParameterModel, TypeScriptResponseModel>
{
{
private readonly SwaggerToTypeScriptClientGeneratorSettings _settings;
private readonly SwaggerToTypeScriptClientGenerator _generator;
private readonly SwaggerOperation _operation;
Expand All @@ -31,7 +31,7 @@ public class TypeScriptOperationModel : OperationModelBase<TypeScriptParameterMo
SwaggerToTypeScriptClientGenerator generator,
ITypeResolver resolver)
: base(null, operation, resolver, generator, settings)
{
{
_operation = operation;
_settings = settings;
_generator = generator;
Expand All @@ -55,22 +55,8 @@ public class TypeScriptOperationModel : OperationModelBase<TypeScriptParameterMo
public string ActualOperationNameUpper => ConversionUtilities.ConvertToUpperCamelCase(OperationName, false);

/// <summary>Gets or sets the type of the result.</summary>
public override string ResultType {
get {
var resultType = SupportsStrictNullChecks && UnwrappedResultType != "void" && UnwrappedResultType != "null"
? UnwrappedResultType + " | null"
: UnwrappedResultType;
if (_settings != null && _settings.WrapResponses) {
resultType = resultType == "void"
? _settings.ResponseClass + "Base"
: _settings.ResponseClass + "<" + resultType.Replace("{controller}", ControllerName) + ">";
}
return resultType;
}
}

public bool WrapResponses => this._settings.WrapResponses;
public string ResponseClass => this._settings.ResponseClass;
public override string ResultType => SupportsStrictNullChecks && UnwrappedResultType != "void" && UnwrappedResultType != "null" ?
UnwrappedResultType + " | null" : UnwrappedResultType;

/// <summary>Gets a value indicating whether the operation requires mappings for DTO generation.</summary>
public bool RequiresMappings => Responses.Any(r => r.HasType && r.ActualResponseSchema.UsesComplexObjectSchema());
Expand Down
Expand Up @@ -30,8 +30,6 @@ public SwaggerToTypeScriptClientGeneratorSettings()
};
BaseUrlTokenName = "API_BASE_URL";
ImportRequiredTypes = true;
ResponseClass = "SwaggerResponse";
this.GenerateResponseClasses = true;
}

/// <summary>Gets or sets the TypeScript generator settings.</summary>
Expand Down Expand Up @@ -73,15 +71,6 @@ public SwaggerToTypeScriptClientGeneratorSettings()
/// <summary>Gets or sets a value indicating whether to use the 'getBaseUrl(defaultUrl: string)' from the base class (default: false).</summary>
public bool UseGetBaseUrlMethod { get; set; }

/// <summary>Gets or sets a value indicating whether to wrap success responses to allow full response access (experimental).</summary>
public bool WrapResponses { get; set; }

/// <summary>Gets or sets a value indicating whether to generate the response classes (only needed when WrapResponses == true, default: true).</summary>
public bool GenerateResponseClasses { get; set; }

/// <summary>Gets or sets the name of the response class (supports the '{controller}' placeholder).</summary>
public string ResponseClass { get; set; }

internal ITemplate CreateTemplate(object model)
{
if (Template == TypeScriptTemplate.Aurelia)
Expand Down
Expand Up @@ -873,15 +873,15 @@ public virtual string TransformText()
this.Write(" } catch (e) {\r\n return <Observable<");

#line 102 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\AngularClientTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(operation.ResultType));
this.Write(this.ToStringHelper.ToStringWithCulture(operation.UnwrappedResultType));

#line default
#line hidden
this.Write(">><any>Observable.throw(e);\r\n }\r\n } else\r\n " +
" return <Observable<");

#line 105 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\AngularClientTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(operation.ResultType));
this.Write(this.ToStringHelper.ToStringWithCulture(operation.UnwrappedResultType));

#line default
#line hidden
Expand Down
Expand Up @@ -99,10 +99,10 @@ export class <#=Model.Class#> <#if(Model.HasBaseClass){#>extends <#=Model.BaseCl
return this.process<#=operation.ActualOperationNameUpper#>(response_);
<#}#>
} catch (e) {
return <Observable<<#=operation.ResultType#>>><any>Observable.throw(e);
return <Observable<<#=operation.UnwrappedResultType#>>><any>Observable.throw(e);
}
} else
return <Observable<<#=operation.ResultType#>>><any>Observable.throw(response_);
return <Observable<<#=operation.UnwrappedResultType#>>><any>Observable.throw(response_);
});
}

Expand Down
108 changes: 23 additions & 85 deletions src/NSwag.CodeGeneration.TypeScript/Templates/FileTemplate.cs
Expand Up @@ -202,145 +202,83 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("\r\n");

#line 57 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if (Model.WrapResponses && Model.GenerateResponseClasses && Model.IsAngular){

#line default
#line hidden
this.Write("\r\n");

#line 59 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
foreach (var responseClassName in Model.ResponseClassNames){

#line default
#line hidden
this.Write(" export class ");

#line 60 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(responseClassName));

#line default
#line hidden
this.Write(@"Base
{
public statusCode: number;
public headers: object;
public constructor(statusCode: number, headers: object)
{
this.statusCode = statusCode;
this.headers = headers;
}
}
export class ");

#line 72 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(responseClassName));

#line default
#line hidden
this.Write("<TResult> extends ");

#line 72 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(responseClassName));

#line default
#line hidden
this.Write("Base {\r\n public result: TResult;\r\n \r\n public constructor(sta" +
"tusCode: number, headers: object, result: TResult) \r\n {\r\n\t\t\tsuper(statusC" +
"ode, headers);\r\n this.result = result;\r\n }\r\n }\r\n");

#line 81 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 82 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 83 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 56 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.GenerateClientClasses && Model.IsAngular){

#line default
#line hidden
this.Write("export const ");

#line 84 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 57 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.BaseUrlTokenName));

#line default
#line hidden
this.Write(" = new OpaqueToken(\'");

#line 84 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 57 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.BaseUrlTokenName));

#line default
#line hidden
this.Write("\');\r\n\r\n");

#line 86 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 59 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 87 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 60 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ExtensionCodeTop));

#line default
#line hidden
this.Write("\r\n\r\n");

#line 89 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 62 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.Clients));

#line default
#line hidden
this.Write("\r\n\r\n");

#line 91 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 64 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.Types));

#line default
#line hidden
this.Write("\r\n\r\n");

#line 93 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 66 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.RequiresFileParameterInterface){

#line default
#line hidden
this.Write("export interface FileParameter {\r\n data: any;\r\n fileName: string;\r\n}\r\n\r\n");

#line 99 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 72 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 100 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 73 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.RequiresFileResponseInterface){

#line default
#line hidden
this.Write("export interface FileResponse {\r\n data: Blob;\r\n\tstatus: number;\r\n fileName?" +
": string;\r\n\theaders?: { [name: string]: any };\r\n}\r\n\r\n");

#line 108 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 81 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 109 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 82 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.RequiresSwaggerExceptionClass){

#line default
Expand All @@ -363,73 +301,73 @@ public constructor(statusCode: number, headers: object)
");

#line 126 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 99 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 127 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 100 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.GenerateClientClasses){

#line default
#line hidden

#line 128 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 101 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeScriptTemplatePartGenerator.RenderClientMethodsCode(Model, 0)));

#line default
#line hidden
this.Write("\r\n\r\n");

#line 130 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 103 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.HandleReferences){

#line default
#line hidden

#line 131 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 104 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ReferenceHandlingCode));

#line default
#line hidden
this.Write("\r\n");

#line 132 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 105 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 133 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 106 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
#line hidden

#line 134 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 107 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ExtensionCodeBottom));

#line default
#line hidden
this.Write("\r\n");

#line 135 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 108 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
if(Model.HasNamespace){

#line default
#line hidden
this.Write("}\r\n");

#line 137 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 110 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}
if(Model.HasModuleName){

#line default
#line hidden
this.Write("}\r\n");

#line 140 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
#line 113 "C:\Data\Projects\NSwag\src\NSwag.CodeGeneration.TypeScript\Templates\FileTemplate.tt"
}

#line default
Expand Down

0 comments on commit 4ff9543

Please sign in to comment.