Example #1
0
        public async Task <IHttpActionResult> Upload()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new Exception(); // divided by zero
            }
            var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);

            foreach (var file in provider.Contents)
            {
                var filename = file.Headers.ContentDisposition.FileName.Trim('\"');

                if (file.Headers.ContentType.MediaType != MediaTypeNames.Text.Plain)
                {
                    return(BadRequest("Invalid file type. Only plain-text files are allowed."));
                }
                var buffer = await file.ReadAsStringAsync();

                var cache = ConnectionMultiplexer.GetDatabase();
                var markovChainCreator = new MarkovChainCreator(cache);
                var numWordsAdded      = markovChainCreator.LoadTextWithSentences(buffer);
                return(Ok(numWordsAdded));
            }

            return(Ok());
        }
Example #2
0
        public HttpResponseMessage ReceiveSlackOutgoingMessage()
        {
            var requestContent = Request.Content;
            var stringContent  = requestContent.ReadAsStringAsync().Result;
            var values         = stringContent.Split('&')
                                 .Select(str => str.Split('='))
                                 .ToDictionary(arr => arr[0], arr => arr[1]);

            // dont listen to yourself
            if (values[UserNameKey] == MilkBotName)
            {
                return(ConstructResponseMessage(HttpStatusCode.OK));
            }

            var decodedMsg = HttpUtility.HtmlDecode(HttpUtility.UrlDecode(values[TextKey]));

            var cache = ConnectionMultiplexer.GetDatabase();
            var markovChainCreator = new MarkovChainCreator(cache);

            markovChainCreator.LoadString(decodedMsg);

            return(ConstructResponseMessage(HttpStatusCode.OK));
        }