/// <summary> /// Adds users email to the database with their chosen match objects. /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public async Task <APIGatewayProxyResponse> ConfirmSubscribe(APIGatewayProxyRequest request, ILambdaContext context) { var logger = new Esk8LambdaLogger(context.Logger); logger.Log("Confirm Subscribe endpoint reached"); if (request.QueryStringParameters.ContainsKey("confirmkey")) { string encryptionkey = Environment.GetEnvironmentVariable("ESK8BST_ENCRYPTION_KEY"); string b64payload = request.QueryStringParameters["confirmkey"]; logger.Log("Received this as the confirm key: " + request.QueryStringParameters["confirmkey"]); string decrypted = EncryptorService.DecryptConfirmKey(b64payload, encryptionkey); PostedSubscribeObject pso = null; try { JObject jobj = JObject.Parse(decrypted); pso = PostedSubscribeObject.FromJson(jobj); } catch (Exception e) { logger.Log($"Tried to parse malformed json and failed at Confirm Subscribe: {e.Message}"); return(new APIGatewayProxyResponse() { StatusCode = (int)HttpStatusCode.InternalServerError, Body = "Failed to parse json properly", Headers = new Dictionary <string, string> { { "Content-Type", "text/plain" } }, }); } if (pso != null && pso.Email.Contains("@") && pso.Matches.Count > 0) { FirestoreService FSS = new FirestoreService(logger); await FSS.UpsertSubscriber(pso); await FSS.InsertPreconfirmed(pso.Email); return(new APIGatewayProxyResponse() { StatusCode = (int)HttpStatusCode.Created, Body = "Alright! You've been confirmed as interested in receiving updates from https://esk8bst.com", Headers = new Dictionary <string, string> { { "Content-Type", "text/plain" } }, }); } } return(new APIGatewayProxyResponse() { StatusCode = (int)HttpStatusCode.BadRequest, Body = "Failed to properly parse the confirm link.", Headers = new Dictionary <string, string> { { "Content-Type", "text/plain" } }, }); }
public async Task CheckIsPreconfirmed() { string s = "*****@*****.**"; FirestoreService FSS = new FirestoreService(logger); await FSS.InsertPreconfirmed(s); bool isPreconfirmedFirst = await FSS.CheckIsPreconfirmed(s); bool isPreconfirmedSecond = await FSS.CheckIsPreconfirmed("lol"); Assert.True(isPreconfirmedFirst); Assert.False(isPreconfirmedSecond); }
public async Task TestInsertPreconfirmed() { string s = "*****@*****.**"; FirestoreService FSS = new FirestoreService(logger); await FSS.InsertPreconfirmed(s); }