private static string ToJson(GetCourseByIdCriteria criteria)
        {
            GetCourseByIdJson json = new GetCourseByIdJson
            {
                id = criteria.Id.ToString()
            };

            return(JsonConvert.SerializeObject(json));
        }
        public async Task <Result <Course> > GetCourseByIdAsync(GetCourseByIdCriteria criteria)
        {
            if (criteria == null)
            {
                throw new ArgumentNullException(nameof(criteria));
            }

            try
            {
                var content = new StringContent(ToJson(criteria), Encoding.UTF8, "application/json");

                _httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _settings.ApiKey);
                var response = await _httpClient.GetAsync(new Uri(_getCourseByIdUri.AbsoluteUri + "?id=" + criteria.Id));

                if (response.IsSuccessStatusCode)
                {
                    var json = await response.Content.ReadAsStringAsync();

                    var course = JsonConvert.DeserializeObject <Course>(json);

                    return(Result.Ok(course));
                }
                else
                {
                    return(Result.Fail <Course>("Get Course By Id service unsuccessful http response"));
                }
            }
            catch (HttpRequestException hre)
            {
                _logger.LogError(hre, "Get Course By Id service http request error");
                return(Result.Fail <Course>("Get Course By Id service http request error."));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Get Course By Id service unknown error.");

                return(Result.Fail <Course>("Get Course By Id service unknown error."));
            }
        }