public async Task <LambdaProxyResponse> ExecuteFunction( CoffeeAPIGatewayRequest request, ILambdaContext context ) { var requestBody = FunctionBody.GenerateFromRepspnse(request); var ser = new JsonSerializer(); var htmlWeb = new HtmlWeb(); var document = htmlWeb.Load(requestBody.url); var ogImage = GetMetaValue(document, "og:image"); var title = GetTitle(document); var description = GetMetaValue(document, "description"); var coffeeData = new CoffeeData.CoffeeData { Title = title, Description = description, OGImage = ogImage, }; var memStream = new MemoryStream(); ser.Serialize(coffeeData, memStream); var body = memStream.ToString(); memStream.Flush(); return(new LambdaProxyResponse { statusCode = HttpStatusCode.OK, body = body, }); }
public async Task <LambdaProxyResponse> FunctionHandler( CoffeeAPIGatewayRequest request, ILambdaContext context ) { var resource = ResourceFactory.GetResource(request); if (resource == null) { context?.Logger.LogLine("No resource fond for path"); context?.Logger.LogLine(string.Format( "No resource fond for path[{0}]", request.Path )); return(new LambdaProxyResponse { statusCode = HttpStatusCode.NotFound, }); } context?.Logger.LogLine(string.Format( "Resource: {0}", resource.GetType().ToString() )); var verb = (HTTPVerb)Enum.Parse(typeof(HTTPVerb), request.HttpMethod); var function = resource.GetFunctionFromRequest(verb); if (function != null) { return(await function.ExecuteFunction(request, context)); } context?.Logger.LogLine("No function found for http verb"); return(new LambdaProxyResponse { statusCode = HttpStatusCode.NotFound, }); }
public Task <LambdaProxyResponse> ExecuteFunction(CoffeeAPIGatewayRequest request, ILambdaContext context) { // var message = new SlackMessage { // Text = "<!channel>: There has been a spill at the coffee machine!!", // IconUrl = new Uri("https://static1.squarespace.com/static/50a96108e4b0a8a5e3e2c959/5673222c9cadb60e5542d97e/5673223705f8e24f350ec97c/1450385982313/spilledcoffee_insta.jpg?format=1000w"), // }; // // var response = await new SlackClient(CoffeeConstants.WebhookURI).PostAsync(message); // // //context.Logger.LogLine(response.ErrorException.ToString()); // // return new LambdaProxyResponse { // statusCode = response.StatusCode, // body = string.Empty, // }; return(Task.Run( () => { return new LambdaProxyResponse { statusCode = HttpStatusCode.OK, body = string.Empty, }; })); }
public static FunctionBody GenerateFromRepspnse( CoffeeAPIGatewayRequest request ) { return(SerializerUtil.Deserialize <FunctionBody>(request.Body)); }
public static ResourceBase GetResource(CoffeeAPIGatewayRequest request) { return(Resources.ContainsKey(request.Path) ? (ResourceBase)Activator.CreateInstance(Resources[request.Path]) : null); }