Skip to content
This repository was archived by the owner on Nov 17, 2023. It is now read-only.

Commit de667f9

Browse files
authored
Merge pull request #548 from MarcosCobena/xamarin-oidcclient
Mobile app uses API gateway endpoints.
2 parents 2aaffe7 + adf46ff commit de667f9

File tree

9 files changed

+61
-500
lines changed

9 files changed

+61
-500
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,4 @@ pub/
260260
/src/Web/WebMVC/wwwroot/lib
261261
/src/Web/WebMVC/wwwroot/css/site.min.css
262262
**/.kube/**
263+
.mfractor

src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ public class GlobalSetting
44
{
55
public const string AzureTag = "Azure";
66
public const string MockTag = "Mock";
7-
public const string DefaultEndpoint = "http://13.88.8.119";
7+
public const string DefaultEndpoint = "http://YOUR_IP_OR_DNS_NAME"; // i.e.: "http://YOUR_IP" or "http://YOUR_DNS_NAME"
88

99
private string _baseEndpoint;
1010
private static readonly GlobalSetting _instance = new GlobalSetting();
@@ -38,18 +38,8 @@ public string BaseEndpoint
3838

3939
public string RegisterWebsite { get; set; }
4040

41-
public string CatalogEndpoint { get; set; }
42-
43-
public string OrdersEndpoint { get; set; }
44-
45-
public string BasketEndpoint { get; set; }
46-
4741
public string IdentityEndpoint { get; set; }
4842

49-
public string LocationEndpoint { get; set; }
50-
51-
public string MarketingEndpoint { get; set; }
52-
5343
public string UserInfoEndpoint { get; set; }
5444

5545
public string TokenEndpoint { get; set; }
@@ -62,18 +52,17 @@ public string BaseEndpoint
6252

6353
private void UpdateEndpoint(string baseEndpoint)
6454
{
65-
RegisterWebsite = $"{baseEndpoint}:5105/Account/Register";
66-
CatalogEndpoint = $"{baseEndpoint}:5101";
67-
OrdersEndpoint = $"{baseEndpoint}:5102";
68-
BasketEndpoint = $"{baseEndpoint}:5103";
69-
IdentityEndpoint = $"{baseEndpoint}:5105/connect/authorize";
70-
UserInfoEndpoint = $"{baseEndpoint}:5105/connect/userinfo";
71-
TokenEndpoint = $"{baseEndpoint}:5105/connect/token";
72-
LogoutEndpoint = $"{baseEndpoint}:5105/connect/endsession";
73-
IdentityCallback = $"{baseEndpoint}:5105/xamarincallback";
74-
LogoutCallback = $"{baseEndpoint}:5105/Account/Redirecting";
75-
LocationEndpoint = $"{baseEndpoint}:5109";
76-
MarketingEndpoint = $"{baseEndpoint}:5110";
55+
var identityBaseEndpoint = $"{baseEndpoint}/identity";
56+
RegisterWebsite = $"{identityBaseEndpoint}/Account/Register";
57+
LogoutCallback = $"{identityBaseEndpoint}/Account/Redirecting";
58+
59+
var connectBaseEndpoint = $"{identityBaseEndpoint}/connect";
60+
IdentityEndpoint = $"{connectBaseEndpoint}/authorize";
61+
UserInfoEndpoint = $"{connectBaseEndpoint}/userinfo";
62+
TokenEndpoint = $"{connectBaseEndpoint}/token";
63+
LogoutEndpoint = $"{connectBaseEndpoint}/endsession";
64+
65+
IdentityCallback = $"{baseEndpoint}/xamarincallback";
7766
}
7867
}
7968
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class BasketService : IBasketService
1111
private readonly IRequestProvider _requestProvider;
1212
private readonly IFixUriService _fixUriService;
1313

14-
private const string ApiUrlBase = "api/v1/basket";
14+
private const string ApiUrlBase = "mobileshoppingapigw/api/v1/b/basket";
1515

1616
public BasketService(IRequestProvider requestProvider, IFixUriService fixUriService)
1717
{
@@ -21,23 +21,31 @@ public BasketService(IRequestProvider requestProvider, IFixUriService fixUriServ
2121

2222
public async Task<CustomerBasket> GetBasketAsync(string guidUser, string token)
2323
{
24-
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
24+
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
2525
{
2626
Path = $"{ApiUrlBase}/{guidUser}"
2727
};
2828

2929
var uri = builder.ToString();
3030

31-
CustomerBasket basket =
32-
await _requestProvider.GetAsync<CustomerBasket>(uri, token);
31+
CustomerBasket basket;
32+
33+
try
34+
{
35+
basket = await _requestProvider.GetAsync<CustomerBasket>(uri, token);
36+
}
37+
catch (HttpRequestExceptionEx exception) when (exception.HttpCode == System.Net.HttpStatusCode.NotFound)
38+
{
39+
basket = null;
40+
}
3341

3442
_fixUriService.FixBasketItemPictureUri(basket?.Items);
3543
return basket;
3644
}
3745

3846
public async Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket, string token)
3947
{
40-
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
48+
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
4149
{
4250
Path = ApiUrlBase
4351
};
@@ -49,7 +57,7 @@ public async Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBaske
4957

5058
public async Task CheckoutAsync(BasketCheckout basketCheckout, string token)
5159
{
52-
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
60+
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
5361
{
5462
Path = $"{ApiUrlBase}/checkout"
5563
};
@@ -60,7 +68,7 @@ public async Task CheckoutAsync(BasketCheckout basketCheckout, string token)
6068

6169
public async Task ClearBasketAsync(string guidUser, string token)
6270
{
63-
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
71+
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
6472
{
6573
Path = $"{ApiUrlBase}/{guidUser}"
6674
};

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class CatalogService : ICatalogService
1313
{
1414
private readonly IRequestProvider _requestProvider;
1515
private readonly IFixUriService _fixUriService;
16+
17+
private const string ApiUrlBase = "mobileshoppingapigw/api/v1/c/catalog";
1618

1719
public CatalogService(IRequestProvider requestProvider, IFixUriService fixUriService)
1820
{
@@ -22,8 +24,8 @@ public CatalogService(IRequestProvider requestProvider, IFixUriService fixUriSer
2224

2325
public async Task<ObservableCollection<CatalogItem>> FilterAsync(int catalogBrandId, int catalogTypeId)
2426
{
25-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
26-
builder.Path = string.Format("api/v1/catalog/items/type/{0}/brand/{1}", catalogTypeId, catalogBrandId);
27+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
28+
builder.Path = $"{ApiUrlBase}/items/type/{catalogTypeId}/brand/{catalogBrandId}";
2729
string uri = builder.ToString();
2830

2931
CatalogRoot catalog = await _requestProvider.GetAsync<CatalogRoot>(uri);
@@ -36,8 +38,8 @@ public async Task<ObservableCollection<CatalogItem>> FilterAsync(int catalogBran
3638

3739
public async Task<ObservableCollection<CatalogItem>> GetCatalogAsync()
3840
{
39-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
40-
builder.Path = "api/v1/catalog/items";
41+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
42+
builder.Path = $"{ApiUrlBase}/items";
4143
string uri = builder.ToString();
4244

4345
CatalogRoot catalog = await _requestProvider.GetAsync<CatalogRoot>(uri);
@@ -53,8 +55,8 @@ public async Task<ObservableCollection<CatalogItem>> GetCatalogAsync()
5355

5456
public async Task<ObservableCollection<CatalogBrand>> GetCatalogBrandAsync()
5557
{
56-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
57-
builder.Path = "api/v1/catalog/catalogbrands";
58+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
59+
builder.Path = $"{ApiUrlBase}/catalogbrands";
5860
string uri = builder.ToString();
5961

6062
IEnumerable<CatalogBrand> brands = await _requestProvider.GetAsync<IEnumerable<CatalogBrand>>(uri);
@@ -67,8 +69,8 @@ public async Task<ObservableCollection<CatalogBrand>> GetCatalogBrandAsync()
6769

6870
public async Task<ObservableCollection<CatalogType>> GetCatalogTypeAsync()
6971
{
70-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
71-
builder.Path = "api/v1/catalog/catalogtypes";
72+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
73+
builder.Path = $"{ApiUrlBase}/catalogtypes";
7274
string uri = builder.ToString();
7375

7476
IEnumerable<CatalogType> types = await _requestProvider.GetAsync<IEnumerable<CatalogType>>(uri);

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Location/LocationService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ public LocationService(IRequestProvider requestProvider)
1515

1616
public async Task UpdateUserLocation(eShopOnContainers.Core.Models.Location.Location newLocReq, string token)
1717
{
18-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.LocationEndpoint);
19-
builder.Path = "api/v1/locations";
18+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
19+
builder.Path = "/mobilemarketingapigw/api/v1/l/locations";
2020
string uri = builder.ToString();
2121
await _requestProvider.PostAsync(uri, newLocReq, token);
2222
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Marketing/CampaignService.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class CampaignService : ICampaignService
1313
private readonly IRequestProvider _requestProvider;
1414
private readonly IFixUriService _fixUriService;
1515

16+
private const string ApiUrlBase = "mobilemarketingapigw/api/v1/m/campaigns";
17+
1618
public CampaignService(IRequestProvider requestProvider, IFixUriService fixUriService)
1719
{
1820
_requestProvider = requestProvider;
@@ -21,8 +23,8 @@ public CampaignService(IRequestProvider requestProvider, IFixUriService fixUriSe
2123

2224
public async Task<ObservableCollection<CampaignItem>> GetAllCampaignsAsync(string token)
2325
{
24-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.MarketingEndpoint);
25-
builder.Path = "api/v1/campaigns/user";
26+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
27+
builder.Path = $"{ApiUrlBase}/user";
2628
string uri = builder.ToString();
2729

2830
CampaignRoot campaign = await _requestProvider.GetAsync<CampaignRoot>(uri, token);
@@ -38,8 +40,8 @@ public async Task<ObservableCollection<CampaignItem>> GetAllCampaignsAsync(strin
3840

3941
public async Task<CampaignItem> GetCampaignByIdAsync(int campaignId, string token)
4042
{
41-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.MarketingEndpoint);
42-
builder.Path = $"api/v1/campaigns/{campaignId}";
43+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
44+
builder.Path = $"{ApiUrlBase}/{campaignId}";
4345
string uri = builder.ToString();
4446
return await _requestProvider.GetAsync<CampaignItem>(uri, token);
4547
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public class OrderService : IOrderService
1111
{
1212
private readonly IRequestProvider _requestProvider;
1313

14+
private const string ApiUrlBase = "mobileshoppingapigw/api/v1/o/orders";
15+
1416
public OrderService(IRequestProvider requestProvider)
1517
{
1618
_requestProvider = requestProvider;
@@ -23,9 +25,9 @@ public Task CreateOrderAsync(Models.Orders.Order newOrder, string token)
2325

2426
public async Task<ObservableCollection<Models.Orders.Order>> GetOrdersAsync(string token)
2527
{
26-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint);
28+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
2729

28-
builder.Path = "api/v1/orders";
30+
builder.Path = ApiUrlBase;
2931

3032
string uri = builder.ToString();
3133

@@ -40,9 +42,9 @@ public Task CreateOrderAsync(Models.Orders.Order newOrder, string token)
4042
{
4143
try
4244
{
43-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint);
45+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
4446

45-
builder.Path = string.Format("api/v1/orders/{0}", orderId);
47+
builder.Path = $"{ApiUrlBase}/{orderId}";
4648

4749
string uri = builder.ToString();
4850

@@ -76,9 +78,9 @@ public BasketCheckout MapOrderToBasket(Models.Orders.Order order)
7678

7779
public async Task<bool> CancelOrderAsync(int orderId, string token)
7880
{
79-
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint);
81+
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
8082

81-
builder.Path = "api/v1/orders/cancel";
83+
builder.Path = $"{ApiUrlBase}/cancel";
8284

8385
var cancelOrderCommand = new CancelOrderCommand(orderId);
8486

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -337,28 +337,14 @@
337337
Grid.RowSpan="2"
338338
IsVisible="{Binding IsLogin}">
339339
<WebView
340-
Source="{Binding LoginUrl}"
341-
AbsoluteLayout.LayoutBounds="0, 0, 1, 1"
342-
AbsoluteLayout.LayoutFlags="All">
340+
Source="{Binding LoginUrl}"
341+
AbsoluteLayout.LayoutBounds="0, 0, 1, 1"
342+
AbsoluteLayout.LayoutFlags="All">
343343
<WebView.Behaviors>
344-
<OnPlatform x:TypeArguments="Behavior">
345-
<On Platform="iOS, Android">
346-
<On.Value>
347-
<behaviors:EventToCommandBehavior
348-
EventName="Navigating"
349-
EventArgsConverter="{StaticResource WebNavigatingEventArgsConverter}"
350-
Command="{Binding NavigateCommand}" />
351-
</On.Value>
352-
</On>
353-
<On Platform="UWP">
354-
<On.Value>
355-
<behaviors:EventToCommandBehavior
356-
EventName="Navigated"
357-
EventArgsConverter="{StaticResource WebNavigatedEventArgsConverter}"
358-
Command="{Binding NavigateCommand}" />
359-
</On.Value>
360-
</On>
361-
</OnPlatform>
344+
<behaviors:EventToCommandBehavior
345+
EventName="Navigating"
346+
EventArgsConverter="{StaticResource WebNavigatingEventArgsConverter}"
347+
Command="{Binding NavigateCommand}" />
362348
</WebView.Behaviors>
363349
</WebView>
364350
</AbsoluteLayout>

0 commit comments

Comments
 (0)