src/Microsoft.Azure.NotificationHubs/AndroidRegistrationDescription.cs (150 lines of code) (raw):

//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for // license information. //------------------------------------------------------------ using System; using System.Collections.Generic; using System.Runtime.Serialization; using Microsoft.Azure.NotificationHubs.Messaging; namespace Microsoft.Azure.NotificationHubs { /// <summary> /// Represents Notification Hub registration description for Google Cloud Messaging /// </summary> [DataContract(Name = ManagementStrings.GcmRegistrationDescription, Namespace = ManagementStrings.Namespace)] [Obsolete("GcmRegistrationDescription is deprecated, please use FcmRegistrationDescription instead.")] public class GcmRegistrationDescription : RegistrationDescription { /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.GcmRegistrationDescription"/> class by copying fields from the given instance /// </summary> /// <param name="sourceRegistration">Another <see cref="T:Microsoft.Azure.NotificationHubs.GcmRegistrationDescription"/> instance fields values are copyed from</param> public GcmRegistrationDescription(GcmRegistrationDescription sourceRegistration) : base(sourceRegistration) { this.GcmRegistrationId = sourceRegistration.GcmRegistrationId; } /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.GcmRegistrationDescription"/> class using given Google Cloud Messaging registration id /// </summary> /// <param name="gcmRegistrationId">Registration id obtained from the Google Cloud Messaging service</param> public GcmRegistrationDescription(string gcmRegistrationId) : this(string.Empty, gcmRegistrationId, null) { } /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.GcmRegistrationDescription"/> class using given Google Cloud Messaging registration id and collection of tags /// </summary> /// <param name="gcmRegistrationId">Registration id obtained from the Google Cloud Messaging service</param> /// <param name="tags">Collection of tags. Tags can be used for audience targeting purposes.</param> public GcmRegistrationDescription(string gcmRegistrationId, IEnumerable<string> tags) : this(string.Empty, gcmRegistrationId, tags) { } /// <summary> /// Creates an instance of <see cref="T:Microsoft.Azure.NotificationHubs.GcmRegistrationDescription"/> class from <see cref="T:Microsoft.Azure.NotificationHubs.FcmRegistrationDescription"/> object. /// </summary> /// <param name="fcmRegistration">FcmRegistrationDescription object to create GcmRegistrationDescription from.</param> public GcmRegistrationDescription(FcmRegistrationDescription fcmRegistration) : base(fcmRegistration) { this.GcmRegistrationId = fcmRegistration.FcmRegistrationId; } internal GcmRegistrationDescription(string notificationHubPath, string gcmRegistrationId, IEnumerable<string> tags) : base(notificationHubPath) { if (string.IsNullOrWhiteSpace(gcmRegistrationId)) { throw new ArgumentNullException("gcmRegistrationId"); } this.GcmRegistrationId = gcmRegistrationId; if (tags != null) { this.Tags = new HashSet<string>(tags); } } /// <summary> /// Registration id obtained from the Google Cloud Messaging service /// </summary> [DataMember(Name = ManagementStrings.GcmRegistrationId, Order = 2001, IsRequired = true)] public string GcmRegistrationId { get; set; } internal override string AppPlatForm { get { return GcmCredential.AppPlatformName; } } internal override string RegistrationType { get { return GcmCredential.AppPlatformName; } } internal override string PlatformType { get { return GcmCredential.AppPlatformName; } } internal override string GetPnsHandle() { return this.GcmRegistrationId; } internal override void SetPnsHandle(string pnsHandle) { this.GcmRegistrationId = pnsHandle; } internal override void OnValidate() { if (string.IsNullOrWhiteSpace(this.GcmRegistrationId)) { throw new InvalidDataContractException(SRClient.GCMRegistrationInvalidId); } } internal override RegistrationDescription Clone() { return new GcmRegistrationDescription(this); } } /// <summary> /// Represents Notification Hub registration description for Firebase Cloud Messaging /// </summary> [DataContract(Name = ManagementStrings.FcmRegistrationDescription, Namespace = ManagementStrings.Namespace)] public class FcmRegistrationDescription : RegistrationDescription { /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.FcmRegistrationDescription"/> class by copying fields from the given instance /// </summary> /// <param name="sourceRegistration">Another <see cref="T:Microsoft.Azure.NotificationHubs.FcmRegistrationDescription"/> instance fields values are copyed from</param> public FcmRegistrationDescription(FcmRegistrationDescription sourceRegistration) : base(sourceRegistration) { this.FcmRegistrationId = sourceRegistration.FcmRegistrationId; } /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.FcmRegistrationDescription"/> class using given Firebase Cloud Messaging registration id /// </summary> /// <param name="fcmRegistrationId">Registration id obtained from the Firebase Cloud Messaging service</param> public FcmRegistrationDescription(string fcmRegistrationId) : this(string.Empty, fcmRegistrationId, null) { } /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.FcmRegistrationDescription"/> class using given Firebase Cloud Messaging registration id and collection of tags /// </summary> /// <param name="fcmRegistrationId">Registration id obtained from the Firebase Cloud Messaging service</param> /// <param name="tags">Collection of tags. Tags can be used for audience targeting purposes.</param> public FcmRegistrationDescription(string fcmRegistrationId, IEnumerable<string> tags) : this(string.Empty, fcmRegistrationId, tags) { } #pragma warning disable CS0618 /// <summary> /// Creates instance of <see cref="T:Microsoft.Azure.NotificationHubs.FcmRegistrationDescription"/> class from <see cref="T:Microsoft.Azure.NotificationHubs.GcmRegistrationDescription"/> object. /// </summary> /// <param name="gcmRegistration">GcmRegistrationDescription object to create new FcmRegistrationDescription from.</param> internal FcmRegistrationDescription(GcmRegistrationDescription gcmRegistration) : base(gcmRegistration) { this.FcmRegistrationId = gcmRegistration.GcmRegistrationId; this.ExpirationTime = gcmRegistration.ExpirationTime; this.ExtensionData = gcmRegistration.ExtensionData; this.PushVariables = gcmRegistration.PushVariables; } #pragma warning restore CS0618 internal FcmRegistrationDescription(string notificationHubPath, string fcmRegistrationId, IEnumerable<string> tags) : base(notificationHubPath) { if (string.IsNullOrWhiteSpace(fcmRegistrationId)) { throw new ArgumentNullException("fcmRegistrationId"); } this.FcmRegistrationId = fcmRegistrationId; if (tags != null) { this.Tags = new HashSet<string>(tags); } } /// <summary> /// Registration id obtained from the Firebase Messaging service /// </summary> [DataMember(Name = ManagementStrings.FcmRegistrationId, Order = 2001, IsRequired = true)] public string FcmRegistrationId { get; set; } internal override string AppPlatForm { get { return FcmCredential.AppPlatformName; } } internal override string RegistrationType { get { return FcmCredential.AppPlatformName; } } internal override string PlatformType { get { return FcmCredential.AppPlatformName; } } internal override string GetPnsHandle() { return this.FcmRegistrationId; } internal override void SetPnsHandle(string pnsHandle) { this.FcmRegistrationId = pnsHandle; } internal override void OnValidate() { if (string.IsNullOrWhiteSpace(this.FcmRegistrationId)) { throw new InvalidDataContractException(SRClient.FCMRegistrationInvalidId); } } internal override RegistrationDescription Clone() { return new FcmRegistrationDescription(this); } } }