using System; using System.Collections.Generic; using System.IO; using InABox.API; using InABox.Core; namespace PRSServer { public class SMSProviderProperties : BaseObject { public SMSProviderType ProviderType { get; set; } public string Properties { get; set; } public static BaseSMSProviderProperties? ToProperties(SMSProviderType type, string? properties) { return type switch { SMSProviderType.Exchange => Serialization.Deserialize(properties) ?? new ExchangeProviderProperties(), SMSProviderType.IMAP => Serialization.Deserialize(properties) ?? new IMAPProviderProperties(), SMSProviderType.ASPSMS => Serialization.Deserialize(properties) ?? new ASPSMSProviderProperties(), SMSProviderType.Twilio => Serialization.Deserialize(properties) ?? new TwilioProviderProperties(), _ => null }; } public BaseSMSProviderProperties? ToProperties() { return ToProperties(ProviderType, Properties); } } public class BaseSMSProviderProperties : BaseObject { } public class ExchangeProviderProperties : BaseSMSProviderProperties { [TextBoxEditor] [EditorSequence(1)] public string Host { get; set; } [IntegerEditor] [EditorSequence(2)] public int Port { get; set; } [TextBoxEditor] [EditorSequence(3)] public string EmailAddress { get; set; } [PasswordEditor] [EditorSequence(4)] public string Password { get; set; } } public class IMAPProviderProperties : BaseSMSProviderProperties { [TextBoxEditor] [EditorSequence(1)] public string Host { get; set; } [IntegerEditor] [EditorSequence(2)] public int Port { get; set; } [TextBoxEditor] [EditorSequence(3)] public string EmailAddress { get; set; } [PasswordEditor] [EditorSequence(4)] public string Password { get; set; } } public class ASPSMSProviderProperties : BaseSMSProviderProperties { [TextBoxEditor] [EditorSequence(1)] public string Userkey { get; set; } [PasswordEditor] [EditorSequence(2)] public string APIPassword { get; set; } } public class TwilioProviderProperties : BaseSMSProviderProperties { [TextBoxEditor] [EditorSequence(1)] public string AccountSID { get; set; } [PasswordEditor] [EditorSequence(2)] public string AuthToken { get; set; } [TextBoxEditor] [EditorSequence(3)] public string Number { get; set; } } }