Skip to content

amacal/omlet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

omlet

  • integrates nancy and json-schema
enable omlet in nancy
public class Bootstrapper : DefaultNancyBootstrapper
{
  protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
  {
    base.ApplicationStartup(container, pipelines);
    OmletSchema.Enable(container, pipelines);
  }
}
define schema for a route
public class UsersModule : NancyModule
{
  public UsersModule()
  {
    Get["/users/search"] =
      this.WithSchema(x => SearchUsers(x.name))
          .OnRequest("/schemas/users-search")
          .OnResponse(HttpStatusCode.OK, "/schemas/user-search-200");
  }

  private Response SearchUsers(string name)
  {
    return HttpStatusCode.OK;
  }
}
define custom schema handler
public class SchemaHandler : ISchemaHandler
{
  public Response OnBrokenRequest(NancyContext context,
                                  Request request,
                                  IResponseFormatter formatter,
                                  ICollection<JsonSchemaMessage> violations)
  {
    var result = new
    {
      errors = violations.Select(x => $"{x.Path}: {x.Message}").ToArray()
    };

    return formatter.AsJson(result, HttpStatusCode.BadRequest);
  }

  public Response OnBrokerResponse(NancyContext context,
                                   Request request,
                                   Response response,
                                   IResponseFormatter formatter,
                                   ICollection<JsonSchemaMessage> violations)
  {
    return HttpStatusCode.InternalError;
  }
}

About

Omlet Nancy Extension

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published