public async Task <T> Execute <T>(IRestRequest request) where T : class { IRestClient client = _restSharpFactory.CreateClient(SLACK_URL); IRestResponse response = await client.ExecutePostTaskAsync(request); return(_responseVerifier.VerifyResponse <T>(response)); }
public async Task PostMessage(string slackKey, string channel, string text, IList <SlackAttachment> attachments) { var client = _restSharpFactory.CreateClient("https://slack.com"); var request = new RestRequest(SEND_MESSAGE_PATH); request.AddParameter("token", slackKey); request.AddParameter("channel", channel); request.AddParameter("text", text); request.AddParameter("as_user", "true"); if (attachments != null && attachments.Any()) { request.AddParameter("attachment", JsonConvert.SerializeObject(attachments)); } IRestResponse response = await client.ExecutePostTaskAsync(request); if (response.StatusCode != HttpStatusCode.OK) { throw new CommunicationException($"Error occured while posting message '{response.StatusCode}'"); } StandardResponse slackResponse = JsonConvert.DeserializeObject <StandardResponse>(response.Content); if (!slackResponse.Ok) { throw new CommunicationException($"Error occured while posting message '{slackResponse.Error}'"); } }
public async Task <Channel> JoinDirectMessageChannel(string slackKey, string user) { var client = _restSharpFactory.CreateClient("https://slack.com"); var request = new RestRequest(JOIN_DM_PATH); request.AddParameter("token", slackKey); request.AddParameter("user", user); IRestResponse response = await client.ExecutePostTaskAsync(request); if (response.StatusCode != HttpStatusCode.OK) { throw new CommunicationException($"Error occured while joining channel '{response.StatusCode}'"); } JoinChannelResponse slackResponse = JsonConvert.DeserializeObject <JoinChannelResponse>(response.Content); if (!slackResponse.Ok) { throw new CommunicationException($"Error occured while joining channel '{slackResponse.Error}'"); } return(slackResponse.Channel); }
/// <summary> /// Initializes a new instance of the <see cref="Stargate" /> class. /// </summary> /// <param name="options">The options.</param> /// <param name="resourceBuilderFactory">The resource builder factory.</param> /// <param name="restSharp">The RestSharp factory.</param> /// <param name="converterFactory">The converter factory.</param> /// <param name="errorProvider">The error provider.</param> /// <param name="scannerConverter">The scanner converter.</param> public Stargate(IStargateOptions options, Func <IStargateOptions, IResourceBuilder> resourceBuilderFactory, IRestSharpFactory restSharp, IMimeConverterFactory converterFactory, IErrorProvider errorProvider, IScannerOptionsConverter scannerConverter) { ResourceBuilder = resourceBuilderFactory(options); RestSharp = restSharp; ErrorProvider = errorProvider; ScannerConverter = scannerConverter; Client = RestSharp.CreateClient(options.ServerUrl); options.ContentType = string.IsNullOrEmpty(options.ContentType) ? DefaultContentType : options.ContentType; Converter = converterFactory.CreateConverter(options.ContentType); options.FalseRowKey = string.IsNullOrEmpty(options.FalseRowKey) ? DefaultFalseRowKey : options.FalseRowKey; Options = options; }
/// <summary> /// Initializes a new instance of the <see cref="Stargate" /> class. /// </summary> /// <param name="options">The options.</param> /// <param name="resourceBuilder">The resource builder.</param> /// <param name="restSharp">The RestSharp factory.</param> /// <param name="converterFactory">The converter factory.</param> /// <param name="errorProvider">The error provider.</param> /// <param name="scannerConverter">The scanner converter.</param> public Stargate(IStargateOptions options, IResourceBuilder resourceBuilder, IRestSharpFactory restSharp, IMimeConverterFactory converterFactory, IErrorProvider errorProvider, IScannerOptionsConverter scannerConverter) { _resourceBuilder = resourceBuilder; _restSharp = restSharp; _errorProvider = errorProvider; _scannerConverter = scannerConverter; _client = _restSharp.CreateClient(options.ServerUrl); options.ContentType = string.IsNullOrEmpty(options.ContentType) ? DefaultContentType : options.ContentType; _converter = converterFactory.CreateConverter(options.ContentType); options.FalseRowKey = string.IsNullOrEmpty(options.FalseRowKey) ? DefaultFalseRowKey : options.FalseRowKey; Options = options; }
public async Task <HandshakeResponse> FirmShake(string slackKey) { var request = new RestRequest(HANDSHAKE_PATH); request.AddParameter("token", slackKey); IRestClient client = _restSharpFactory.CreateClient("https://slack.com"); IRestResponse response = await client.ExecutePostTaskAsync(request); if (response.StatusCode != HttpStatusCode.OK) { throw new WebException($"An error occured while attemping to handshake with Slack. HttpStatus: {response.StatusCode}", response.ErrorException); } return(JsonConvert.DeserializeObject <HandshakeResponse>(response.Content)); }