Created
February 10, 2019 06:17
-
-
Save burtonr/ba12d9c1e0905b77344b41acbe147eb3 to your computer and use it in GitHub Desktop.
OpenFaaS Google Form Response Handler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Put your OpenFaaS gateway public URL here | |
var baseURL = "http://02626413.ngrok.io"; | |
var functionURL = "/function/signup-form"; | |
function onSubmit(entry) { | |
var response = entry.response.getItemResponses(); | |
var answers = {}; | |
for (var j = 0; j < response.length; j++) { | |
var itemResponse = response[j]; | |
answers[itemResponse.getItem().getTitle()] = itemResponse.getResponse(); | |
} | |
// Build request | |
var options = { | |
method: "post", | |
payload: JSON.stringify(answers) | |
}; | |
// Send to OpenFaaS | |
UrlFetchApp.fetch(baseURL + functionURL, options); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Newtonsoft.Json; | |
namespace Function | |
{ | |
public class FormResponse | |
{ | |
[JsonProperty("Email")] | |
public string Email { get; set; } | |
[JsonProperty("First Name")] | |
public string FirstName { get; set; } | |
[JsonProperty("Last Name")] | |
public string LastName { get; set; } | |
[JsonProperty("Company")] | |
public string Company { get; set; } | |
[JsonProperty("Location")] | |
public string Location { get; set; } | |
[JsonProperty("I'm joining to")] | |
public string JoinReason { get; set; } | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.IO; | |
using System.Text; | |
using Newtonsoft.Json; | |
using SlackAPI; | |
namespace Function | |
{ | |
public class FunctionHandler | |
{ | |
public string Handle(string input) { | |
FormResponse formResponse = JsonConvert.DeserializeObject<FormResponse>(input); | |
var message = FormatMessage(formResponse); | |
var slackSent = SendToSlack(message); | |
var fnResponse = $"Response recorded from {formResponse.Email}. Slack posted? {slackSent}"; | |
return fnResponse; | |
} | |
private string FormatMessage(FormResponse response) | |
{ | |
var msg = new StringBuilder(); | |
msg.Append($"{response.FirstName} {response.LastName} would like to join the Slack group!" ); | |
if (!string.IsNullOrWhiteSpace(response.Company)) | |
{ | |
msg.Append($"\nThey work at {response.Company}."); | |
} | |
if (!string.IsNullOrWhiteSpace(response.Location)) | |
{ | |
msg.Append($"\nThey say they're from {response.Location}"); | |
} | |
msg.Append($"\nThe reason they'd like to join is to {response.JoinReason}"); | |
msg.Append($"\nSend them an invite link to {response.Email}"); | |
return msg.ToString(); | |
} | |
private bool SendToSlack(string message) | |
{ | |
var token = GetSecret("slack-token"); | |
var client = new SlackTaskClient(token); | |
var channel = "signup"; | |
var response = client.PostMessageAsync(channel, message); | |
return response.Result.ok; | |
} | |
private string GetSecret(string name) | |
{ | |
try | |
{ | |
using (StreamReader sr = new StreamReader("/var/openfaas/secrets/slack-token")) | |
{ | |
String line = sr.ReadToEnd(); | |
return line; | |
} | |
} | |
catch (IOException e) | |
{ | |
Console.WriteLine("The file could not be read:"); | |
Console.WriteLine(e.Message); | |
return string.Empty; | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
provider: | |
name: faas | |
gateway: http://127.0.0.1:8080 | |
functions: | |
signup-form: | |
lang: csharp | |
handler: ./signup-form | |
image: signup-form:latest | |
secrets: | |
- slack-token |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment