/// <summary>
        /// コンテナ削除
        /// </summary>
        /// <param name="containerName"></param>
        /// <returns></returns>
        public async Task <HttpResponseMessage> DeleteContainer(string containerName)
        {
            var result = await WebExtension.Delete($"{BaseUrl}/{containerName}", authToken : KeyStone.Token);

            if (result.StatusCode != System.Net.HttpStatusCode.NoContent)
            {
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            return(result);
        }
        /// <summary>
        /// アカウントクォータ設定
        /// </summary>
        /// <returns></returns>
        public async Task SetQuota(int gigabyte)
        {
            var result = await WebExtension.Post(BaseUrl, null, authToken : KeyStone.Token
                                                 , headers : new Dictionary <string, string>()
            {
                { "X-Account-Meta-Quota-Giga-Bytes", $"{gigabyte}" },
            });

            var str = await result.Content.ReadAsStringAsync();

            if (result.StatusCode != System.Net.HttpStatusCode.NoContent)
            {
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
        }
        public async Task <HttpResponseMessage> DeleteObject(string containerName, string fileName, IDictionary <string, string> headers = null)
        {
            var result = await WebExtension.Delete($"{BaseUrl}/{containerName}/{fileName}", authToken : KeyStone.Token, headers : headers);

            switch (result.StatusCode)
            {
            case HttpStatusCode.NoContent:
            case HttpStatusCode.NotFound:
                break;

            default:
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            return(result);
        }
        /// <summary>
        /// オブジェクトを取得します
        /// </summary>
        /// <param name="path"></param>
        /// <param name="headers"></param>
        /// <returns></returns>
        public async Task <HttpResponseMessage> GetObject(string path, IDictionary <string, string> headers = null)
        {
            var result = await WebExtension.Get($"{BaseUrl}/{path}", authToken : KeyStone.Token, headers : headers);

            switch (result.StatusCode)
            {
            case HttpStatusCode.OK:
            case HttpStatusCode.NotFound:
                break;

            default:
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            return(result);
        }
        /// <summary>
        /// コンテナ作成
        /// </summary>
        /// <returns></returns>
        public async Task <HttpResponseMessage> CreateContainer(string containerName, IDictionary <string, string> headers = null)
        {
            var result = await WebExtension.Put($"{BaseUrl}/{containerName}", null, authToken : KeyStone.Token
                                                , headers : headers);

            switch (result.StatusCode)
            {
            case HttpStatusCode.Accepted:
            case HttpStatusCode.Created:
            case HttpStatusCode.NoContent:
                break;

            default:
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            return(result);
        }
        /// <summary>
        /// ファイルをアップロードします
        /// </summary>
        /// <param name="containerName"></param>
        /// <param name="filePath"></param>
        /// <param name="contentType"></param>
        /// <param name="headers"></param>
        /// <returns></returns>
        public async Task <HttpResponseMessage> PutObject(string containerName, string filePath, string dstName = null, IDictionary <string, string> headers = null)
        {
            if (dstName == null)
            {
                dstName = Path.GetFileName(filePath);
            }
            var result = await WebExtension.PutFile($"{BaseUrl}/{containerName}/{dstName}", filePath, authToken : KeyStone.Token, headers : headers);

            switch (result.StatusCode)
            {
            case HttpStatusCode.Created:
                break;

            default:
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            return(result);
        }
        /// <summary>
        /// 認証アクセスが正常にできるか
        /// </summary>
        /// <returns></returns>
        public async Task <ContainerInfo[]> GetContainerList()
        {
            var result = await WebExtension.Get(BaseUrl, KeyStone.Token);

            switch (result.StatusCode)
            {
            case HttpStatusCode.NoContent:
                return(new ContainerInfo[] { });

            case HttpStatusCode.OK:
                break;

            default:
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            var list = JsonConvert.DeserializeObject <ContainerInfo[]>(await result.Content.ReadAsStringAsync());

            return(list);
        }
        /// <summary>
        /// オブジェクト一覧
        /// </summary>
        /// <param name="containerName"></param>
        /// <param name="headers"></param>
        /// <returns></returns>
        public async Task <ObjectInfo[]> GetObjectList(string containerName, IDictionary <string, string> headers = null)
        {
            var result = await WebExtension.Get($"{BaseUrl}/{containerName}", authToken : KeyStone.Token, headers : headers);

            switch (result.StatusCode)
            {
            case HttpStatusCode.NoContent:
                return(new ObjectInfo[] { });

            case HttpStatusCode.OK:
                break;

            default:
                throw new HttpRequestException(await result.Content.ReadAsStringAsync());
            }
            var list = JsonConvert.DeserializeObject <ObjectInfo[]>(await result.Content.ReadAsStringAsync());

            return(list);
        }
Beispiel #9
0
        public static async Task <KeyStone> Authenticate(string url, string tenant, string user, string pass)
        {
            var data = new JObject() as dynamic;

            data.auth                              = new JObject() as dynamic;
            data.auth.tenantName                   = tenant;
            data.auth.passwordCredentials          = new JObject() as dynamic;
            data.auth.passwordCredentials.username = user;
            data.auth.passwordCredentials.password = pass;

            HttpResponseMessage result = await WebExtension.Post(url, data, authToken : null);

            var content = await result.Content.ReadAsStringAsync();

            if (result.StatusCode != System.Net.HttpStatusCode.OK)
            {
                throw new HttpRequestException(content);
            }

            return(new KeyStone()
            {
                AuthData = JsonConvert.DeserializeObject <KeyStoneResult>(content),
            });
        }