Beispiel #1
0
        private string BuildUrl(TrelloWebHook webHook)
        {
            var properties = typeof(TrelloWebHook).GetProperties();

            var stringBuilder = new StringBuilder();

            foreach (var prop in properties)
            {
                var value = prop.GetValue(webHook);
                if (value == null ||
                    (value is string &&
                     string.IsNullOrWhiteSpace((string)value)))
                {
                    continue;
                }

                string valueString = null;

                if (value is string)
                {
                    valueString = (string)value;
                }
                else
                {
                    valueString = JsonConvert.SerializeObject(value);
                }

                stringBuilder.Append($"{ConvertToCamelCase(prop.Name)}={valueString}&");
            }

            var result = stringBuilder.ToString();

            return(result.Substring(0, result.Length - 1));
        }
Beispiel #2
0
        public async Task DeleteWebHookAsync(TrelloWebHook webHook)
        {
            await InitializeAsync();

            var url = $"{TRELLO_URL}/webhooks/{webHook.ID}?{KeyAndToken}";

            using (var response = await HttpClient.DeleteAsync(url))
            {
                response.EnsureSuccessStatusCode();
            }
        }
Beispiel #3
0
        public async Task SetAsync(TrelloWebHook webHook)
        {
            await InitializeAsync();

            var existingWebHooks = await GetWebHooksAsync();

            var match = (from wh in existingWebHooks
                         where wh.Match(webHook)
                         select wh).SingleOrDefault();

            if (match != null)
            {
                if (match?.Equals(webHook) ?? false)
                {
                    return;
                }

                var url = $"{BaseUrl}/{match.ID}?{KeyAndToken}&{BuildUrl(match)}";

                using (var content = new StringContent(string.Empty))
                    using (var response = await HttpClient.PutAsync(url, content))
                    {
                        var result = await content.ReadAsStringAsync();

                        response.EnsureSuccessStatusCode();
                    }
            }
            else
            {
                var url = $"{BaseUrl}?{KeyAndToken}&{BuildUrl(webHook)}";

                using (var content = new StringContent(string.Empty))
                    using (var response = await HttpClient.PostAsync(url, content))
                    {
                        response.EnsureSuccessStatusCode();
                    }
            }
        }