public async Task <IActionResult> AddProfile(string subject, [FromBody] LinkProfileRequest linkProfileRequest)
        {
            if (string.IsNullOrWhiteSpace(subject))
            {
                return(BuildMissingParameter(nameof(subject)));
            }

            if (linkProfileRequest == null)
            {
                return(BuildMissingParameter(nameof(linkProfileRequest)));
            }

            await _profileActions.Link(subject, linkProfileRequest.UserId, linkProfileRequest.Issuer, linkProfileRequest.Force);

            return(new NoContentResult());
        }
        public Task <BaseResponse> Execute(string requestUrl, LinkProfileRequest linkProfileRequest, string authorizationHeaderValue = null)
        {
            if (string.IsNullOrWhiteSpace(requestUrl))
            {
                throw new ArgumentException(nameof(requestUrl));
            }

            if (linkProfileRequest == null)
            {
                throw new ArgumentNullException(nameof(linkProfileRequest));
            }

            var url = requestUrl + "/.me";

            return(Link(url, linkProfileRequest, authorizationHeaderValue));
        }
        private async Task <BaseResponse> Link(string requestUrl, LinkProfileRequest linkProfileRequest, string authorizationHeaderValue = null)
        {
            var httpClient = _httpClientFactory.GetHttpClient();
            var json       = JsonConvert.SerializeObject(linkProfileRequest, new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            });
            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                Content    = new StringContent(json),
                RequestUri = new Uri(requestUrl)
            };

            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            if (!string.IsNullOrWhiteSpace(authorizationHeaderValue))
            {
                request.Headers.Add("Authorization", "Bearer " + authorizationHeaderValue);
            }

            var result = await httpClient.SendAsync(request).ConfigureAwait(false);

            var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

            try
            {
                result.EnsureSuccessStatusCode();
            }
            catch (Exception)
            {
                return(new BaseResponse
                {
                    ContainsError = true,
                    Error = JsonConvert.DeserializeObject <ErrorResponse>(content),
                    HttpStatus = result.StatusCode
                });
            }

            return(new BaseResponse());
        }
Example #4
0
 public Task <BaseResponse> LinkProfile(string requestUrl, string currentSubject, LinkProfileRequest linkProfileRequest, string authorizationHeaderValue = null)
 {
     return(_linkProfileOperation.Execute(requestUrl, currentSubject, linkProfileRequest, authorizationHeaderValue));
 }
 public Task <IActionResult> AddProfile([FromBody] LinkProfileRequest linkProfileRequest)
 {
     return(AddProfile(User.GetSubject(), linkProfileRequest));
 }