示例#1
0
        private RestRequest FromRestCall <TBody, TResponse>(IJiraRestCall <TBody, TResponse> restCall)
        {
            var url = $"/rest/api/{(int)restCall.Version}/{restCall.Endpoint}";
            var req = new RestRequest(url, restCall.Method, DataFormat.Json);

            restCall.Body.MatchSome(e => req.AddJsonBody(e));
            return(req);
        }
示例#2
0
        /// <summary>
        /// Execute request
        /// </summary>
        /// <param name="restCall"></param>
        /// <param name="cancellation"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public Task <IRestResponse> ExecuteRawRequestAsync <TBody, TResponse>(
            IJiraRestCall <TBody, TResponse> restCall,
            CancellationToken cancellation = default
            )
        {
            var req = FromRestCall(restCall);

            return(_client.ExecuteAsync(req, cancellation));
        }
示例#3
0
        /// <summary>
        /// Execute request and deserialize response
        /// </summary>
        /// <param name="restCall"></param>
        /// <param name="cancellation"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public async Task <Option <TResponse> > ExecuteAsync <TBody, TResponse>(
            IJiraRestCall <TBody, TResponse> restCall,
            CancellationToken cancellation = default
            )
        {
            var res = await ExecuteRawRequestAsync(restCall, cancellation);

            if (!res.IsSuccessful)
            {
                return(None <TResponse>());
            }
            try
            {
                return(Some(JsonConvert.DeserializeObject <TResponse>(res.Content)).NotNull());
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
                return(None <TResponse>());
            }
        }