/*
* Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
namespace Amazon.Lambda.RuntimeSupport
{
///
/// Class to communicate with the Lambda Runtime API, handle initialization,
/// and run the invoke loop for an AWS Lambda function
///
public class LambdaBootstrapBuilder
{
private HandlerWrapper _handlerWrapper;
private HttpClient _httpClient;
private LambdaBootstrapInitializer _lambdaBootstrapInitializer;
private LambdaBootstrapBuilder(HandlerWrapper handlerWrapper)
{
this._handlerWrapper = handlerWrapper;
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Action handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func> handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func> handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func> handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func> handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func> handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Action handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Action handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Action handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Action handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Action handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Action handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
///
public static LambdaBootstrapBuilder Create(Func handler)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Create a builder for creating the LambdaBootstrap.
///
/// The handler that will be called for each Lambda invocation
/// The Lambda serializer that will be used to convert between Lambda's JSON documents and .NET objects.
///
public static LambdaBootstrapBuilder Create(Func handler, ILambdaSerializer serializer)
{
return new LambdaBootstrapBuilder(HandlerWrapper.GetHandlerWrapper(handler, serializer));
}
///
/// Configure the bootstrap to use a provided HttpClient
///
///
///
public LambdaBootstrapBuilder UseHttpClient(HttpClient httpClient)
{
_httpClient = httpClient;
return this;
}
///
/// Configure a custom bootstrap initalizer delegate
///
///
///
public LambdaBootstrapBuilder UseBootstrapHandler(LambdaBootstrapInitializer lambdaBootstrapInitializer)
{
_lambdaBootstrapInitializer = lambdaBootstrapInitializer;
return this;
}
public LambdaBootstrap Build()
{
if(_httpClient == null)
{
return new LambdaBootstrap(_handlerWrapper, _lambdaBootstrapInitializer);
}
return new LambdaBootstrap(_httpClient, _handlerWrapper, _lambdaBootstrapInitializer);
}
}
}