mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
532 lines
24 KiB
C#
532 lines
24 KiB
C#
using Microsoft.Zune.Util;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Globalization;
|
|
using ZuneUI;
|
|
|
|
namespace Microsoft.Zune.Service
|
|
{
|
|
internal class CommunityService : IService
|
|
{
|
|
private bool disposedValue;
|
|
|
|
public static string AppUserAgent { get; set; }
|
|
public static string ApiVerionStr { get; set; }
|
|
|
|
public EListType ContentTypeToListType(EContentType contentType)
|
|
{
|
|
switch (contentType)
|
|
{
|
|
case EContentType.MusicTrack:
|
|
return EListType.eTrackList;
|
|
|
|
case EContentType.MusicAlbum:
|
|
return EListType.eAlbumList;
|
|
|
|
case EContentType.Video:
|
|
return EListType.eVideoList;
|
|
|
|
case EContentType.Artist:
|
|
return EListType.eArtistList;
|
|
|
|
case EContentType.PodcastEpisode:
|
|
return EListType.ePodcastEpisodeList;
|
|
|
|
case EContentType.PodcastSeries:
|
|
return EListType.ePodcastList;
|
|
|
|
case EContentType.App:
|
|
return EListType.eAppList;
|
|
|
|
case EContentType.Playlist:
|
|
return EListType.ePlaylistList;
|
|
|
|
default:
|
|
case EContentType.Unknown:
|
|
return EListType.eListInvalid;
|
|
}
|
|
}
|
|
public string GetEndPointUri(EServiceEndpointId eServiceEndpointId)
|
|
{
|
|
// Allow override from registry, like the internal dogfood version did
|
|
string keyName = eServiceEndpointId.ToString().Substring(5) + "Endpoint";
|
|
var key = Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Zune\Service");
|
|
var keyVal = key?.GetValue(keyName);
|
|
if (keyVal is string keyValUri)
|
|
return keyValUri;
|
|
|
|
string uri = null;
|
|
string culture = CultureInfo.CurrentCulture.ToString();
|
|
switch (eServiceEndpointId)
|
|
{
|
|
case EServiceEndpointId.SEID_RootCatalog:
|
|
uri = "http://catalog.zunes.me/v3.2/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_RootCatalogSSL:
|
|
uri = "https://catalog.zunes.me/v3.2/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_Stats:
|
|
uri = "https://stat.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_ImageCatalog:
|
|
uri = "https://image.catalog.zunes.me/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_Comments:
|
|
uri = "https://comments.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_QuickMixSecure:
|
|
uri = "http://mix.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_QuickMix:
|
|
uri = "https://mix.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_Commerce:
|
|
case EServiceEndpointId.SEID_CommerceV3:
|
|
uri = "https://commerce.zunes.me/v3.2/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_CommerceV2:
|
|
uri = "https://stat.zunes.me/v2.0/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_WindowsLiveSignup:
|
|
uri = "https://login.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_WMISEndpoints:
|
|
uri = "https://metaservices.zunes.me/endpoints";
|
|
break;
|
|
case EServiceEndpointId.SEID_WMISRedirEndpoint:
|
|
uri = "https://metaservices.zunes.me/redir";
|
|
break;
|
|
case EServiceEndpointId.SEID_WMISImageEndpoint:
|
|
uri = "https://metaservices.zunes.me/image";
|
|
break;
|
|
case EServiceEndpointId.SEID_Tuners:
|
|
uri = "https://tuners.zunes.me/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_Resources:
|
|
uri = "https://resources.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_ZuneNet:
|
|
uri = "https://zunes.me/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_Messaging:
|
|
uri = "https://messaging.zunes.me";
|
|
break;
|
|
case EServiceEndpointId.SEID_SocialApi:
|
|
uri = "https://socialapi.zunes.me/" + culture;
|
|
break;
|
|
case EServiceEndpointId.SEID_Forums:
|
|
uri = "https://forums.zunes.me/" + culture;
|
|
break;
|
|
};
|
|
|
|
return uri ?? Service.GetEndPointUri(eServiceEndpointId);
|
|
}
|
|
|
|
public int AddPaymentInstrument(PaymentInstrument paymentInstrument,
|
|
AddPaymentInstrumentCompleteCallback completeCallback,
|
|
AddPaymentInstrumentErrorCallback errorCallback)
|
|
{
|
|
return Service.Instance.AddPaymentInstrument(paymentInstrument, completeCallback, errorCallback);
|
|
}
|
|
|
|
public int AddPaymentInstrument(PaymentInstrument paymentInstrument, out string paymentId, out ServiceError serviceError)
|
|
{
|
|
return Service.Instance.AddPaymentInstrument(paymentInstrument, out paymentId, out serviceError);
|
|
}
|
|
|
|
public HRESULT AuthenticatePassport(string username, string password, EPassportPolicyId ePassportPolicyId, out PassportIdentity passportIdentity)
|
|
{
|
|
return Service.Instance.AuthenticatePassport(username, password, ePassportPolicyId, out passportIdentity);
|
|
}
|
|
|
|
public bool BlockExplicitContent()
|
|
{
|
|
return Service.Instance.BlockExplicitContent();
|
|
}
|
|
|
|
public bool BlockRatedContent(string system, string rating)
|
|
{
|
|
return Service.Instance.BlockRatedContent(system, rating);
|
|
}
|
|
|
|
public void CancelDownload(Guid guidMediaId, EContentType eContentType)
|
|
{
|
|
Service.Instance.CancelDownload(guidMediaId, eContentType);
|
|
}
|
|
|
|
public void CancelSignIn()
|
|
{
|
|
Service.Instance.CancelSignIn();
|
|
}
|
|
|
|
public bool CanDownloadSubscriptionContent()
|
|
{
|
|
return Service.Instance.CanDownloadSubscriptionContent();
|
|
}
|
|
|
|
public bool CanSignedInUserPostUsageData()
|
|
{
|
|
return Service.Instance.CanSignedInUserPostUsageData();
|
|
}
|
|
|
|
public bool ClearLastSignedInUser()
|
|
{
|
|
return Service.Instance.ClearLastSignedInUser();
|
|
}
|
|
|
|
public AppOfferCollection CreateEmptyAppCollection()
|
|
{
|
|
return Service.Instance.CreateEmptyAppCollection();
|
|
}
|
|
|
|
public bool DeleteSubscriptionDownloads(AsyncCompleteHandler eventHandler)
|
|
{
|
|
return Service.Instance.DeleteSubscriptionDownloads(eventHandler);
|
|
}
|
|
|
|
public void Download(IList items, EDownloadFlags eDownloadFlags, string deviceEndpointId, EDownloadContextEvent clientContextEvent, string clientContextEventData, DownloadEventHandler eventHandler, DownloadEventProgressHandler progressHandler, EventHandler allPendingHandler)
|
|
{
|
|
Service.Instance.Download(items, eDownloadFlags, deviceEndpointId, clientContextEvent, clientContextEventData, eventHandler, progressHandler, allPendingHandler);
|
|
}
|
|
|
|
public bool GetAlbumIdFromCompId(string compId, out Guid guidAlbum)
|
|
{
|
|
return Service.Instance.GetAlbumIdFromCompId(compId, out guidAlbum);
|
|
}
|
|
|
|
public void GetBalances(GetBalancesCompleteCallback completeCallback, GetBalancesErrorCallback errorCallback)
|
|
{
|
|
Service.Instance.GetBalances(completeCallback, errorCallback);
|
|
}
|
|
|
|
public EContentType GetContentType(string contentTypeStr)
|
|
{
|
|
return Service.Instance.GetContentType(contentTypeStr);
|
|
}
|
|
|
|
public HRESULT GetContentUri(Guid guidMediaId, EContentType eContentType, EContentUriFlags eContentUriFlags, bool fIsHD, bool fIsRental, out string uriOut)
|
|
{
|
|
return Service.Instance.GetContentUri(guidMediaId, eContentType, eContentUriFlags, fIsHD, fIsRental, out uriOut);
|
|
}
|
|
|
|
public HRESULT GetContentUri(Guid guidMediaId, EContentType eContentType, EContentUriFlags eContentUriFlags, out string uriOut, out Guid mediaInstanceIdOut)
|
|
{
|
|
return Service.Instance.GetContentUri(guidMediaId, eContentType, eContentUriFlags, out uriOut, out mediaInstanceIdOut);
|
|
}
|
|
|
|
public HRESULT GetContentUri(Guid guidMediaId, EContentType eContentType, EContentUriFlags eContentUriFlags, EMediaFormat eMediaFormat, EMediaRights eMediaRights, out string uriOut, out Guid mediaInstanceIdOut)
|
|
{
|
|
throw new NotImplementedException();
|
|
//return Service.Instance.GetContentUri(guidMediaId, eContentType, eContentUriFlags, eMediaFormat, eMediaRights, out uriOut, out mediaInstanceIdOut);
|
|
}
|
|
|
|
public CountryBaseDetails[] GetCountryDetails()
|
|
{
|
|
return Service.Instance.GetCountryDetails();
|
|
}
|
|
|
|
public DRMInfo GetFileDRMInfo(string filePath)
|
|
{
|
|
return Service.Instance.GetFileDRMInfo(filePath);
|
|
}
|
|
|
|
public bool GetLastSignedInUserGuid(out int iUserId, out Guid guidUserGuid)
|
|
{
|
|
return Service.Instance.GetLastSignedInUserGuid(out iUserId, out guidUserGuid);
|
|
}
|
|
|
|
public void GetLastSignedInUserSubscriptionState(out bool activeSubscription, out ulong subscriptionId)
|
|
{
|
|
Service.Instance.GetLastSignedInUserSubscriptionState(out activeSubscription, out subscriptionId);
|
|
}
|
|
|
|
public string GetLocale()
|
|
{
|
|
return CommunityCommerce.IsSignedIn
|
|
? CommunityCommerce.MemberInfo.AccountInfo.Locale
|
|
: null;
|
|
}
|
|
|
|
public string GetMachineId()
|
|
{
|
|
return Service.Instance.GetMachineId();
|
|
}
|
|
|
|
public DRMInfo GetMediaDRMInfo(Guid mediaId, EContentType eContentType)
|
|
{
|
|
return Service.Instance.GetMediaDRMInfo(mediaId, eContentType);
|
|
}
|
|
|
|
public EMediaStatus GetMediaStatus(Guid guidMediaId, EContentType eContentType)
|
|
{
|
|
return Service.Instance.GetMediaStatus(guidMediaId, eContentType);
|
|
}
|
|
|
|
public bool GetMusicVideoIdFromCompId(string compId, out Guid guidMusicVideo)
|
|
{
|
|
return Service.Instance.GetMusicVideoIdFromCompId(compId, out guidMusicVideo);
|
|
}
|
|
|
|
public HRESULT GetOfferDetails(Guid offerId, GetOfferDetailsCompleteCallback completeCallback, GetOfferDetailsErrorCallback errorCallback, object state)
|
|
{
|
|
return Service.Instance.GetOfferDetails(offerId, completeCallback, errorCallback, state);
|
|
}
|
|
|
|
public void GetOffers(IList albumGuids, IList trackGuids, IList videoGuids, IList appGuids, IDictionary mapIdToContext, EGetOffersFlags eGetOffersFlags, string deviceEndpointId, GetOffersCompleteCallback completeCallback, GetOffersErrorCallback errorCallback)
|
|
{
|
|
Service.Instance.GetOffers(albumGuids, trackGuids, videoGuids, appGuids, mapIdToContext, eGetOffersFlags, deviceEndpointId, completeCallback, errorCallback);
|
|
}
|
|
|
|
public ulong GetPassportPuid()
|
|
{
|
|
return Service.Instance.GetPassportPuid();
|
|
}
|
|
|
|
public string GetPassportTicket(EPassportPolicyId ePassportPolicy)
|
|
{
|
|
return Service.Instance.GetPassportTicket(ePassportPolicy);
|
|
}
|
|
|
|
public void GetPaymentInstruments(GetPaymentInstrumentsCompleteCallback completeCallback, GetPaymentInstrumentsErrorCallback errorCallback)
|
|
{
|
|
Service.Instance.GetPaymentInstruments(completeCallback, errorCallback);
|
|
}
|
|
|
|
public IList GetPersistedUsernames()
|
|
{
|
|
return Service.Instance.GetPersistedUsernames();
|
|
}
|
|
|
|
public string GetPhoneClientType(string strPhoneOsVersion)
|
|
{
|
|
return Service.Instance.GetPhoneClientType(strPhoneOsVersion);
|
|
}
|
|
|
|
public int GetPointsBalance()
|
|
{
|
|
return CommunityCommerce.IsSignedIn
|
|
? (int)CommunityCommerce.MemberInfo.Balances.PointsBalance
|
|
: 0;
|
|
}
|
|
|
|
public void GetPointsOffers(GetBillingOffersCompleteCallback completeCallback, GetBillingOffersErrorCallback errorCallback)
|
|
=> Service.Instance.GetPointsOffers(completeCallback, errorCallback);
|
|
|
|
public RatingSystemBase[] GetRatingSystems() => Service.Instance.GetRatingSystems();
|
|
|
|
public int GetRentalTermDays(string strStudio) => Service.Instance.GetRentalTermDays(strStudio);
|
|
|
|
public int GetRentalTermHours(string strStudio) => Service.Instance.GetRentalTermHours(strStudio);
|
|
|
|
public uint GetSignedInGeoId() => Service.Instance.GetSignedInGeoId();
|
|
|
|
public string GetSignedInUsername() => Escargot.Username;
|
|
|
|
public string GetSignInAtStartupUsername() => Service.Instance.GetSignInAtStartupUsername();
|
|
|
|
public void GetSubscriptionDetails(ulong offerId, GetBillingOffersCompleteCallback completeCallback, GetBillingOffersErrorCallback errorCallback)
|
|
=> Service.Instance.GetSubscriptionDetails(offerId, completeCallback, errorCallback);
|
|
|
|
public string GetSubscriptionDirectory() => Service.Instance.GetSubscriptionDirectory();
|
|
|
|
public DateTime GetSubscriptionEndDate() => Service.Instance.GetSubscriptionEndDate();
|
|
|
|
public int GetSubscriptionFreeTrackBalance() => Service.Instance.GetSubscriptionFreeTrackBalance();
|
|
|
|
public DateTime GetSubscriptionFreeTrackExpiration() => Service.Instance.GetSubscriptionFreeTrackExpiration();
|
|
|
|
public ulong GetSubscriptionOfferId() => Service.Instance.GetSubscriptionOfferId();
|
|
|
|
public void GetSubscriptionOffers(GetBillingOffersCompleteCallback completeCallback, GetBillingOffersErrorCallback errorCallback)
|
|
=> Service.Instance.GetSubscriptionOffers(completeCallback, errorCallback);
|
|
|
|
public ulong GetSubscriptionRenewalOfferId() => Service.Instance.GetSubscriptionRenewalOfferId();
|
|
|
|
public int GetSubscriptionTrialDuration() => Service.Instance.GetSubscriptionTrialDuration();
|
|
|
|
public ValueType GetUserGuid() => Service.Instance.GetUserGuid();
|
|
|
|
public bool GetUserRating(int iUserId, Guid guidMediaId, EContentType eContentType, ref int piRating)
|
|
=> Service.Instance.GetUserRating(iUserId, guidMediaId, eContentType, ref piRating);
|
|
|
|
public string GetWMISEndPointUri(string strEndPointName)
|
|
=> Service.Instance.GetWMISEndPointUri(strEndPointName);
|
|
|
|
public string GetXboxPuid()
|
|
{
|
|
return CommunityCommerce.IsSignedIn
|
|
? CommunityCommerce.MemberInfo.AccountInfo.Xuid
|
|
: null;
|
|
}
|
|
|
|
public string GetXboxTicket() => Service.Instance.GetXboxTicket();
|
|
|
|
public string GetZuneTag()
|
|
{
|
|
return CommunityCommerce.IsSignedIn
|
|
? CommunityCommerce.MemberInfo.AccountInfo.ZuneTag
|
|
: null;
|
|
}
|
|
|
|
public bool HasSignInBillingViolation() => Service.Instance.HasSignInBillingViolation();
|
|
|
|
public bool HasSignInLabelTakedown() => Service.Instance.HasSignInLabelTakedown();
|
|
|
|
public bool InCompleteCollection(Guid guidMediaId, EContentType eContentType, string strDeviceEndpointId)
|
|
=> Service.Instance.InCompleteCollection(guidMediaId, eContentType, strDeviceEndpointId);
|
|
|
|
public bool InCompleteCollection(Guid guidMediaId, EContentType eContentType, out int dbMediaId, out bool fHidden)
|
|
=> Service.Instance.InCompleteCollection(guidMediaId, eContentType, out dbMediaId, out fHidden);
|
|
|
|
public bool InCompleteCollection(Guid guidMediaId, EContentType eContentType, string strDeviceEndpointId, out int dbMediaId, out bool fHidden)
|
|
=> Service.Instance.InCompleteCollection(guidMediaId, eContentType, strDeviceEndpointId, out dbMediaId, out fHidden);
|
|
|
|
public bool InCompleteCollection(Guid guidMediaId, EContentType eContentType)
|
|
=> Service.Instance.InCompleteCollection(guidMediaId, eContentType);
|
|
|
|
public bool InHiddenCollection(Guid guidMediaId, EContentType eContentType)
|
|
=> Service.Instance.InHiddenCollection(guidMediaId, eContentType);
|
|
|
|
public int InitializeWMISEndpointCollection()
|
|
=> Service.Instance.InitializeWMISEndpointCollection();
|
|
|
|
public bool InVisibleCollection(Guid guidMediaId, EContentType eContentType)
|
|
=> Service.Instance.InVisibleCollection(guidMediaId, eContentType);
|
|
|
|
public bool InVisibleCollection(Guid guidMediaId, EContentType eContentType, out int dbMediaId)
|
|
=> Service.Instance.InVisibleCollection(guidMediaId, eContentType, out dbMediaId);
|
|
|
|
public bool IsDownloading(Guid guidMediaId, EContentType eContentType, out bool fIsDownloadPending, out bool fIsHidden)
|
|
=> Service.Instance.IsDownloading(guidMediaId, eContentType, out fIsDownloadPending, out fIsHidden);
|
|
|
|
public bool IsLightWeight() => CommunityCommerce.IsSignedIn && CommunityCommerce.MemberInfo.AccountInfo.Lightweight;
|
|
|
|
public bool IsParentallyControlled() => CommunityCommerce.IsSignedIn && CommunityCommerce.MemberInfo.AccountInfo.ParentallyControlled;
|
|
|
|
public bool IsSignedIn() => CommunityCommerce.IsSignedIn;
|
|
|
|
public bool IsSignedInWithSubscription() => CommunityCommerce.IsSignedIn && CommunityCommerce.MemberInfo.SubscriptionInfo.SubscriptionEnabled;
|
|
|
|
public bool IsSigningIn() => Service.Instance.IsSigningIn();
|
|
|
|
public bool LaunchBrowserForExternalUrl(string strUrl, EPassportPolicyId ePassportPolicy)
|
|
=> Service.Instance.LaunchBrowserForExternalUrl(strUrl, ePassportPolicy);
|
|
|
|
public int Phase3Initialize()
|
|
{
|
|
var name = System.Reflection.Assembly.GetEntryAssembly()?.GetName();
|
|
if (ApiVerionStr == null)
|
|
ApiVerionStr = name?.Version?.ToString(2);
|
|
if (AppUserAgent == null)
|
|
AppUserAgent = $"{name?.Name}/{ApiVerionStr}";
|
|
|
|
return Service.Instance.Phase3Initialize();
|
|
}
|
|
|
|
public bool PostAppReview(Guid mediaId, string title, string comment, int rating, AsyncCompleteHandler callback)
|
|
=> Service.Instance.PostAppReview(mediaId, title, comment, rating, callback);
|
|
|
|
public int PurchaseBillingOffer(BillingOffer offer, PaymentInstrument paymentInstrument, AsyncCompleteHandler callback)
|
|
=> Service.Instance.PurchaseBillingOffer(offer, paymentInstrument, callback);
|
|
|
|
public int PurchaseBillingOffer(BillingOffer offer, PaymentInstrument paymentInstrument)
|
|
=> Service.Instance.PurchaseBillingOffer(offer, paymentInstrument);
|
|
|
|
public void PurchaseOffers(PaymentInstrument payment, AlbumOfferCollection albumOffers, TrackOfferCollection trackOffers, VideoOfferCollection videoOffers, AppOfferCollection appOffers, EPurchaseOffersFlags ePurchaseOffersFlags, PurchaseOffersCompleteHandler purchaseOffersHandler)
|
|
=> Service.Instance.PurchaseOffers(payment, albumOffers, trackOffers, videoOffers, appOffers, ePurchaseOffersFlags, purchaseOffersHandler);
|
|
|
|
public void RefreshAccount(AsyncCompleteHandler eventHandler) => Service.Instance.RefreshAccount(eventHandler);
|
|
|
|
public void RegisterForDownloadNotification(DownloadEventHandler eventHandler, DownloadEventProgressHandler progressHandler, EventHandler allPendingHandler)
|
|
=> Service.Instance.RegisterForDownloadNotification(eventHandler, progressHandler, allPendingHandler);
|
|
|
|
public void RemovePersistedUsername(string strUsername)
|
|
=> Service.Instance.RemovePersistedUsername(strUsername);
|
|
|
|
public bool ReportAConcern(EConcernType concernType, EContentType contentType, Guid mediaId, string message, AsyncCompleteHandler callback)
|
|
=> Service.Instance.ReportAConcern(concernType, contentType, mediaId, message, callback);
|
|
|
|
public bool ReportFavouriteArtists(Guid userId, IList artists, AsyncCompleteHandler callback)
|
|
=> Service.Instance.ReportFavouriteArtists(userId, artists, callback);
|
|
|
|
public void ReportStreamingAction(EStreamingActionType eStreamingActionType, Guid guidMediaInstanceId, AsyncCompleteHandler eventHandler)
|
|
=> Service.Instance.ReportStreamingAction(eStreamingActionType, guidMediaInstanceId, eventHandler);
|
|
|
|
public int ResumePurchase(string resumeHandle, string authorizationToken, AsyncCompleteHandler callback)
|
|
=> Service.Instance.ResumePurchase(resumeHandle, authorizationToken, callback);
|
|
|
|
public bool SetLastSignedInUserGuid(ref Guid guidUserGuid, out int iUserId)
|
|
=> Service.Instance.SetLastSignedInUserGuid(ref guidUserGuid, out iUserId);
|
|
|
|
public bool SetUserArtistRating(int iUserId, int iRating, Guid guidArtistMediaId, string strTitle)
|
|
=> Service.Instance.SetUserArtistRating(iUserId, iRating, guidArtistMediaId, strTitle);
|
|
|
|
public bool SetUserTrackRating(int iUserId, int iRating, Guid guidTrackMediaId, Guid guidAlbumMediaId, int iTrackNumber, string strTitle, int msDuration, string strAlbum, string strArtist, string strGenre, string strServiceContext)
|
|
=> Service.Instance.SetUserTrackRating(iUserId, iRating, guidTrackMediaId, guidAlbumMediaId, iTrackNumber, strTitle, msDuration, strAlbum, strArtist, strGenre, strServiceContext);
|
|
|
|
public void SignIn(string strUsername, string strPassword, bool fRememberUsername, bool fRememberPassword, bool fAutomaticallySignInAtStartup, AsyncCompleteHandler eventHandler)
|
|
{
|
|
HRESULT hr = Escargot.TrySignIn(strUsername, strPassword) ? HRESULT._S_OK : HRESULT._NS_E_PASSPORT_LOGIN_FAILED;
|
|
|
|
if (hr.IsSuccess)
|
|
{
|
|
hr = CommunityCommerce.TrySignIn();
|
|
|
|
if (hr.IsSuccess)
|
|
{
|
|
if (fRememberPassword)
|
|
Escargot.CacheToken();
|
|
}
|
|
}
|
|
|
|
eventHandler(hr);
|
|
}
|
|
|
|
public bool SignInAtStartup(string strUsername) => Service.Instance.SignInAtStartup(strUsername);
|
|
|
|
public bool SignInPasswordRequired(string strUsername)
|
|
=> Service.Instance.SignInPasswordRequired(strUsername);
|
|
|
|
public void SignOut()
|
|
{
|
|
Escargot.ClearToken();
|
|
CommunityCommerce.SignOut();
|
|
}
|
|
|
|
public bool SubscriptionPendingCancel() => Service.Instance.SubscriptionPendingCancel();
|
|
|
|
public int VerifyToken(string token, out TokenDetails tokenDetails)
|
|
=> Service.Instance.VerifyToken(token, out tokenDetails);
|
|
|
|
|
|
protected virtual void Dispose(bool disposing)
|
|
{
|
|
if (!disposedValue)
|
|
{
|
|
if (disposing)
|
|
{
|
|
// TODO: dispose managed state (managed objects)
|
|
}
|
|
|
|
// TODO: free unmanaged resources (unmanaged objects) and override finalizer
|
|
// TODO: set large fields to null
|
|
disposedValue = true;
|
|
}
|
|
}
|
|
|
|
// Override finalizer only if 'Dispose(bool disposing)' has code to free unmanaged resources
|
|
~CommunityService()
|
|
{
|
|
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
|
|
Dispose(disposing: false);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
|
|
Dispose(disposing: true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
}
|
|
}
|