Added local IPService to Xamarin Apps

This commit is contained in:
Javier Suárez Ruiz 2017-01-10 13:00:17 +01:00
parent f2bd7e4cb6
commit 5a81d4295c
8 changed files with 59 additions and 1 deletions

View File

@ -4,6 +4,8 @@
{
public const string AzureTag = "Azure";
public const string MockTag = "Mock";
public const string DefaultEndpoint = "http://13.88.8.119";
private string _baseEndpoint;
private static readonly GlobalSetting _instance = new GlobalSetting();
@ -11,7 +13,7 @@
public GlobalSetting()
{
AuthToken = "INSERT AUTHENTICATION TOKEN";
BaseEndpoint = "http://13.88.8.119";
BaseEndpoint = DefaultEndpoint;
}
public static GlobalSetting Instance

View File

@ -5,6 +5,10 @@ using eShopOnContainers.Core.Models.Catalog;
using eShopOnContainers.Core.Services.RequestProvider;
using eShopOnContainers.Core.Extensions;
using System.Collections.Generic;
using eShopOnContainers.ViewModels.Base;
using eShopOnContainers.Core.Helpers;
using Xamarin.Forms;
using eShopOnContainers.Core.Services.IPAddress;
namespace eShopOnContainers.Core.Services.Catalog
{
@ -55,7 +59,19 @@ namespace eShopOnContainers.Core.Services.Catalog
await _requestProvider.GetAsync<CatalogRoot>(uri);
if (catalog?.Data != null)
{
// TODO: Experimental
if (!ViewModelLocator.Instance.UseMockService && Settings.UrlBase != GlobalSetting.DefaultEndpoint)
{
foreach (var catalogItem in catalog?.Data)
{
string ipaddress = DependencyService.Get<IIPAddressService>().GetIPAddress();
catalogItem.PictureUri.Replace(Settings.UrlBase, ipaddress);
}
}
return catalog?.Data.ToObservableCollection();
}
else
return new ObservableCollection<CatalogItem>();
}

View File

@ -0,0 +1,7 @@
namespace eShopOnContainers.Core.Services.IPAddress
{
public interface IIPAddressService
{
string GetIPAddress();
}
}

View File

@ -94,6 +94,7 @@
<Compile Include="Services\Dialog\IDialogService.cs" />
<Compile Include="Services\Identity\IdentityService.cs" />
<Compile Include="Services\Identity\IIdentityService.cs" />
<Compile Include="Services\IPAddress\IIPAddressService.cs" />
<Compile Include="Services\Navigation\INavigationService.cs" />
<Compile Include="Services\Navigation\NavigationService.cs" />
<Compile Include="Services\OpenUrl\IOpenUrlService.cs" />

View File

@ -0,0 +1,25 @@
using eShopOnContainers.Core.Services.IPAddress;
using eShopOnContainers.Droid.Services.IPAddress;
using System.Net;
using Xamarin.Forms;
[assembly: Dependency(typeof(IPAddressService))]
namespace eShopOnContainers.Droid.Services.IPAddress
{
public class IPAddressService : IIPAddressService
{
public string GetIPAddress()
{
System.Net.IPAddress[] adresses = Dns.GetHostAddresses(Dns.GetHostName());
if (adresses != null && adresses[0] != null)
{
return adresses[0].ToString();
}
else
{
return null;
}
}
}
}

View File

@ -231,6 +231,7 @@
<Compile Include="Renderers\SlideDownMenuPageRenderer.cs" />
<Compile Include="Resources\Resource.Designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\IPAddress\IPAddressService.cs" />
</ItemGroup>
<ItemGroup>
<AndroidAsset Include="..\CommonResources\Fonts\Montserrat-Bold.ttf">

View File

@ -178,6 +178,9 @@
<Name>eShopOnContainers.Core</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Services\IPAddress\" />
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>

View File

@ -429,6 +429,9 @@
<Name>eShopOnContainers.Core</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Services\IPAddress\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>