This repository has the code to create git repositories through Slack. You do need to set up your credentials and possibly get a personal access token. See the class, "GitCredentials" for information on how to do that.
- Go to https://teamname.slack.com/apps.
- Click Manage, then, custom Integrations.
- Click Slash Commands
- Click Add Configuration.
0: Name it. /fakeorsomethin
- set a fake url temporarily.
- Click Method, Get (or Post if you feel super confident).
- Copy your Token and keep it secret, keep it safe.
- Give your command a custom name.
- Choose an icon that will represent your bot.
- Autocomplete Help Text -description will tell ppl what it does.
- AutoComplete Help Text -Usage Hint, just put variables in brackets to show parameters accepted. like this [req var1] [opt var2]
- Click Save Integration.
- After setting up your AWS account, got o your console.
- Under Compute, click Lambda.
- Select Create Function
- Author from Scratch
- Name it.
- RunTime C# (.NET Core 2.0)
- Assign a Basic permissions service role. You may need to create this.
- Create a role: I added lambda and edgelambda permissions.
- From your AWS Console, you can type "Gateway"
- Choose API Gateway, which will take you to: https://console.aws.amazon.com/apigateway/
- Be aware of your region, I chose East 1, which is currently N. Virginia.
- Select Create API, give it a name and description.
- Under Resources, currently near top, there should be a /. a button nearby currently says "actions". Select it.
- Create Method, choose Get. confirm.
- Choose Integration Type: Lambda Function.
- Lambda Region, choose the region you created it in, make it the same as the api gateway...
- Start typing in the Lambda Function textbox and then select your lambda function's name. Then Save.
- Click the box, Integration Request, then under Body Mapping templates, Request Body Passthrough: check Never.
- Click Add Mapping Template... name it: application/json.
- Add the following Code:
## convert HTML POST data or HTTP GET query string to JSON
## get the raw post data from the AWS built-in variable and give it a nicer name
#if ($context.httpMethod == "POST")
#set($rawAPIData = $input.path('$'))
#elseif ($context.httpMethod == "GET")
#set($rawAPIData = $input.params().querystring)
#set($rawAPIData = $rawAPIData.toString())
#set($rawAPIDataLength = $rawAPIData.length() - 1)
#set($rawAPIData = $rawAPIData.substring(1, $rawAPIDataLength))
#set($rawAPIData = $rawAPIData.replace(", ", "&"))
#else
#set($rawAPIData = "")
#end
## first we get the number of "&" in the string, this tells us if there is more than one key value pair
#set($countAmpersands = $rawAPIData.length() - $rawAPIData.replace("&", "").length())
## if there are no "&" at all then we have only one key value pair.
## we append an ampersand to the string so that we can tokenise it the same way as multiple kv pairs.
## the "empty" kv pair to the right of the ampersand will be ignored anyway.
#if ($countAmpersands == 0)
#set($rawPostData = $rawAPIData + "&")
#end
## now we tokenise using the ampersand(s)
#set($tokenisedAmpersand = $rawAPIData.split("&"))
## we set up a variable to hold the valid key value pairs
#set($tokenisedEquals = [])
## now we set up a loop to find the valid key value pairs, which must contain only one "="
#foreach( $kvPair in $tokenisedAmpersand )
#set($countEquals = $kvPair.length() - $kvPair.replace("=", "").length())
#if ($countEquals == 1)
#set($kvTokenised = $kvPair.split("="))
#if ($kvTokenised[0].length() > 0)
## we found a valid key value pair. add it to the list.
#set($devNull = $tokenisedEquals.add($kvPair))
#end
#end
#end
## next we set up our loop inside the output structure "{" and "}"
{
#foreach( $kvPair in $tokenisedEquals )
## finally we output the JSON for this pair and append a comma if this isn't the last pair
#set($kvTokenised = $kvPair.split("="))
"$util.urlDecode($kvTokenised[0])" : #if($kvTokenised[1].length() > 0)"$util.urlDecode($kvTokenised[1])"#{else}""#end#if( $foreach.hasNext ),#end
#end
}