Esempio n. 1
0
        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,
            });
        }
Esempio n. 2
0
        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,
            });
        }
Esempio n. 3
0
        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,
                };
            }));
        }
Esempio n. 4
0
 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);
 }