-UriBuilder removed
-Refactor in identity urls
This commit is contained in:
parent
cc034183aa
commit
c5234ab1c1
@ -1,4 +1,6 @@
|
||||
namespace eShopOnContainers.Core
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core
|
||||
{
|
||||
public class GlobalSetting
|
||||
{
|
||||
@ -59,7 +61,7 @@
|
||||
|
||||
public string RegisterWebsite { get; set; }
|
||||
|
||||
public string IdentityEndpoint { get; set; }
|
||||
public string AuthorizeEndpoint { get; set; }
|
||||
|
||||
public string UserInfoEndpoint { get; set; }
|
||||
|
||||
@ -67,7 +69,7 @@
|
||||
|
||||
public string LogoutEndpoint { get; set; }
|
||||
|
||||
public string IdentityCallback { get; set; }
|
||||
public string Callback { get; set; }
|
||||
|
||||
public string LogoutCallback { get; set; }
|
||||
|
||||
@ -77,27 +79,35 @@
|
||||
|
||||
private void UpdateEndpoint(string endpoint)
|
||||
{
|
||||
var identityBaseEndpoint = $"{endpoint}/identity";
|
||||
RegisterWebsite = $"{identityBaseEndpoint}/Account/Register";
|
||||
LogoutCallback = $"{identityBaseEndpoint}/Account/Redirecting";
|
||||
RegisterWebsite = $"{endpoint}/Account/Register";
|
||||
LogoutCallback = $"{endpoint}/Account/Redirecting";
|
||||
|
||||
var connectBaseEndpoint = $"{identityBaseEndpoint}/connect";
|
||||
IdentityEndpoint = $"{connectBaseEndpoint}/authorize";
|
||||
var connectBaseEndpoint = $"{endpoint}/connect";
|
||||
AuthorizeEndpoint = $"{connectBaseEndpoint}/authorize";
|
||||
UserInfoEndpoint = $"{connectBaseEndpoint}/userinfo";
|
||||
TokenEndpoint = $"{connectBaseEndpoint}/token";
|
||||
LogoutEndpoint = $"{connectBaseEndpoint}/endsession";
|
||||
|
||||
IdentityCallback = $"{endpoint}/xamarincallback";
|
||||
var baseUri = ExtractBaseUri(endpoint);
|
||||
Callback = $"{baseUri}/xamarincallback";
|
||||
}
|
||||
|
||||
private void UpdateGatewayShoppingEndpoint(string endpoint)
|
||||
{
|
||||
GatewayShoppingEndpoint = $"{endpoint}/mobileshoppingapigw";
|
||||
GatewayShoppingEndpoint = $"{endpoint}";
|
||||
}
|
||||
|
||||
private void UpdateGatewayMarketingEndpoint(string endpoint)
|
||||
{
|
||||
GatewayMarketingEndpoint = $"{endpoint}/mobilemarketingapigw";
|
||||
GatewayMarketingEndpoint = $"{endpoint}";
|
||||
}
|
||||
|
||||
private string ExtractBaseUri(string endpoint)
|
||||
{
|
||||
var uri = new Uri(endpoint);
|
||||
var baseUri = uri.GetLeftPart(System.UriPartial.Authority);
|
||||
|
||||
return baseUri;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace eShopOnContainers.Core.Helpers
|
||||
{
|
||||
public static class UriHelper
|
||||
{
|
||||
public static string CombineUri(params string[] uriParts)
|
||||
{
|
||||
string uri = string.Empty;
|
||||
if (uriParts != null && uriParts.Count() > 0)
|
||||
{
|
||||
char[] trims = new char[] { '\\', '/' };
|
||||
uri = (uriParts[0] ?? string.Empty).TrimEnd(trims);
|
||||
for (int i = 1; i < uriParts.Count(); i++)
|
||||
{
|
||||
uri = string.Format("{0}/{1}", uri.TrimEnd(trims), (uriParts[i] ?? string.Empty).TrimStart(trims));
|
||||
}
|
||||
}
|
||||
return uri;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Basket
|
||||
{
|
||||
@ -21,12 +22,7 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
public async Task<CustomerBasket> GetBasketAsync(string guidUser, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint)
|
||||
{
|
||||
Path = $"{ApiUrlBase}/{guidUser}"
|
||||
};
|
||||
|
||||
var uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/{guidUser}");
|
||||
|
||||
CustomerBasket basket;
|
||||
|
||||
@ -45,35 +41,23 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
public async Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint)
|
||||
{
|
||||
Path = ApiUrlBase
|
||||
};
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, ApiUrlBase);
|
||||
|
||||
var uri = builder.ToString();
|
||||
var result = await _requestProvider.PostAsync(uri, customerBasket, token);
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task CheckoutAsync(BasketCheckout basketCheckout, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint)
|
||||
{
|
||||
Path = $"{ApiUrlBase}/checkout"
|
||||
};
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/checkout");
|
||||
|
||||
var uri = builder.ToString();
|
||||
await _requestProvider.PostAsync(uri, basketCheckout, token);
|
||||
}
|
||||
|
||||
public async Task ClearBasketAsync(string guidUser, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint)
|
||||
{
|
||||
Path = $"{ApiUrlBase}/{guidUser}"
|
||||
};
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/{guidUser}");
|
||||
|
||||
var uri = builder.ToString();
|
||||
await _requestProvider.DeleteAsync(uri, token);
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Extensions;
|
||||
using System.Collections.Generic;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Catalog
|
||||
{
|
||||
@ -24,9 +25,7 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
public async Task<ObservableCollection<CatalogItem>> FilterAsync(int catalogBrandId, int catalogTypeId)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/items/type/{catalogTypeId}/brand/{catalogBrandId}";
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/items/type/{catalogTypeId}/brand/{catalogBrandId}");
|
||||
|
||||
CatalogRoot catalog = await _requestProvider.GetAsync<CatalogRoot>(uri);
|
||||
|
||||
@ -38,9 +37,7 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
public async Task<ObservableCollection<CatalogItem>> GetCatalogAsync()
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/items";
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/items");
|
||||
|
||||
CatalogRoot catalog = await _requestProvider.GetAsync<CatalogRoot>(uri);
|
||||
|
||||
@ -55,9 +52,7 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
public async Task<ObservableCollection<CatalogBrand>> GetCatalogBrandAsync()
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/catalogbrands";
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/catalogbrands");
|
||||
|
||||
IEnumerable<CatalogBrand> brands = await _requestProvider.GetAsync<IEnumerable<CatalogBrand>>(uri);
|
||||
|
||||
@ -69,9 +64,7 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
public async Task<ObservableCollection<CatalogType>> GetCatalogTypeAsync()
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/catalogtypes";
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/catalogtypes");
|
||||
|
||||
IEnumerable<CatalogType> types = await _requestProvider.GetAsync<IEnumerable<CatalogType>>(uri);
|
||||
|
||||
|
@ -25,7 +25,7 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
public string CreateAuthorizationRequest()
|
||||
{
|
||||
// Create URI to authorization endpoint
|
||||
var authorizeRequest = new AuthorizeRequest(GlobalSetting.Instance.IdentityEndpoint);
|
||||
var authorizeRequest = new AuthorizeRequest(GlobalSetting.Instance.AuthorizeEndpoint);
|
||||
|
||||
// Dictionary with values for the authorize request
|
||||
var dic = new Dictionary<string, string>();
|
||||
@ -33,7 +33,7 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
dic.Add("client_secret", GlobalSetting.Instance.ClientSecret);
|
||||
dic.Add("response_type", "code id_token");
|
||||
dic.Add("scope", "openid profile basket orders locations marketing offline_access");
|
||||
dic.Add("redirect_uri", GlobalSetting.Instance.IdentityCallback);
|
||||
dic.Add("redirect_uri", GlobalSetting.Instance.Callback);
|
||||
dic.Add("nonce", Guid.NewGuid().ToString("N"));
|
||||
dic.Add("code_challenge", CreateCodeChallenge());
|
||||
dic.Add("code_challenge_method", "S256");
|
||||
@ -61,7 +61,7 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
|
||||
public async Task<UserToken> GetTokenAsync(string code)
|
||||
{
|
||||
string data = string.Format("grant_type=authorization_code&code={0}&redirect_uri={1}&code_verifier={2}", code, WebUtility.UrlEncode(GlobalSetting.Instance.IdentityCallback), _codeVerifier);
|
||||
string data = string.Format("grant_type=authorization_code&code={0}&redirect_uri={1}&code_verifier={2}", code, WebUtility.UrlEncode(GlobalSetting.Instance.Callback), _codeVerifier);
|
||||
var token = await _requestProvider.PostAsync<UserToken>(GlobalSetting.Instance.TokenEndpoint, data, GlobalSetting.Instance.ClientId, GlobalSetting.Instance.ClientSecret);
|
||||
return token;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Location
|
||||
@ -17,9 +18,8 @@ namespace eShopOnContainers.Core.Services.Location
|
||||
|
||||
public async Task UpdateUserLocation(eShopOnContainers.Core.Models.Location.Location newLocReq, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayMarketingEndpoint);
|
||||
builder.Path = ApiUrlBase;
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayMarketingEndpoint, ApiUrlBase);
|
||||
|
||||
await _requestProvider.PostAsync(uri, newLocReq, token);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using eShopOnContainers.Core.Extensions;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
@ -23,9 +24,7 @@ namespace eShopOnContainers.Core.Services.Marketing
|
||||
|
||||
public async Task<ObservableCollection<CampaignItem>> GetAllCampaignsAsync(string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayMarketingEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/user";
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayMarketingEndpoint, $"{ApiUrlBase}/user");
|
||||
|
||||
CampaignRoot campaign = await _requestProvider.GetAsync<CampaignRoot>(uri, token);
|
||||
|
||||
@ -40,9 +39,8 @@ namespace eShopOnContainers.Core.Services.Marketing
|
||||
|
||||
public async Task<CampaignItem> GetCampaignByIdAsync(int campaignId, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayMarketingEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/{campaignId}";
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayMarketingEndpoint, $"{ApiUrlBase}/{campaignId}");
|
||||
|
||||
return await _requestProvider.GetAsync<CampaignItem>(uri, token);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Models.Orders;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using System;
|
||||
@ -25,11 +26,7 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task<ObservableCollection<Models.Orders.Order>> GetOrdersAsync(string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
|
||||
builder.Path = ApiUrlBase;
|
||||
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, ApiUrlBase);
|
||||
|
||||
ObservableCollection<Models.Orders.Order> orders =
|
||||
await _requestProvider.GetAsync<ObservableCollection<Models.Orders.Order>>(uri, token);
|
||||
@ -42,11 +39,7 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
{
|
||||
try
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
|
||||
builder.Path = $"{ApiUrlBase}/{orderId}";
|
||||
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/{orderId}");
|
||||
|
||||
Models.Orders.Order order =
|
||||
await _requestProvider.GetAsync<Models.Orders.Order>(uri, token);
|
||||
@ -78,13 +71,10 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task<bool> CancelOrderAsync(int orderId, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.GatewayShoppingEndpoint);
|
||||
|
||||
builder.Path = $"{ApiUrlBase}/cancel";
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.GatewayShoppingEndpoint, $"{ApiUrlBase}/cancel");
|
||||
|
||||
var cancelOrderCommand = new CancelOrderCommand(orderId);
|
||||
|
||||
string uri = builder.ToString();
|
||||
var header = "x-requestid";
|
||||
|
||||
try
|
||||
|
@ -1,4 +1,5 @@
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
@ -16,8 +17,8 @@ namespace eShopOnContainers.Core.Services.User
|
||||
|
||||
public async Task<UserInfo> GetUserInfoAsync(string authToken)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.UserInfoEndpoint);
|
||||
string uri = builder.ToString();
|
||||
var uri = UriHelper.CombineUri(GlobalSetting.Instance.UserInfoEndpoint);
|
||||
|
||||
var userInfo = await _requestProvider.GetAsync<UserInfo>(uri, authToken);
|
||||
return userInfo;
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
IsLogin = false;
|
||||
LoginUrl = _identityService.CreateAuthorizationRequest();
|
||||
}
|
||||
else if (unescapedUrl.Contains(GlobalSetting.Instance.IdentityCallback))
|
||||
else if (unescapedUrl.Contains(GlobalSetting.Instance.Callback))
|
||||
{
|
||||
var authResponse = new AuthorizeResponse(url);
|
||||
if (!string.IsNullOrWhiteSpace(authResponse.Code))
|
||||
|
Loading…
x
Reference in New Issue
Block a user