예제 #1
0
 public void TestInitialize()
 {
     this.config             = new BceClientConfiguration();
     this.config.Credentials = new DefaultBceCredentials(this.ak, this.sk);
     this.config.Endpoint    = this.endpoint;
     this.client             = new StsClient(this.config);
 }
예제 #2
0
 public void TestInitialize()
 {
     this.config             = new BceClientConfiguration();
     this.config.Credentials =
         new DefaultBceCredentials("d154df3e2ac44e53b566db53ec644a7e", "2e8445d62bc84011991b4306b91f19f8");
     this.config.Endpoint = "http://10.107.37.40:8586";
     this.client          = new StsClient(this.config);
 }
예제 #3
0
        public static BosClient CreateBosClient(Settings settings)
        {
            BceClientConfiguration clientConfig = new BceClientConfiguration();

            clientConfig.Credentials = new DefaultBceCredentials(settings.AccessKey, settings.SecretAccessKey);
            clientConfig.Endpoint    = settings.EndPoint;

            return(new BosClient(clientConfig));
        }
예제 #4
0
            public void TestRequestWithInvalidCredential()
            {
                BceClientConfiguration bceClientConfiguration = new BceClientConfiguration();

                bceClientConfiguration.Credentials = new DefaultBceCredentials("test", "test");
                bceClientConfiguration.Endpoint    = this.endpoint;
                this.client = new BosClient(bceClientConfiguration);
                this.client.ListBuckets();
            }
 public BosOpenStorageService(OssConfig config)
 {
     if (config == null)
     {
         throw new ArgumentNullException("config can not be null!");
     }
     _ossConfig                       = config;
     _clientConfiguration             = new BceClientConfiguration();
     _clientConfiguration.Credentials = new DefaultBceCredentials(config.AccessID, config.AccessKey);
     _clientConfiguration.Endpoint    = config.EndPoint;
     _bosClient                       = new BosClient(_clientConfiguration);
 }
예제 #6
0
        private static BosClient GenerateBosClient()
        {
            const string accessKeyId     = "your-access-key-id";     // 用户的Access Key ID
            const string secretAccessKey = "your-secret-access-key"; // 用户的Secret Access Key
            const string endpoint        = "domain-name";            // 指定BOS服务域名

            // 初始化一个BosClient
            BceClientConfiguration config = new BceClientConfiguration();

            config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
            config.Endpoint    = endpoint;

            return(new BosClient(config));
        }
예제 #7
0
    /**
     * 获取单例的配置
     *
     * */
    public static BceClientConfiguration GetBceClientConfiguration()
    {
        lock (BceClientConfiguration_Lock)
        {
            if (config == null)
            {
                config             = new BceClientConfiguration();
                config.Credentials = new DefaultBceCredentials(BosConfig.AccessKeyId, BosConfig.AccessKey);
                config.Endpoint    = BosConfig.Endpoint;
            }
        }

        return(config);
    }
예제 #8
0
            public void TestPublicReadWrite()
            {
                string objectKey = "objectPublicReadWrite";
                string data      = "dataPublicReadWrite";

                this.client.SetBucketAcl(this.bucketName, BosConstants.CannedAcl.PublicReadWrite);
                GetBucketAclResponse response = this.client.GetBucketAcl(this.bucketName);

                Assert.AreEqual(response.Owner.Id, this.grantee.Id);

                List <Grant>   grants       = new List <Grant>();
                List <Grantee> granteeOwner = new List <Grantee>();

                granteeOwner.Add(this.grantee);
                List <string> permissionOwner = new List <string>();

                permissionOwner.Add(BosConstants.Permission.FullControl);
                grants.Add(new Grant()
                {
                    Grantee = granteeOwner, Permission = permissionOwner
                });
                List <Grantee> granteeAnonymous = new List <Grantee>();

                granteeAnonymous.Add(this.anonymous);
                List <string> permissionAnonymous = new List <string>();

                permissionAnonymous.Add(BosConstants.Permission.Read);
                permissionAnonymous.Add(BosConstants.Permission.Write);
                grants.Add(new Grant()
                {
                    Grantee = granteeAnonymous, Permission = permissionAnonymous
                });

                Assert.AreEqual(response.AccessControlList.Count, grants.Count);
                this.client.PutObject(this.bucketName, objectKey, data);
                BceClientConfiguration bceClientConfiguration = new BceClientConfiguration();

                bceClientConfiguration.Endpoint = this.endpoint;
                BosClient bosAnonymous = new BosClient(bceClientConfiguration);

                Assert.AreEqual(
                    Encoding.Default.GetString(bosAnonymous.GetObjectContent(this.bucketName, objectKey)), data);

                bosAnonymous.PutObject(this.bucketName, "anonymous", "dataAnonymous");
                Assert.AreEqual(
                    Encoding.Default.GetString(bosAnonymous.GetObjectContent(this.bucketName, "anonymous")),
                    "dataAnonymous");
            }
예제 #9
0
        /// <summary>
        /// 上传指定文件到百度云BOS。
        /// </summary>
        /// <param name="file">待上传的文件</param>
        /// <param name="suffix">文件在云空间里的后缀</param>
        /// <exception cref="Exception"/>
        public Task Upload(string file, string suffix)
        {
            BceClientConfiguration config = new BceClientConfiguration();

            config.Credentials = new DefaultBceCredentials(id, key);
            config.Endpoint    = endpoint;
            if (timeout > 0)
            {
                config.ReadWriteTimeoutInMillis = timeout;
            }

            BosClient client = new BosClient(config);

            client.PutObject(bucket, path + suffix, new FileInfo(file));
            return(Task.CompletedTask);
        }
예제 #10
0
        /// <summary>
        /// Creates HttpClient method object based on the specified request and
        /// populates any parameters, headers, etc. from the internal request.
        /// </summary>
        /// <param name="request"> The request to convert to an HttpClient method object. </param>
        /// <returns> The converted HttpClient method object with any parameters, headers, etc. from the original request set. </returns>
        private static HttpWebRequest CreateHttpWebRequest(InternalRequest request)
        {
            BceClientConfiguration config      = request.Config;
            IBceCredentials        credentials = config.Credentials;
            string uri           = request.Uri.AbsoluteUri;
            string encodedParams = HttpUtils.GetCanonicalQueryString(request.Parameters, false);

            if (encodedParams.Length > 0)
            {
                uri += "?" + encodedParams;
            }
            var httpWebRequest = WebRequest.Create(uri) as HttpWebRequest;

            httpWebRequest.Timeout          = config.TimeoutInMillis ?? BceClientConfiguration.DefaultTimeoutInMillis;
            httpWebRequest.ReadWriteTimeout =
                config.ReadWriteTimeoutInMillis ?? BceClientConfiguration.DefaultReadWriteTimeoutInMillis;
            if (request.Range != null && request.Range.Length == 2)
            {
                AddRange(httpWebRequest, request.Range);
            }
            if (!string.IsNullOrEmpty(config.ProxyHost) && config.ProxyPort.GetValueOrDefault() > 0)
            {
                WebProxy proxy = new WebProxy(config.ProxyHost, config.ProxyPort.GetValueOrDefault());
                if (config.ProxyCredentials != null)
                {
                    proxy.Credentials = config.ProxyCredentials;
                }
                httpWebRequest.Proxy = proxy;
            }
            if (config.UseNagleAlgorithm != null)
            {
                httpWebRequest.ServicePoint.UseNagleAlgorithm = (bool)config.UseNagleAlgorithm;
            }
            httpWebRequest.ServicePoint.MaxIdleTime =
                config.MaxIdleTimeInMillis ?? BceClientConfiguration.DefaultMaxIdleTimeInMillis;
            httpWebRequest.ServicePoint.ConnectionLimit =
                config.ConnectionLimit ?? BceClientConfiguration.DefaultConnectionLimit;
            httpWebRequest.ServicePoint.Expect100Continue = request.Expect100Continue;
            httpWebRequest.Method = request.HttpMethod;
            return(httpWebRequest);
        }
예제 #11
0
 public void TestInitialize()
 {
     this.bucketName = (BucketPrefix + new Random().Next().ToString("X")).ToLower();
     this.owner      = new User()
     {
         Id = this.userId, DisplayName = "PASSPORT:105015426"
     };
     this.grantee = new Grantee()
     {
         Id = this.userId
     };
     this.anonymous = new Grantee()
     {
         Id = "*"
     };
     this.config             = new BceClientConfiguration();
     this.config.Credentials = new DefaultBceCredentials(this.ak, this.sk);
     this.config.Endpoint    = this.endpoint;
     this.client             = new BosClient(this.config);
     this.client.CreateBucket(this.bucketName);
 }
예제 #12
0
        public Task <UploadResult> InvokeAsync(string uploadFileName, string savePath, byte[] uploadFileBytes)
        {
            var          bosAccessKey = EditorConfig.GetString("BosAccessKey");
            var          bosSecretKey = EditorConfig.GetString("BosSecretKey");
            var          bosBucket    = EditorConfig.GetString("BosBucket");
            var          bosEndpoint  = EditorConfig.GetString("BosEndpoint");
            var          bosDomain    = EditorConfig.GetString("BosDomain");
            UploadResult result       = new UploadResult()
            {
                OriginFileName = uploadFileName, State = UploadState.Unknown
            };

            try
            {
                BceClientConfiguration clientConfig = new BceClientConfiguration();
                clientConfig.Credentials = new DefaultBceCredentials(bosAccessKey, bosSecretKey);
                clientConfig.Endpoint    = bosEndpoint;
                // 设置http最大连接数为10
                clientConfig.ConnectionLimit = 10;
                // 设置tcp连接超时为5000毫秒
                clientConfig.TimeoutInMillis = 5000;
                // 设置读写数据超时的时间为50000毫秒
                clientConfig.ReadWriteTimeoutInMillis = 50000;
                BosClient client = new BosClient(clientConfig);
                client.PutObject(bosBucket, savePath, uploadFileBytes);
                result.Url   = bosDomain + "/" + savePath;
                result.State = UploadState.Success;
            }
            catch (Exception e)
            {
                result.State        = UploadState.FileAccessError;
                result.ErrorMessage = e.Message;
            }
            finally
            {
            }
            return(Task.FromResult(result));
        }
예제 #13
0
        private static void Main(string[] args)
        {
            const string accessKeyId     = "your-access-key-id";     // 用户的Access Key ID
            const string secretAccessKey = "your-secret-access-key"; // 用户的Secret Access Key
            const string endpoint        = "domain-name";

            // 初始化一个BosClient
            BceClientConfiguration config = new BceClientConfiguration();

            config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
            config.Endpoint    = endpoint;

            // 设置HTTP最大连接数为10
            config.ConnectionLimit = 10;

            // 设置TCP连接超时为5000毫秒
            config.TimeoutInMillis = 5000;

            // 设置读写数据超时的时间为50000毫秒
            config.ReadWriteTimeoutInMillis = 50000;

            BosClient client = new BosClient(config);
        }
예제 #14
0
 /// <summary>
 /// 创建Bos链接客户端
 /// </summary>
 /// <returns></returns>
 public BosClient GenerateBosClient()
 {
     try
     {
         if (this.bosClient == null)
         {
             // 初始化一个BosClient
             BceClientConfiguration config = new BceClientConfiguration();
             config.Credentials = new DefaultBceCredentials(accessKey, sccretAccessKey);
             config.Endpoint    = endpoint;
             bosClient          = new BosClient(config);
             return(bosClient);
         }
         else
         {
             return(this.bosClient);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
예제 #15
0
 /// <summary>
 /// Constructs a new client using the client configuration to access Sts.
 /// </summary>
 /// <param name="config"> The client configuration options controlling how this client connects to STS
 ///     (e.g. retry counts, etc). </param>
 public StsClient(BceClientConfiguration config)
     : base(config, serviceEndpointFormat)
 {
 }
예제 #16
0
    private static object BceClientConfiguration_Lock = new object(); //锁同步

    public static void SetBosConfig(BosConfig val)
    {
        BosClient = null;
        config    = null;
        BosConfig = val;
    }
예제 #17
0
        public string Index(string httpMethod, string path, string queries, string headers, string policy, string sts, string callback)
        {
            string ak = "<your ak>";
            string sk = "<your sk>";
            BceClientConfiguration config = new BceClientConfiguration()
            {
                Credentials = new DefaultBceCredentials(ak, sk)
            };

            string result = null;

            if (sts != null)
            {
                StsClient client               = new StsClient(config);
                string    accessControlList    = sts;
                GetSessionTokenRequest request = new GetSessionTokenRequest()
                {
                    DurationSeconds   = 60 * 60 * 24,
                    AccessControlList = accessControlList
                };
                GetSessionTokenResponse response = client.GetSessionToken(request);
                result = JsonConvert.SerializeObject(response);
            }
            else if (policy != null)
            {
                string base64    = Convert.ToBase64String(Encoding.UTF8.GetBytes(policy));
                var    hash      = new HMACSHA256(Encoding.UTF8.GetBytes(sk));
                string signature = EncodeHex(hash.ComputeHash(Encoding.UTF8.GetBytes(base64)));
                result = JsonConvert.SerializeObject(new PolicySignatureResult()
                {
                    policy    = base64,
                    signature = signature,
                    accessKey = ak,
                });
            }
            else
            {
                InternalRequest internalRequest = new InternalRequest();
                internalRequest.Config     = config;
                internalRequest.Uri        = new Uri("http://www.baidu.com" + path);
                internalRequest.HttpMethod = httpMethod;
                if (headers != null)
                {
                    internalRequest.Headers = JsonConvert.DeserializeObject <Dictionary <string, string> > (headers);
                }
                if (queries != null)
                {
                    internalRequest.Parameters = JsonConvert.DeserializeObject <Dictionary <string, string> > (queries);
                }

                BceV1Signer bceV1Signer = new BceV1Signer();
                string      sign        = bceV1Signer.Sign(internalRequest);

                string xbceDate = DateUtils.FormatAlternateIso8601Date(DateTime.Now);
                result = JsonConvert.SerializeObject(new SignatureResult()
                {
                    statusCode = 200,
                    signature  = sign,
                    xbceDate   = xbceDate,
                });
            }

            if (callback != null)
            {
                result = callback + "(" + result + ")";
            }

            return(result);
        }
예제 #18
0
        /// <summary>
        /// Executes the request and returns the result.
        /// </summary>
        /// <param name="request">          The BCE request to send to the remote server </param>
        /// <exception cref="BaiduBce.BceClientException">  If any errors are encountered on the client while making the
        ///             request or handling the response. </exception>
        /// <exception cref="BaiduBce.BceServiceException"> If any errors occurred in BCE while processing the request. </exception>
        public HttpWebResponse Execute(InternalRequest request)
        {
            BceClientConfiguration config = request.Config;

            if (config.Credentials != null)
            {
                if (config.Credentials is IBceSessionCredentials)
                {
                    request.Headers[BceConstants.HttpHeaders.BceSecurityToken] =
                        (config.Credentials as IBceSessionCredentials).SessionToken;
                }
                request.Headers[BceConstants.HttpHeaders.Authorization] = config.Signer.Sign(request);
            }
            HttpWebRequest httpWebRequest = CreateHttpWebRequest(request);

            PopulateRequestHeaders(request, httpWebRequest);
            if (request.Content != null)
            {
                if (request.Content.CanSeek)
                {
                    request.Content.Position = request.StartPosition;
                }
                httpWebRequest.AllowWriteStreamBuffering = false;
                using (Stream requestStream = WebRequestExtension.GetRequestStreamWithTimeout(httpWebRequest))
                {
                    var  buffer         = new byte[(int)config.SocketBufferSizeInBytes];
                    int  bytesRead      = 0;
                    int  totalBytesRead = 0;
                    long contentLength  = GetContentLengthFromInternalRequest(request);
                    try
                    {
                        while ((bytesRead = request.Content.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            if (contentLength > 0 && (bytesRead + totalBytesRead) >= contentLength)
                            {
                                requestStream.Write(buffer, 0, (int)(contentLength - totalBytesRead));
                                break;
                            }
                            else
                            {
                                requestStream.Write(buffer, 0, bytesRead);
                                totalBytesRead += bytesRead;
                            }
                        }
                    }
                    catch (NotSupportedException e)
                    {
                        //a very strange phenomenon:
                        //if bos server is down, we will receive a NotSupportedException when execute requestStream.Write(...)
                        if (log.IsDebugEnabled)
                        {
                            log.Debug("error when put data.", e);
                        }
                    }
                }
            }
            try
            {
                return(WebRequestExtension.GetResponseWithTimeout(httpWebRequest) as HttpWebResponse);
            }
            catch (WebException e)
            {
                if (e.Status != WebExceptionStatus.ProtocolError)
                {
                    throw e;
                }
                using (var response = e.Response as HttpWebResponse)
                {
                    throw BceServiceException.CreateFromHttpWebResponse(response);
                }
            }
        }