Skip to content

Instantly share code, notes, and snippets.

View ivanmartinvalle's full-sized avatar

Ivan Valle ivanmartinvalle

View GitHub Profile
@ivanmartinvalle
ivanmartinvalle / Program.cs
Created April 25, 2016 20:39
Self-hosted Web API Windows service with OWIN and Topshelf
using Microsoft.Owin.Hosting;
using Owin;
using System;
using System.Web.Http;
using Topshelf;
namespace SelfHostDemo
{
public class Program
{
@ivanmartinvalle
ivanmartinvalle / RequestBufferingMiddleware.cs
Created April 25, 2016 18:45
OWIN Middleware for allowing reading of the request stream multiple times
using Microsoft.Owin;
using System.IO;
using System.Threading.Tasks;
namespace uShip.Microservice.WebApi.Framework
{
/// <summary>
/// Buffers the request stream to allow for reading multiple times.
/// The Katana (OWIN implementation) implementation of request streams
/// is different than that of IIS.
@ivanmartinvalle
ivanmartinvalle / OwinContextMiddleware.cs
Created April 25, 2016 17:08
OWIN Middleware for HttpContext.Current-like behavior with IOwinContext
using Microsoft.Owin;
using System.Runtime.Remoting.Messaging;
using System.Threading.Tasks;
namespace uShip.Microservice.WebApi.Framework
{
/// <summary>
/// Sets the current <see cref="IOwinContext"/> for later access via <see cref="OwinCallContext.Current"/>.
/// Inspiration: https://github.com/neuecc/OwinRequestScopeContext
/// </summary>
@ivanmartinvalle
ivanmartinvalle / ResultAdapter.java
Created April 9, 2015 22:58
Play Framework Java Result Adapter
import play.api.libs.iteratee.Enumerator;
import play.api.mvc.ResponseHeader;
import play.api.mvc.Result;
import scala.Enumeration;
import scala.Tuple2;
import scala.collection.JavaConversions;
import scala.collection.mutable.Buffer;
import java.util.ArrayList;
import java.util.List;
@ivanmartinvalle
ivanmartinvalle / Global.java
Created April 9, 2015 22:50
Play Framework Java Filter Registration
import play.GlobalSettings;
import play.api.mvc.EssentialFilter;
public class Global extends GlobalSettings {
@Override
public <T extends EssentialFilter> Class<T>[] filters() {
return new Class[] {HelloFilter.class};
}
@ivanmartinvalle
ivanmartinvalle / HelloFilter.java
Created April 9, 2015 22:49
Play Framework Java Filter Implementation Example
import play.api.mvc.RequestHeader;
import play.api.mvc.Result;
public class HelloFilter extends JavaFilter {
@Override
public Result Apply(Result currentResult, RequestHeader requestHeader) {
if (requestHeader.headers().get("X-Filter").isDefined()) {
ResultAdapter resultAdapter = new ResultAdapter(currentResult);
return resultAdapter.WithHeader("X-Hello", "World!");
@ivanmartinvalle
ivanmartinvalle / JavaFilter.java
Last active August 29, 2015 14:18
Play Framework Java Filter
import play.api.mvc.*;
import scala.Function1;
import scala.concurrent.Future;
import scala.runtime.AbstractFunction1;
public abstract class JavaFilter implements Filter {
@Override
public Future<Result> apply(Function1<RequestHeader, Future<Result>> nextFilter, RequestHeader requestHeader) {
return nextFilter