Пример #1
0
        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));
        }
Пример #2
0
        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}'");
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 /// <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;
 }
Пример #5
0
		/// <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;
		}
Пример #6
0
        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));
        }