public void Save(SlackAuthInfo info)
        {
            var slackUser = new SlackUser
            {
                AccessToken = info.AccessToken,
                TeamName    = info.TeamName,
                Filter      = new SlackNotificationFilter()
            };
            var repo = ServiceLocator.Instance.GetInstance <SlackUserRepository>();

            repo.Save(slackUser);
        }
        public Task <SlackAuthInfo> ProcessAuth(string code)
        {
            return(Task.Run(() =>
            {
                using (var client = new HttpClient())
                {
                    var url = $"https://slack.com/api/oauth.access?client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}&code={code}";
                    client.Timeout = TimeSpan.FromSeconds(10);
                    var task = client.GetStringAsync(url);
                    task.Wait();
                    var json = DynamicJson.Parse(task.Result);
                    if (!json.ok)
                    {
                        throw new SlackAuthException(json.error);
                    }

                    var slackAuthInfo = new SlackAuthInfo(json.access_token, json.scope, json.user_id, json.team_name, json.team_id);
                    return slackAuthInfo;
                }
            }));
        }