Skip to content

Commit

Permalink
Add distinct service for TypeScript module + index page for links to …
Browse files Browse the repository at this point in the history
…different languages
  • Loading branch information
mythz committed Oct 8, 2015
1 parent b3955bf commit 02d8664
Showing 1 changed file with 53 additions and 4 deletions.
57 changes: 53 additions & 4 deletions src/ServiceStack/NativeTypes/NativeTypesService.cs
Expand Up @@ -10,6 +10,22 @@

namespace ServiceStack.NativeTypes
{
[Exclude(Feature.Soap)]
[Route("/types")]
public class TypeLinks : NativeTypesBase, IReturn<TypeLinksResponse> { }

public class TypeLinksResponse
{
public string Metadata { get; set; }
public string Csharp { get; set; }
public string Fsharp { get; set; }
public string VbNet { get; set; }
public string TypeScript { get; set; }
public string TypeScriptDefinition { get; set; }
public string Java { get; set; }
public string Swift { get; set; }
}

[Exclude(Feature.Soap)]
[Route("/types/metadata")]
public class TypesMetadata : NativeTypesBase { }
Expand All @@ -27,9 +43,13 @@ public class TypesFSharp : NativeTypesBase { }
public class TypesVbNet : NativeTypesBase { }

[Exclude(Feature.Soap)]
[Route("/types/typescript.d")]
[Route("/types/typescript")]
public class TypesTypeScript : NativeTypesBase { }

[Exclude(Feature.Soap)]
[Route("/types/typescript.d")]
public class TypesTypeScriptDefinition : NativeTypesBase { }

[Exclude(Feature.Soap)]
[Route("/types/swift")]
public class TypesSwift : NativeTypesBase { }
Expand Down Expand Up @@ -83,6 +103,22 @@ public class NativeTypesService : Service
{
public INativeTypesMetadata NativeTypesMetadata { get; set; }

public object Any(TypeLinks request)
{
var response = new TypeLinksResponse
{
Metadata = new TypesMetadata().ToAbsoluteUri(),
Csharp = new TypesCSharp().ToAbsoluteUri(),
Fsharp = new TypesFSharp().ToAbsoluteUri(),
VbNet = new TypesVbNet().ToAbsoluteUri(),
TypeScript = new TypesTypeScript().ToAbsoluteUri(),
TypeScriptDefinition = new TypesTypeScriptDefinition().ToAbsoluteUri(),
Swift = new TypesSwift().ToAbsoluteUri(),
Java = new TypesJava().ToAbsoluteUri(),
};
return response;
}

public MetadataTypes Any(TypesMetadata request)
{
if (request.BaseUrl == null)
Expand Down Expand Up @@ -131,12 +167,24 @@ public object Any(TypesVbNet request)

[AddHeader(ContentType = MimeTypes.PlainText)]
public object Any(TypesTypeScript request)
{
var typesConfig = NativeTypesMetadata.GetConfig(request);
typesConfig.ExportAsTypes = true;

return GenerateTypeScript(request, typesConfig);
}

[AddHeader(ContentType = MimeTypes.PlainText)]
public object Any(TypesTypeScriptDefinition request)
{
return GenerateTypeScript(request, NativeTypesMetadata.GetConfig(request));
}

public string GenerateTypeScript(NativeTypesBase request, MetadataTypesConfig typesConfig)
{
if (request.BaseUrl == null)
request.BaseUrl = Request.GetBaseUrl();

var typesConfig = NativeTypesMetadata.GetConfig(request);

//Include SS types by removing ServiceStack namespaces
if (typesConfig.AddServiceStackTypes)
typesConfig.IgnoreTypesInNamespaces = new List<string>();
Expand All @@ -152,11 +200,12 @@ public object Any(TypesTypeScript request)
metadataTypes.Types.Insert(0, generator.ToType(typeof(IReturn<>)));
metadataTypes.Types.Insert(0, generator.ToType(typeof(IReturnVoid)));
}

var typeScript = new TypeScriptGenerator(typesConfig).GetCode(metadataTypes, base.Request, NativeTypesMetadata);
return typeScript;
}


[AddHeader(ContentType = MimeTypes.PlainText)]
public object Any(TypesSwift request)
{
Expand Down

0 comments on commit 02d8664

Please sign in to comment.