public void ResolveProxy()
        {
            IClientProfile profile     = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE);
            var            httpRequest = new HttpRequest("urls", new Dictionary <string, string>());

            var acsRequest = new AssumeRoleRequest();

            var type         = typeof(DefaultAcsClient);
            var resolveProxy = Activator.CreateInstance(type, profile);
            var methodInfo   = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                               .Where(x => x.Name == "ResolveProxy" && x.IsPrivate)
                               .First();

            var genericMethod = methodInfo.MakeGenericMethod(typeof(AssumeRoleResponse));

            object[] parameters = { httpRequest, acsRequest };
            genericMethod.Invoke(resolveProxy, parameters);

            acsRequest.Protocol = ProtocolType.HTTP;
            Environment.SetEnvironmentVariable("HTTP_PROXY", "http://*****:*****@192.168.16.1:10");
            Environment.SetEnvironmentVariable("no_proxy", "localhost,127.0.0.1,localaddress,.localdomain.com");

            genericMethod.Invoke(resolveProxy, parameters);
            Assert.True(httpRequest.Headers.ContainsKey("Authorization"));
            Environment.SetEnvironmentVariable("HTTP_PROXY", null);

            acsRequest.Protocol = ProtocolType.HTTPS;
            Environment.SetEnvironmentVariable("HTTPS_PROXY", "https://*****:*****@192.168.16.1:10");
            genericMethod.Invoke(resolveProxy, parameters);
            Assert.True(httpRequest.Headers.ContainsKey("Authorization"));
            Environment.SetEnvironmentVariable("HTTPS_PROXY", null);
            httpRequest.Headers.Remove("Authorization");

            Environment.SetEnvironmentVariable("HTTPS_PROXY", "https://192.168.16.1:10");
            genericMethod.Invoke(resolveProxy, parameters);
            Assert.False(httpRequest.Headers.ContainsKey("Authorization"));

            Environment.SetEnvironmentVariable("HTTPS_PROXY", null);
            Environment.SetEnvironmentVariable("HTTP_PROXY", null);
            Environment.SetEnvironmentVariable("no_proxy", null);
            httpRequest.Headers.Remove("Authorization");
        }
Пример #2
0
        public void UnicodeAndQueryTest()
        {
            BasicSessionCredentials basciCredential = new BasicSessionCredentials(this.GetBasicAccessKeyId(), this.GetBasicAccessKeySecret(), this.GetToken());
            DefaultProfile          profile         = DefaultProfile.GetProfile(this.regionId, this.GetBasicAccessKeyId(), this.GetBasicAccessKeySecret());
            DefaultAcsClient        client          = new DefaultAcsClient(profile, basciCredential);

            CommonRequest request = new CommonRequest();

            request.Domain     = "ros.aliyuncs.com";
            request.Version    = "2015-09-01";
            request.Action     = "DescribeResourceTypes";
            request.UriPattern = "/resource_types";
            request.Method     = MethodType.GET;
            request.QueryParameters.Add("testParams", "SDFSDFSAetTEWTEWQO(∩_∩)O哈哈~");

            CommonResponse response = client.GetCommonResponse(request);

            Assert.Equal(200, response.HttpStatus);
            Assert.NotNull(response.Data);
        }
Пример #3
0
        private void checkConfig_Click(object sender, EventArgs e)
        {
            try
            {
                localIP.Text  = getLocalIP();
                domainIP.Text = getDomainIP();

                clientProfile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId.Text, accessKeySecret.Text);
                client        = new DefaultAcsClient(clientProfile);
                if (setRecordId())
                {
                    MessageBox.Show("设置正确!");
                }
                if (saveConfigFile())
                {
                    MessageBox.Show("保存成功!");
                }
            }
            catch (Exception) { networkStatus.Text = "无网络"; }
        }
        public void ResolveProxy()
        {
            IClientProfile profile     = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE);
            HttpRequest    httpRequest = new HttpRequest();
            var            request     = new AssumeRoleRequest();

            Type       type         = typeof(DefaultAcsClient);
            var        resolveProxy = Activator.CreateInstance(type, profile);
            MethodInfo methodInfo   = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                                      .Where(x => x.Name == "ResolveProxy" && x.IsPrivate)
                                      .First();

            MethodInfo genericMethod = methodInfo.MakeGenericMethod(typeof(AssumeRoleResponse));

            object[] parameters = { httpRequest, request };
            genericMethod.Invoke(resolveProxy, parameters);

            request.Protocol = ProtocolType.HTTP;
            genericMethod.Invoke(resolveProxy, parameters);
        }
        static void Main(string[] args)
        {
            var accessKey       = Environment.GetEnvironmentVariable("ACCESS_KEY_ID") ?? "AccessKeyId";
            var accessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET") ?? "AccessKeySecret";

            IClientProfile   profile = DefaultProfile.GetProfile("cn-hangzhou", accessKey, accessKeySecret);
            DefaultAcsClient client  = new DefaultAcsClient(profile);

            var request = new TranslateGeneralRequest();

            request.FormatType     = "text";
            request.SourceLanguage = "zh";
            request.SourceText     = "你好,很高兴见到你";
            request.TargetLanguage = "en";
            request.Method         = MethodType.POST;

            var response = client.GetAcsResponse(request);

            Console.WriteLine(response.Data.Translated);
        }
Пример #6
0
        public void WithRoleSessionDurationSecondss()
        {
            var mock = new Mock <AlibabaCloudCredentials>();
            AlibabaCloudCredentials longLivedCredentials = mock.Object;
            string         roleArn = "roleArn";
            IClientProfile profile = DefaultProfile.GetProfile("cn-shanghai", "accessKeyId", "accessKeySecret");
            STSAssumeRoleSessionCredentialsProvider instance = new STSAssumeRoleSessionCredentialsProvider(longLivedCredentials, roleArn, profile);

            long roleSessionDurationSeconds = 1000;

            // No Exception
            instance.WithRoleSessionDurationSeconds(roleSessionDurationSeconds);

            Assert.Throws <ArgumentOutOfRangeException>(
                () =>
            {
                instance.WithRoleSessionDurationSeconds(100);
            }
                );
        }
Пример #7
0
        public static void DescribeInstances()
        {
            IClientProfile   profile = DefaultProfile.GetProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
            DefaultAcsClient client  = new DefaultAcsClient(profile);

            var request = new DescribeInstancesRequest();

            try {
                var response = client.GetAcsResponse(request);
                Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
            }
            catch (ServerException e)
            {
                Console.WriteLine(e);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e);
            }
        }
Пример #8
0
        public void GetInstanceRamRoleAlibabaCloudCredential()
        {
            var profile = DefaultProfile.GetProfile();
            var defaultCredentialProvider = new DefaultCredentialProvider(profile, null);

            var exception = Assert.Throws <ClientException>(() =>
            {
                defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential();
            });

            Assert.Equal("RegionID cannot be null or empty.", exception.Message);

            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", "region_id");
            profile.DefaultClientName = "test";
            defaultCredentialProvider = new DefaultCredentialProvider(profile, null);
            var credentialProvider = defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential();

            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", null);
            Assert.Null(credentialProvider);
        }
Пример #9
0
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="PhoneNumbers">电话号码</param>
        /// <param name="code">验证码</param>
        public SendSmsResponse SendResetEmail(string PhoneNumbers, string code)
        {
            String         product         = "Dysmsapi";                           //短信API产品名称
            String         domain          = "dysmsapi.aliyuncs.com";              //短信API产品域名
            String         accessKeyId     = AliyunVariable.AliyunAccessKeyId;     //你的accessKeyId
            String         accessKeySecret = AliyunVariable.AliyunAccessKeySecret; //你的accessKeySecret
            IClientProfile profile         = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumbers = PhoneNumbers;
                //必填:短信签名-可在短信控制台中找到
                request.SignName = AliyunVariable.AliyunSignName;
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = Enum_SendEmailCode.UserRegistrationVerificationCode.Enum_GetString();
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                request.TemplateParam = new ModifyPasswordAuthentication(code).GetString();
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                request.OutId = "21212121211";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
                return(sendSmsResponse);
            }
            catch (ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
                throw e;
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
                throw e;
            }
        }
Пример #10
0
        /// <summary>
        /// 发送短信验证码
        /// </summary>
        /// <param name="PhoneNumbers"></param>
        /// <param name="Code"></param>
        /// <returns></returns>
        public static bool SendCode(string PhoneNumbers, string Code)
        {
            bool res = false;

            string         product = "Dysmsapi";              //短信API产品名称(短信产品名固定,无需修改)
            string         domain  = "dysmsapi.aliyuncs.com"; //短信API产品域名(接口地址固定,无需修改)
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            //IAcsClient client = new DefaultAcsClient(profile);
            // SingleSendSmsRequest request = new SingleSendSmsRequest();
            //初始化ascClient,暂时不支持多region(请勿修改)
            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
                request.PhoneNumbers = PhoneNumbers;
                //必填:短信签名-可在短信控制台中找到
                request.SignName = SignName;
                //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
                request.TemplateCode = "SMS_156471344";
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                request.TemplateParam = "{\"code\":\"" + Code + "\"}";
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                //request.OutId = "yourOutId";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);

                if (sendSmsResponse.Message == "OK")
                {
                    res = true;
                }
            }
            catch
            {
            }

            return(res);
        }
Пример #11
0
 /// <summary>
 /// 预热cdn缓存
 /// </summary>
 public bool PurgeObjectCache(string cdnDomain, string key, out string requestId,
                              out string taskIdOrMsg, string objectType = "File", string regionId = "cn-hangzhou")
 {
     try
     {
         var request = new PurgeObjectCachesRequest()
         {
             DomainName = RemoveHttpString(cdnDomain),
             ObjectPath = key,
             ObjectType = objectType,
         };
         var profile  = DefaultProfile.GetProfile(regionId, _accessKeyId, _accessKeySecret);
         var client   = new DefaultAcsClient(profile);
         var response = client.DoAction(request);
         var xmlTxt   = ConvertToString(response.Content);
         var xmlDoc   = new XmlDocument();
         xmlDoc.LoadXml(xmlTxt);
         if (response.Status == 200)
         {
             var firstNode = xmlDoc.SelectSingleNode("PurgeObjectCachesResponse");
             requestId   = firstNode.SelectSingleNode("RequestId").InnerText;
             taskIdOrMsg = firstNode.SelectSingleNode("RefreshTaskId").InnerText;
             return(true);
         }
         else
         {
             var firstNode = xmlDoc.SelectSingleNode("Error");
             requestId   = firstNode.SelectSingleNode("RequestId").InnerText;
             taskIdOrMsg = string.Format("{0} : {1}",
                                         firstNode.SelectSingleNode("Code").InnerText,
                                         firstNode.SelectSingleNode("Message").InnerText);
             return(false);
         }
     }
     catch (Exception ex)
     {
         requestId   = string.Empty;
         taskIdOrMsg = ex.Message;
         return(false);
     }
 }
Пример #12
0
        //在某产品下申请创建一批设备
        private static void TestApplyDeviceWithNames()
        {
            IClientProfile              clientProfile = DefaultProfile.GetProfile("<your-region-id>", "<your-access-key-id>", "<your-access-key-secret>");
            DefaultAcsClient            client        = new DefaultAcsClient(clientProfile);
            ApplyDeviceWithNamesRequest request       = new ApplyDeviceWithNamesRequest();

            request.ProductKey = "<productKey>";
            List <String> DeviceNames = new List <string>();

            for (int i = 1; i < 20; i++)
            {
                if (i < 10)
                {
                    DeviceNames.Add("device_20171206_00" + i);
                }
                else
                {
                    DeviceNames.Add("device_20171206_0" + i);
                }
            }
            request.DeviceNames = DeviceNames;

            try
            {
                ApplyDeviceWithNamesResponse response = client.GetAcsResponse(request);
                Console.WriteLine(response.Success);
                Console.WriteLine(response.ErrorMessage);
                Console.WriteLine("apply id: " + response.ApplyId);
            }
            catch (ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
            }
            Console.ReadKey();
        }
        public void GetDescribeAccessPointsResponse()
        {
            var accessKey       = Environment.GetEnvironmentVariable("ACCESS_KEY_ID") ?? "AccessKeyId";
            var accessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET") ?? "AccessKeySecret";
            var regionId        = "cn-hangzhou";

            var profile = DefaultProfile.GetProfile(regionId, accessKey, accessKeySecret);
            var client  = new DefaultAcsClient(profile);

            var request = new DescribeAccessPointsRequest();

            request.PageSize   = 10;
            request.PageNumber = 20;
            request.Type       = "type";

            var filter1     = new List <DescribeAccessPointsRequest.Filter>();
            var filterItem1 = new DescribeAccessPointsRequest.Filter();

            filterItem1.Key    = "key";
            filterItem1.Values = new List <string> {
                "value"
            };
            filter1.Add(filterItem1);

            request.Filters = filter1;

            try
            {
                var response = client.GetAcsResponse(request);
                Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
            }
            catch (ServerException ex)
            {
                Console.WriteLine(ex.ToString());
            }
            catch (ClientException ex)
            {
                Console.WriteLine("ErrorCode" + ex.ErrorCode);
                Console.WriteLine("ErrorMessage" + ex.ErrorMessage);
            }
        }
Пример #14
0
        public async Task <SendSmsResponse> SendSmsAsync(SendSmsRequest request)
        {
            var            verifiedCode    = new Random().Next(100000, 999999).ToString();
            string         product         = "Dysmsapi";              //短信API产品名称(短信产品名固定,无需修改)
            string         domain          = "dysmsapi.aliyuncs.com"; //短信API产品域名(接口地址固定,无需修改)
            string         accessKeyId     = "";                      //你的accessKeyId,此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
            string         accessKeySecret = "";                      //你的accessKeySecret,此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
            IClientProfile profile         = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient      acsClient = new DefaultAcsClient(profile);
            SendSmsResponse response  = null;
            await Task.Run(() =>
            {
                try
                {
                    //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
                    request.PhoneNumbers = "18771506573";
                    //必填:短信签名-可在短信控制台中找到
                    request.SignName = "凡迹网";
                    //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
                    request.TemplateCode = "SMS_107090067";
                    //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                    request.TemplateParam = "{\"code\":\"dalao\"}";
                    //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                    request.OutId = "yourOutId";
                    //请求失败这里会抛ClientException异常
                    response = acsClient.GetAcsResponse(request);
                }
                catch (ServerException e)
                {
                    throw e;
                }
                catch (ClientException e)
                {
                    throw e;
                }
            });

            return(response);
        }
Пример #15
0
        static void Main(string[] args)
        {
            IClientProfile   profile = DefaultProfile.GetProfile("cn-hangzhou", "<accessKeyId>", "<secret>");
            DefaultAcsClient client  = new DefaultAcsClient(profile);
            CommonRequest    request = new CommonRequest();

            request.Method  = MethodType.POST;
            request.Domain  = "dysmsapi.aliyuncs.com";
            request.Version = "2017-05-25";
            request.Action  = "SendSms";
            // request.Protocol = ProtocolType.HTTP


            // 随机生成6位验证码
            var rd   = new Random();
            var code = new
            {
                code = rd.Next(100000, 999999)
            };


            request.AddQueryParameters("PhoneNumbers", "18173608896");
            request.AddQueryParameters("SignName", "jonty博客");
            request.AddQueryParameters("TemplateCode", "SMS_197465032");

            // 验证码参数,code 转json格式
            request.AddBodyParameters("TemplateParam", code.ToJson());
            try
            {
                CommonResponse response = client.GetCommonResponse(request);
                Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
            }
            catch (ServerException e)
            {
                Console.WriteLine(e);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e);
            }
        }
Пример #16
0
        public void Send(string phoneNumber, string code)
        {
            IClientProfile   profile = DefaultProfile.GetProfile("cn-hangzhou", _config.Value.AccessKeyId, string.Empty);
            DefaultAcsClient client  = new DefaultAcsClient(profile);
            CommonRequest    request = new CommonRequest();

            request.Method   = MethodType.POST;
            request.Domain   = _config.Value.Domain;
            request.Version  = "2017-05-25";
            request.Action   = "SendSms";
            request.Protocol = ProtocolType.HTTP;
            request.AddQueryParameters("PhoneNumbers", phoneNumber);
            request.AddQueryParameters("SignName", _config.Value.SignName);
            request.AddQueryParameters("TemplateCode", _config.Value.TemplateCode);
            request.AddQueryParameters("TemplateParam", JsonConvert.SerializeObject(new MessageContent {
                Code = code
            }, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }));

            CommonResponse response = client.GetCommonResponse(request);

            Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));

            if (response.HttpStatus >= 400)
            {
                AliyunSMSReponse content = null;

                try
                {
                    content = JsonConvert.DeserializeObject <AliyunSMSReponse>(response.Data);
                }
                catch (Exception ex)
                {
                    throw new MessageException(Constants.CODE_UNKONWN_ERROR, response.Data, ex);
                }

                throw new MessageException(Constants.CODE_UNKONWN_ERROR, content.Message);
            }
        }
Пример #17
0
        public void AddEndpoint()
        {
            var                  endpointName  = "AddEndpoint.someString";
            var                  regionId      = "AddEndpoint.someString";
            var                  productName   = "product_name";
            var                  productDomain = "product_domain";
            List <Endpoint>      endpoints;
            List <ProductDomain> products;

            DefaultProfile.ClearProfile();
            var profile = DefaultProfile.GetProfile();

            // Add endpoint
            profile.AddEndpoint(endpointName, regionId, productName, productDomain);
            endpoints = profile.GetEndpoints(regionId, productName);
            Assert.NotNull(endpoints);
            foreach (var endpoint in endpoints)
            {
                Assert.Equal(endpointName, endpoint.Name);
                products = endpoint.ProductDomains;
                foreach (var product in products)
                {
                    Assert.Equal(productName, product.ProductName);
                    Assert.Equal(productDomain, product.DomainName);
                }
            }

            profile.AddEndpoint(endpointName, regionId, productName, productDomain);
            endpoints = profile.GetEndpoints(regionId, productName);
            Assert.NotNull(endpoints);
            foreach (var endpoint in endpoints)
            {
                Assert.Equal(endpointName, endpoint.Name);
                products = endpoint.ProductDomains;
                foreach (var product in products)
                {
                    Assert.Equal(productName, product.ProductName);
                    Assert.Equal(productDomain, product.DomainName);
                }
            }
        }
Пример #18
0
        public static SendBatchSmsResponse sendSms()
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);

            IAcsClient          acsClient = new DefaultAcsClient(profile);
            SendBatchSmsRequest request   = new SendBatchSmsRequest();
            //request.Protocol = ProtocolType.HTTPS;
            //request.TimeoutInMilliSeconds = 1;

            SendBatchSmsResponse response = null;

            try
            {
                //必填:待发送手机号。支持JSON格式的批量调用,批量上限为100个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumberJson = "[\"1500000000\",\"1500000001\"]";
                //必填:短信签名-支持不同的号码发送不同的短信签名
                request.SignNameJson = "[\"云通信\",\"云通信\"]";
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = "SMS_1000000";
                //必填:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
                request.TemplateParamJson = "[{\"name\":\"Tom\", \"code\":\"123\"},{\"name\":\"Jack\", \"code\":\"456\"}]";
                //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
                //request.SmsUpExtendCodeJson = "[\"90997\",\"90998\"]";

                //请求失败这里会抛ClientException异常
                response = acsClient.GetAcsResponse(request);
            }
            catch (ServerException e)
            {
                Console.Write(e.ErrorCode);
            }
            catch (ClientException e)
            {
                Console.Write(e.ErrorCode);
                Console.Write(e.Message);
            }
            return(response);
        }
Пример #19
0
        public static AssumeRoleResponse.Credentials_ GetSecurityToken()
        {
            if (credentials != null && (DateTime.Now - _timeStamp).Seconds < 30)
            {
                //防止请求过于频繁,设置5分钟请求一次。
                return(credentials);
            }
            // 构建一个 Aliyun Client, 用于发起请求
            // 构建Aliyun Client时需要设置AccessKeyId和AccessKeySevcret
            // STS是Global Service, API入口位于杭州, 这里Region填写"cn-hangzhou"
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            var            client  = new DefaultAcsClient(profile);

            // 构造AssumeRole请求
            var request = new AssumeRoleRequest();

            // 指定角色Arn
            request.RoleArn         = "acs:ram::1724377057077130:role/myfirstrole";
            request.RoleSessionName = "alice";
            // 可以设置Token有效期,可选参数,默认3600秒;
            request.DurationSeconds = 3600;
            // 可以设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限;
            // request.Policy="<policy-content>"
            try
            {
                AssumeRoleResponse response = client.GetAcsResponse(request);
                //Console.WriteLine("AccessKeyId: " + response.Credentials.AccessKeyId);
                //Console.WriteLine("AccessKeySecret: " + response.Credentials.AccessKeySecret);
                //Console.WriteLine("SecurityToken: " + response.Credentials.SecurityToken);
                ////Token过期时间;服务器返回UTC时间,这里转换成北京时间显示;
                //Console.WriteLine("Expiration: " + DateTime.Parse(response.Credentials.Expiration).ToLocalTime());
                credentials = response.Credentials;
                _timeStamp  = DateTime.Now;
                return(credentials);
            }
            catch (Exception ex)
            {
                return(null);
                //记录错误日志
            }
        }
Пример #20
0
        private async Task send(string[] receivers, SmsInformation information)
        {
            await Task.Run(() =>
            {
                IClientProfile profile  = DefaultProfile.GetProfile(_profile_default, _aliYunApiSetting.accessKeyId, _aliYunApiSetting.secret);
                DefaultAcsClient client = new DefaultAcsClient(profile);
                CommonRequest request   = new CommonRequest();

                request.Method  = MethodType.POST;
                request.Domain  = _aliApiDomain;
                request.Version = _aliApiVersion;
                request.Action  = _AliApiAction;
                // request.Protocol = ProtocolType.HTTP;

                string phoneNumbers = StringUtil.SplitJoint(receivers);

                request.AddQueryParameters(_param_PhoneNumbers, phoneNumbers);
                request.AddQueryParameters(_param_SignName, information.SignName);
                request.AddQueryParameters(_param_TemplateCode, information.TemplateCode);
                request.AddQueryParameters(_param_TemplateParam, information.TemplateParam);

                try
                {
                    CommonResponse response = client.GetCommonResponse(request);
                    var apiResult           = JsonConvert.DeserializeObject <AliApiResult>(response.Data);

                    if (apiResult.Code != _ApiResult_OK)
                    {
                        sendErrorLog(Localization.Sy000100.ToString(), receivers, information);
                    }
                }
                catch (ServerException e)
                {
                    sendErrorLog(e.Message, receivers, information);
                }
                catch (ClientException e)
                {
                    sendErrorLog(e.Message, receivers, information);
                }
            });
        }
Пример #21
0
        static void Main()
        {
            IClientProfile         clientProfile = DefaultProfile.GetProfile("cn-hangzhou", "<your access key id>", "<your access key secret>");
            DefaultAcsClient       client        = new DefaultAcsClient(clientProfile);
            QueryDeviceStatRequest request       = new QueryDeviceStatRequest();

            request.AppKey = < Your AppKey >;

            request.QueryType  = "Total";
            request.DeviceType = "All";
            String startTime = DateTime.UtcNow.AddDays(-7).ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");
            String endTime   = DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");

            request.StartTime = startTime;
            request.EndTime   = endTime;

            try
            {
                QueryDeviceStatResponse response = client.GetAcsResponse(request);
                Console.WriteLine("RequestId:" + response.RequestId);
                foreach (QueryDeviceStatResponse.AppDeviceStat stat in response.AppDeviceStats)
                {
                    Console.WriteLine("time:" + stat.Time);
                    Console.WriteLine("DeviceType:" + stat.DeviceType);
                    Console.WriteLine("count:" + stat.Count);
                }
                Console.ReadLine();
            }
            catch (ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
                Console.ReadLine();
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
                Console.ReadLine();
            }
        }
        public static IServiceCollection AddAliyun(this IServiceCollection services, IMMSetting setting)
        {
            Requires.NotNull(setting, nameof(setting));

            DefaultProfile.AddEndpoint(setting.Region, setting.Region, "Imm", setting.IMMEndpoint);
            var immProfile = DefaultProfile.GetProfile(setting.Region, setting.AccessKeyId, setting.AccessKeySecret);
            var immClient  = new IMMClient(immProfile);

            DefaultProfile.AddEndpoint(setting.Region, setting.Region, "Sts", setting.STSEndpoint);
            var stsProfile = DefaultProfile.GetProfile(setting.Region, setting.AccessKeyId, setting.AccessKeySecret);
            var stsClient  = new STSClient(stsProfile);

            var ossClient = new OssClient(setting.OSSEndpoint, setting.AccessKeyId, setting.AccessKeySecret);

            services.AddSingleton(setting);
            services.AddSingleton(immClient);
            services.AddSingleton(stsClient);
            services.AddSingleton(ossClient);

            return(services);
        }
        public void TestAddNewEndPointManually()
        {
            var profile    = DefaultProfile.GetProfile("cn-wenzhou", GetBasicAccessKeyId(), GetBasicAccessKeySecret());
            var testClient = new Acs.Core.DefaultAcsClient(profile);

            DescribeRegionsRequest request = new DescribeRegionsRequest();

            var exceptionMsg = Assert.Throws <ClientException>(() =>
            {
                var response = testClient.GetAcsResponse(request);
            });

            Assert.Equal("Can not find endpoint to access.", exceptionMsg.ErrorMessage);

            DefaultProfile.AddEndpoint("cn-wenzhou", "cn-wenzhou", "Ecs", "abc.cn-wenzhou.endpoint-test.exception.com");

            Assert.Throws <ClientException>(() =>
            {
                testClient.GetAcsResponse(request);
            });
        }
Пример #24
0
        static void Main(string[] args)
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", "*********", "********"); // todo: 补充AK信息

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", "Dybaseapi", "dybaseapi.aliyuncs.com");

            DefaultAcsClient client = new DefaultAcsClient(profile);

            string queueName   = "Alicom-Queue-***********-SmsReport"; // todo: 补充队列名称
            string messageType = "SmsReport";                          // todo: 补充消息类型

            int maxThread = 2;

            for (int i = 0; i < maxThread; i++)
            {
                TestTask testTask = new TestTask("PullMessageTask-thread-" + i, messageType, queueName, client);
                Thread   t        = new Thread(new ThreadStart(testTask.Handle));
                //启动线程
                t.Start();
            }
        }
Пример #25
0
        public void GetInstanceRamRoleAlibabaCloudCredential2()
        {
            var profile = DefaultProfile.GetProfile();

            profile.DefaultClientName = "default";
            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", "region_id");
            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_ECS_METADATA", "role_name");

            var ecsRamRoleCredential = new EcsRamRoleCredential("fakeak", "fakeaks", "fakesession", DateTime.Now.ToString(), 4000);
            var mockEcsMetaService   = new Mock <ECSMetadataServiceCredentialsFetcher>();

            mockEcsMetaService.Setup(x => x.Fetch()).Returns(ecsRamRoleCredential);
            var eCSMetadataServiceCredentialsFetcher = mockEcsMetaService.Object;

            var defaultCredentialProvider = new Core.Auth.Provider.DefaultCredentialProvider(profile, eCSMetadataServiceCredentialsFetcher);
            var actualCredential          = defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential();

            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", null);
            Assert.NotNull(actualCredential);
            Assert.Equal("fakeak", actualCredential.GetAccessKeyId());
        }
Пример #26
0
        public static bool SendCaptcha(string phone, string captcha)
        {
            var product         = "Dysmsapi";              //短信API产品名称
            var domain          = "dysmsapi.aliyuncs.com"; //短信API产品域名
            var accessKeyId     = " ";                     //你的accessKeyId
            var accessKeySecret = " ";                     //你的accessKeySecret
            var profile         = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            var acsClient = new DefaultAcsClient(profile);
            var request   = new SendSmsRequest
            {
                PhoneNumbers  = phone,
                SignName      = "脚印温馨提醒",
                TemplateCode  = "SMS_134250397",
                TemplateParam = "{\"code\":\"" + captcha + "\"}"
            };
            var response = acsClient.GetAcsResponse(request);

            return(true);
        }
Пример #27
0
        public virtual AlibabaCloudCredentials GetRamRoleArnAlibabaCloudCredential()
        {
            if (String.IsNullOrEmpty(this.accessKeyId) && String.IsNullOrEmpty(this.accessKeySecret) && String.IsNullOrEmpty(this.regionId))
            {
                throw new ClientException("Missing required variable option for 'default Client'");
            }
            RamRoleArnCredential credential = new RamRoleArnCredential(
                this.accessKeyId,
                this.accessKeySecret,
                this.roleArn,
                this.roleSessionName,
                STSAssumeRoleSessionCredentialsProvider.GetNewRoleSessionName(),
                STSAssumeRoleSessionCredentialsProvider.DEFAULT_DURATION_SECONDS);

            this.defaultProfile = DefaultProfile.GetProfile(this.regionId, this.accessKeyId, this.accessKeySecret);

            var sTSAssumeRoleSessionCredentialsProvider = (STSAssumeRoleSessionCredentialsProvider)alibabaCloudCredentialProvider;
            RamRoleArnCredential ramRoleArnCredential   = (RamRoleArnCredential)sTSAssumeRoleSessionCredentialsProvider.GetCredentials();

            return(ramRoleArnCredential);
        }
Пример #28
0
 T getResponse <T>(AcsRequest <T> request) where T : AcsResponse
 {
     while (true)
     {
         try
         {
             var profile = DefaultProfile.GetProfile(
                 "cn-qingdao",
                 AccessKeyID,
                 AccessKeySecret
                 );
             var client = new DefaultAcsClient(profile);
             return(client.GetAcsResponse(request));
         }
         catch (Exception ex)
         {
             ErrorHandler(ex.Message);
         }
         Thread.Sleep(10000);
     }
 }
Пример #29
0
        public bool SingleSendMail(SingleSendMailModel model)
        {
            var                   regionId    = ConfigHelper.GetValuesByKey("EmailRegionId");
            var                   accessKeyId = ConfigHelper.GetValuesByKey("EmailAccessKeyId");
            var                   secret      = ConfigHelper.GetValuesByKey("EmailSecret");
            IClientProfile        profile     = DefaultProfile.GetProfile(regionId, accessKeyId, secret);
            IAcsClient            client      = new DefaultAcsClient(profile);
            SingleSendMailRequest request     = new SingleSendMailRequest();

            try
            {
                request.AccountName    = model.AccountName;
                request.FromAlias      = model.FromAlias;
                request.AddressType    = model.AddressType;
                request.TagName        = model.TagName;
                request.ReplyToAddress = model.ReplyToAddress;
                request.ToAddress      = model.ToAddress;
                request.Subject        = model.Subject;
                if (model.EmailBodyType == EmailBodyType.Html)
                {
                    request.HtmlBody = model.EMailBody;
                }
                else
                {
                    request.TextBody = model.EMailBody;
                }
                SingleSendMailResponse httpResponse = client.GetAcsResponse(request);
                return(httpResponse.HttpResponse.Status == 200);
            }
            catch (ServerException e)
            {
                LogHelper.Logger.Error(string.Format(MessageTips.SendEmailFail, "服务端原因", e.Message), e);
                throw new SendEmailException(string.Format(MessageTips.SendEmailFail, "服务端原因", e.Message), e);
            }
            catch (ClientException e)
            {
                LogHelper.Logger.Error(string.Format(MessageTips.SendEmailFail, "客服端原因", e.Message), e);
                throw new SendEmailException(string.Format(MessageTips.SendEmailFail, "客服端原因", e.Message), e);
            }
        }
Пример #30
0
        /// <summary>
        /// 阿里云
        /// </summary>
        /// <param name="ramcode"></param>
        /// <param name="PhoneNumbers"></param>
        public string sendCode(string ramcode, string PhoneNumbers)
        {
            string returnCode      = string.Empty;
            String product         = "Dysmsapi";                       //短信API产品名称
            String domain          = "dysmsapi.aliyuncs.com";          //短信API产品域名
            String accessKeyId     = "LTAIZiLOrvoMRPS3";               //你的accessKeyId
            String accessKeySecret = "SB93bYFfz4BhIU3cJqkj6Fx9omUD6i"; //你的accessKeySecret

            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            //IAcsClient client = new DefaultAcsClient(profile);
            // SingleSendSmsRequest request = new SingleSendSmsRequest();

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumbers = PhoneNumbers;//"13567939495";
                //必填:短信签名-可在短信控制台中找到
                request.SignName = "朗朗出行";
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = "SMS_80220076";//SMS_78580141
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                request.TemplateParam = "{\"number\":\"" + ramcode + "\"}";
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                request.OutId = "101010";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
                returnCode = sendSmsResponse.Code;
                System.Console.WriteLine(sendSmsResponse.Message);
            }
            catch (ServerException e)
            {
                System.Console.WriteLine(e.Message);
            }
            return(returnCode);
        }