コード例 #1
0
 private static extern XSAPI_RESULT TitleStorageCreateBlobMetadata(
     IntPtr serviceConfigurationId,
     TitleStorageType storageType,
     IntPtr blobPath,
     TitleStorageBlobType blobType,
     IntPtr xboxUserId,
     IntPtr displayName,
     IntPtr etag,
     IntPtr ppBlobMetadata);
コード例 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TitleStorageBlobMetadata"/> class.
        /// </summary>
        /// <param name="storageType">Type of storage.</param>
        /// <param name="blobPath">Blob path is a unique string that conforms to a SubPath\file format (example: "foo\bar\blob.txt").</param>
        /// <param name="blobType">Type of blob data. Possible values are: Binary, Json, and Config.</param>
        public TitleStorageBlobMetadata(
            TitleStorageType storageType,
            string blobPath,
            TitleStorageBlobType blobType)
        {
            if (string.IsNullOrEmpty(blobPath))
            {
                throw new ArgumentNullException("blobPath");
            }

            this.StorageType = storageType;
            this.BlobType    = blobType;
            this.BlobPath    = blobPath;
        }
コード例 #3
0
        public async Task DeleteBlob()
        {
            SetUpMockAuth();
            SetupMockBytes();

            var uri = new Uri(new Uri(ClientSettings.Singleton.TitleStorageEndpoint), $"global/scids/{DefaultScid}/data/{DefaultGlobalStoragePath},{DefaultFileType}");

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(HttpMethod.Delete, uri.ToString())
            .Respond("application/json", "{}");

            TestHook.MockHttpHandler = mockHttp;

            TitleStorageBlobType fileType = (TitleStorageBlobType)Enum.Parse(typeof(TitleStorageBlobType), DefaultFileType, true);
            await TitleStorage.DeleteGlobalStorageBlob(DefaultScid, DefaultSandbox, DefaultGlobalStoragePath, fileType);
        }
コード例 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TitleStorageBlobMetadata"/> class.
        /// </summary>
        /// <param name="storageType">Type of storage.</param>
        /// <param name="blobPath">Blob path is a unique string that conforms to a SubPath\file format (example: "foo\bar\blob.txt").</param>
        /// <param name="blobType">Type of blob data. Possible values are: Binary, Json, and Config.</param>
        /// <param name="displayName">[optional] Friendly display name to show in app UI.</param>
        /// <param name="eTag">ETag for the file used in read and write requests.</param>
        public TitleStorageBlobMetadata(
            TitleStorageType storageType,
            string blobPath,
            TitleStorageBlobType blobType,
            string displayName,
            string eTag)
        {
            if (string.IsNullOrEmpty(blobPath))
            {
                throw new ArgumentNullException("blobPath");
            }

            this.StorageType = storageType;
            this.BlobType    = blobType;
            this.BlobPath    = blobPath;
            this.DisplayName = displayName;
            this.ETag        = eTag;
        }
コード例 #5
0
        public async Task UploadBlob()
        {
            this.SetUpMockAuth();
            this.SetupMockBytes();

            var uri = new Uri(new Uri(ClientSettings.Singleton.TitleStorageEndpoint), $"global/scids/{DefaultScid}/data/{DefaultGlobalStoragePath},{DefaultFileType}");

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(HttpMethod.Put, uri.ToString())
            .WithHeaders("Authorization", this.ExpectedToken(DefaultScid, DefaultSandbox))
            .Respond("application/json", "{}");

            TestHook.MockHttpHandler = mockHttp;

            TitleStorageBlobType fileType = (TitleStorageBlobType)Enum.Parse(typeof(TitleStorageBlobType), DefaultFileType, true);
            await TitleStorage.UploadGlobalStorageBlobAsync(DefaultScid, DefaultSandbox, DefaultGlobalStoragePath, fileType, this.defaultBytes);
        }
コード例 #6
0
        public async Task DownloadBlob()
        {
            SetUpMockAuth();
            SetupMockBytes();

            var uri = new Uri(new Uri(ClientSettings.Singleton.TitleStorageEndpoint), $"global/scids/{DefaultScid}/data/{DefaultGlobalStoragePath},{DefaultFileType}");

            var mockHttp = new MockHttpMessageHandler();

            Stream stream = new MemoryStream(this.defaultBytes);

            mockHttp.Expect(HttpMethod.Get, uri.ToString())
            .Respond("application/json", stream);

            TestHook.MockHttpHandler = mockHttp;

            TitleStorageBlobType fileType = (TitleStorageBlobType)Enum.Parse(typeof(TitleStorageBlobType), DefaultFileType, true);

            byte[] bytes = await TitleStorage.DownloadGlobalStorageBlob(DefaultScid, DefaultSandbox, DefaultGlobalStoragePath, fileType);

            Assert.AreEqual(bytes.Length, this.defaultBytes.Length);
        }
コード例 #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TitleStorageBlobMetadata"/> class.
        /// </summary>
        /// <param name="serviceConfigurationId">The service configuration ID (SCID) of the title</param>
        /// <param name="storageType">Type of storage.</param>
        /// <param name="blobPath">Blob path is a unique string that conforms to a SubPath\file format (example: "foo\bar\blob.txt").</param>
        /// <param name="blobType">Type of blob data. Possible values are: Binary, Json, and Config.</param>
        /// <param name="xboxUserId">The Xbox User ID of the title storage to enumerate. Ignored when dealing with GlobalStorage, so passing nullptr is acceptable in that case. (Optional)</param>
        /// <param name="displayName">[optional] Friendly display name to show in app UI.</param>
        /// <param name="eTag">ETag for the file used in read and write requests.</param>
        /// <param name="length">Length of the content of the blob</param>
        public TitleStorageBlobMetadata(string serviceConfigurationId, TitleStorageType storageType, string blobPath, TitleStorageBlobType blobType, string xboxUserId, string displayName, string eTag, ulong length)
        {
            if (string.IsNullOrEmpty(blobPath))
            {
                throw new ArgumentNullException("blobPath");
            }

            this.ServiceConfigurationId = serviceConfigurationId;
            this.StorageType            = storageType;
            this.BlobType    = blobType;
            this.BlobPath    = blobPath;
            this.DisplayName = displayName;
            this.ETag        = eTag;
            this.Length      = length;
            this.XboxUserId  = xboxUserId;

            CreateCMetadata();
        }
コード例 #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TitleStorageBlobMetadata"/> class.
        /// </summary>
        /// <param name="serviceConfigurationId">The service configuration ID (SCID) of the title</param>
        /// <param name="storageType">Type of storage.</param>
        /// <param name="blobPath">Blob path is a unique string that conforms to a SubPath\file format (example: "foo\bar\blob.txt").</param>
        /// <param name="blobType">Type of blob data. Possible values are: Binary, Json, and Config.</param>
        /// <param name="xboxUserId">The Xbox User ID of the title storage to enumerate. Ignored when dealing with GlobalStorage, so passing nullptr is acceptable in that case. (Optional)</param>
        public TitleStorageBlobMetadata(string serviceConfigurationId, TitleStorageType storageType, string blobPath, TitleStorageBlobType blobType, string xboxUserId)
        {
            if (string.IsNullOrEmpty(blobPath))
            {
                throw new ArgumentNullException("blobPath");
            }

            this.ServiceConfigurationId = serviceConfigurationId;
            this.StorageType            = storageType;
            this.BlobType   = blobType;
            this.BlobPath   = blobPath;
            this.XboxUserId = xboxUserId;

            CreateCMetadata();
        }
コード例 #9
0
        /// <summary>
        /// Downloads blob data from title storage.
        /// </summary>
        /// <param name="serviceConfigurationId">The service configuration ID (SCID) of the title</param>
        /// <param name="sandbox">The target sandbox id for title storage</param>
        /// <param name="pathAndFileName">Blob path and file name to store on XboxLive service.(example: "foo\bar\blob.txt")</param>
        /// <param name="blobType">Title storage blob type</param>
        /// <returns>The byte array contains downloaded blob data</returns>
        static public async Task <byte[]> DownloadGlobalStorageBlob(string serviceConfigurationId, string sandbox, string pathAndFileName, TitleStorageBlobType blobType)
        {
            using (var request = new XboxLiveHttpRequest())
            {
                var requestMsg = new HttpRequestMessage(HttpMethod.Get, new Uri(baseUri, $"/global/scids/{serviceConfigurationId}/data/{pathAndFileName},{blobType.ToString().ToLower()}"));

                string eToken = await Auth.GetETokenSilentlyAsync(serviceConfigurationId, sandbox);

                AddRequestHeaders(ref requestMsg, eToken);

                var response = await request.SendAsync(requestMsg);

                Log.WriteLog($"DownloadGlobalStorageBlob for scid: {serviceConfigurationId}, sandbox: {sandbox}");

                return(await response.Content.ReadAsByteArrayAsync());
            }
        }
コード例 #10
0
        /// <summary>
        /// Uploads blob data to title storage.
        /// </summary>
        /// <param name="serviceConfigurationId">The service configuration ID (SCID) of the title</param>
        /// <param name="sandbox">The target sandbox id for title storage</param>
        /// <param name="pathAndFileName">Blob path and file name to store on XboxLive service.(example: "foo\bar\blob.txt")</param>
        /// <param name="blobType">Title storage blob type</param>
        /// <param name="blobBytes">The byte array contains the blob data to upload.</param>
        public static async Task UploadGlobalStorageBlobAsync(string serviceConfigurationId, string sandbox, string pathAndFileName, TitleStorageBlobType blobType, byte[] blobBytes)
        {
            using (var request = new XboxLiveHttpRequest(true, serviceConfigurationId, sandbox))
            {
                var response = await request.SendAsync(() =>
                {
                    var requestMsg = new HttpRequestMessage(HttpMethod.Put, new Uri(baseUri, $"/global/scids/{serviceConfigurationId}/data/{pathAndFileName},{blobType.ToString().ToLower()}"));
                    requestMsg.Headers.Add("x-xbl-contract-version", "1");
                    requestMsg.Content = new ByteArrayContent(blobBytes);

                    return(requestMsg);
                });

                Log.WriteLog($"UploadGlobalStorageBlobAsync for scid: {serviceConfigurationId}, sandbox: {sandbox}");
            }
        }
コード例 #11
0
        /// <summary>
        /// Downloads blob data from title storage.
        /// </summary>
        /// <param name="serviceConfigurationId">The service configuration ID (SCID) of the title</param>
        /// <param name="sandbox">The target sandbox id for title storage</param>
        /// <param name="pathAndFileName">Blob path and file name to store on XboxLive service.(example: "foo\bar\blob.txt")</param>
        /// <param name="blobType">Title storage blob type</param>
        /// <returns>The byte array contains downloaded blob data</returns>
        public static async Task <byte[]> DownloadGlobalStorageBlobAsync(string serviceConfigurationId, string sandbox, string pathAndFileName, TitleStorageBlobType blobType)
        {
            using (var request = new XboxLiveHttpRequest(true, serviceConfigurationId, sandbox))
            {
                HttpResponseMessage response = (await request.SendAsync(() =>
                {
                    var requestMsg = new HttpRequestMessage(HttpMethod.Get, new Uri(baseUri, $"/global/scids/{serviceConfigurationId}/data/{pathAndFileName},{blobType.ToString().ToLower()}"));
                    requestMsg.Headers.Add("x-xbl-contract-version", "1");

                    return(requestMsg);
                })).Response;
                response.EnsureSuccessStatusCode();

                Log.WriteLog($"DownloadGlobalStorageBlobAsync for scid: {serviceConfigurationId}, sandbox: {sandbox}");

                return(await response.Content.ReadAsByteArrayAsync());
            }
        }
コード例 #12
0
 public static TitleStorageBlobMetadata CreateTitleStorageBlobMetadataForSessionStorage(string serviceConfigurationId, string blobPath, TitleStorageBlobType blobType, string multiplayerSessionTemplateName, string multiplayerSessionName, string displayName, string eTag)
 {
     throw new NotImplementedException();
 }
コード例 #13
0
 public TitleStorageBlobMetadata(string serviceConfigurationId, TitleStorageType storageType, string blobPath, TitleStorageBlobType blobType, string xboxUserId)
 {
 }
コード例 #14
0
 public TitleStorageBlobMetadata(string serviceConfigurationId, TitleStorageType storageType, string blobPath, TitleStorageBlobType blobType, string xboxUserId, string displayName, string eTag, DateTimeOffset clientTimestamp)
 {
     var _clientTimestamp = clientTimestamp.ToUniversalTime().ToFileTime();
 }