示例#1
0
        /// <summary>
        /// Check email or mobile id
        /// 检查Email或手机编号
        /// </summary>
        /// <param name="id">Email or mobile</param>
        /// <param name="region">Region</param>
        /// <param name="isEmail">Is email</param>
        /// <returns>Result, null means failure</returns>
        public static string?CheckId(string id, string region, out bool isEmail)
        {
            if (string.IsNullOrEmpty(id))
            {
                isEmail = false;
                return(null);
            }

            isEmail = id.Contains('@');
            if (isEmail)
            {
                // Try parse
                if (MailboxAddress.TryParse(id, out var emailAddress))
                {
                    return(emailAddress.Address);
                }
            }
            else
            {
                // Try parse and format
                var phone = AddressRegion.CreatePhone(id, region);
                if (phone != null)
                {
                    return(phone.ToInternationalFormat());
                }
            }

            return(null);
        }
示例#2
0
		public PCIBaseAddress (uint address, uint size, AddressRegion region, bool prefetchable)
		{
			this.address = address;
			this.size = size;
			this.region = region;
			this.prefetchable = prefetchable;
		}
示例#3
0
 public PCIBaseAddress(uint address, uint size, AddressRegion region, bool prefetchable)
 {
     this.address      = address;
     this.size         = size;
     this.region       = region;
     this.prefetchable = prefetchable;
 }
示例#4
0
        /// <summary>
        /// Constructor
        /// 构造函数
        /// </summary>
        /// <param name="httpClient">Http client, use IHttpClientFactory to create, services.AddHttpClient</param>
        /// <param name="smsUser">SMS User</param>
        /// <param name="smsKey">SMS key</param>
        /// <param name="region">Demestic country or region</param>
        public SMSClient(HttpClient httpClient, string smsUser, string smsKey, AddressRegion region) : base(httpClient)
        {
            this.httpClient = httpClient;
            this.smsUser    = smsUser;
            this.smsKey     = smsKey;

            Region = region;
        }
示例#5
0
        public void Extensions_UniquePhones_Tests()
        {
            // Arrange
            var phones = AddressRegion.CreatePhones(new[] { "13853259135", "+64210722065", "+8613853259135" }, "CN");

            // Act & assert
            Assert.AreEqual(2, phones.UniquePhones().Count());
        }
示例#6
0
        public void Countries_GetByIdd_Tests()
        {
            // Arrange & act
            var country = AddressRegion.GetByIdd("64");

            // Assert
            Assert.IsTrue(country?.Id == "NZ");
        }
示例#7
0
        public void Countries_GetById_Tests()
        {
            // Arrange & act
            var country = AddressRegion.GetById("CN");

            // Assert
            Assert.IsTrue(country?.Currency == "CNY");
        }
示例#8
0
        public void Countries_CreatePhone_BulkTests(string phoneNumber, string region, string formatedNumber, bool isMobile)
        {
            // Arrange & act
            var phone = AddressRegion.CreatePhone(phoneNumber);

            Assert.AreEqual(region, phone?.Region);
            Assert.AreEqual(formatedNumber, phone?.PhoneNumber);
            Assert.AreEqual(isMobile, phone?.IsMobile);
        }
示例#9
0
        public void Countries_CreatePhones_Test()
        {
            // Arrange
            var phoneNumbers = new List <string>
            {
                "+8613832922812", "+86532555792", "53255579200"
            };

            // Act
            var phones = AddressRegion.CreatePhones(phoneNumbers, "CN");

            // Assert
            Assert.AreEqual(1, phones.Count());
        }
示例#10
0
        public void CountryPhone_ToInternationalFormat_Tests()
        {
            // Arrange
            var phone = AddressRegion.CreatePhone("0210722065", "NZ");

            // Act 1
            var result1 = phone?.ToInternationalFormat();

            // Assert 1
            Assert.AreEqual("+64210722065", result1);

            // Act 2
            var result2 = phone?.ToInternationalFormat("00");

            // Assert 2
            Assert.AreEqual("0064210722065", result2);
        }
示例#11
0
        /// <summary>
        /// Constructor
        /// 构造函数
        /// </summary>
        /// <param name="httpClient">Http client, use IHttpClientFactory to create, services.AddHttpClient</param>
        /// <param name="smsUser">SMS User</param>
        /// <param name="smsKey">SMS key</param>
        /// <param name="secureManager">Secure manager</param>
        public SMSClient(HttpClient httpClient, IConfigurationSection section, Func <string, string>?secureManager = null) : this(
                httpClient,
                CryptographyUtils.UnsealData(section.GetValue <string>("SMSUser"), secureManager),
                CryptographyUtils.UnsealData(section.GetValue <string>("SMSKey"), secureManager),
                AddressRegion.GetById(section.GetValue <string>("Region")) ?? AddressRegion.CN
                )
        {
            // var templates = section.GetSection("Templates").Get<TemplateItem[]>();
            var templates = section.GetSection("Templates").GetChildren().Select(item => new TemplateItem(
                                                                                     Enum.Parse <TemplateKind>(item.GetValue <string>("Kind")),
                                                                                     item.GetValue <string>("TemplateId"),
                                                                                     item.GetValue <string>("EndPoint"),
                                                                                     item.GetValue <string>("Region"),
                                                                                     item.GetValue <string>("Language"),
                                                                                     item.GetValue <string>("Signature"),
                                                                                     item.GetValue("Default", false)
                                                                                     ));

            AddTemplates(templates);
        }
示例#12
0
 /// <summary>
 /// Async send SMS
 /// 异步发送短信
 /// </summary>
 /// <param name="kind">Template kind</param>
 /// <param name="mobiles">Mobiles</param>
 /// <param name="vars">Variables</param>
 /// <param name="template">Template</param>
 /// <returns>Result</returns>
 public async Task <ActionResult> SendAsync(TemplateKind kind, IEnumerable <string> mobiles, Dictionary <string, string> vars, TemplateItem?template = null)
 {
     return(await SendAsync(kind, AddressRegion.CreatePhones(mobiles, Region.Id), vars, template));
 }