SMSProviderProperties.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using InABox.API;
  5. using InABox.Core;
  6. namespace PRSServer
  7. {
  8. public class SMSProviderProperties : BaseObject
  9. {
  10. public SMSProviderType ProviderType { get; set; }
  11. public string Properties { get; set; }
  12. public static BaseSMSProviderProperties? ToProperties(SMSProviderType type, string? properties)
  13. {
  14. return type switch
  15. {
  16. SMSProviderType.Exchange =>
  17. Serialization.Deserialize<ExchangeProviderProperties>(properties)
  18. ?? new ExchangeProviderProperties(),
  19. SMSProviderType.IMAP =>
  20. Serialization.Deserialize<IMAPProviderProperties>(properties)
  21. ?? new IMAPProviderProperties(),
  22. SMSProviderType.ASPSMS =>
  23. Serialization.Deserialize<ASPSMSProviderProperties>(properties)
  24. ?? new ASPSMSProviderProperties(),
  25. SMSProviderType.Twilio =>
  26. Serialization.Deserialize<TwilioProviderProperties>(properties)
  27. ?? new TwilioProviderProperties(),
  28. _ => null
  29. };
  30. }
  31. public BaseSMSProviderProperties? ToProperties()
  32. {
  33. return ToProperties(ProviderType, Properties);
  34. }
  35. }
  36. public class BaseSMSProviderProperties : BaseObject
  37. {
  38. }
  39. public class ExchangeProviderProperties : BaseSMSProviderProperties
  40. {
  41. [TextBoxEditor]
  42. [EditorSequence(1)]
  43. public string Host { get; set; }
  44. [IntegerEditor]
  45. [EditorSequence(2)]
  46. public int Port { get; set; }
  47. [TextBoxEditor]
  48. [EditorSequence(3)]
  49. public string EmailAddress { get; set; }
  50. [PasswordEditor]
  51. [EditorSequence(4)]
  52. public string Password { get; set; }
  53. }
  54. public class IMAPProviderProperties : BaseSMSProviderProperties
  55. {
  56. [TextBoxEditor]
  57. [EditorSequence(1)]
  58. public string Host { get; set; }
  59. [IntegerEditor]
  60. [EditorSequence(2)]
  61. public int Port { get; set; }
  62. [TextBoxEditor]
  63. [EditorSequence(3)]
  64. public string EmailAddress { get; set; }
  65. [PasswordEditor]
  66. [EditorSequence(4)]
  67. public string Password { get; set; }
  68. }
  69. public class ASPSMSProviderProperties : BaseSMSProviderProperties
  70. {
  71. [TextBoxEditor]
  72. [EditorSequence(1)]
  73. public string Userkey { get; set; }
  74. [PasswordEditor]
  75. [EditorSequence(2)]
  76. public string APIPassword { get; set; }
  77. }
  78. public class TwilioProviderProperties : BaseSMSProviderProperties
  79. {
  80. [TextBoxEditor]
  81. [EditorSequence(1)]
  82. public string AccountSID { get; set; }
  83. [PasswordEditor]
  84. [EditorSequence(2)]
  85. public string AuthToken { get; set; }
  86. [TextBoxEditor]
  87. [EditorSequence(3)]
  88. public string Number { get; set; }
  89. }
  90. }