Example #1
0
        private async Task UploadAchievementImage(string filename, Stream image)
        {
            this.SetUpMockAuth();

            int    fileSize  = (int)image.Length;
            Guid   xfusId    = Guid.NewGuid();
            string xfusToken = "1234";
            Uri    initUri   = new Uri(new Uri(ClientSettings.Singleton.XAchEndpoint), "/assets/initialize");

            XachInitializeResponse initResponse = new XachInitializeResponse()
            {
                XfusId    = xfusId,
                XfusToken = xfusToken,
                XfusUploadWindowLocation = "5678"
            };

            SetMetadataResponse setMetadataResponse = new SetMetadataResponse()
            {
                BlobPartitions = 1,
                ChunkList      = new int[] { 1 },
                ChunkSize      = fileSize,
                Error          = false,
                Id             = xfusId,
                Message        = string.Empty,
                ResumeRestart  = false,
                ServerLocation = string.Empty
            };

            UploadImageResponse uploadResponse = new UploadImageResponse()
            {
                AbsoluteUri   = string.Empty,
                ChunkNum      = 1,
                Error         = false,
                ErrorCode     = 0,
                Location      = string.Empty,
                Message       = string.Empty,
                MissingChunks = null,
                RawLocation   = string.Empty,
                State         = string.Empty
            };

            AchievementImage finalizeResponse = new AchievementImage()
            {
                AssetId         = Guid.NewGuid(),
                CdnUrl          = new Uri("https://xboxlive.com/"),
                HeightInPixels  = 1080,
                ImageType       = "png",
                IsPublic        = true,
                Scid            = new Guid(DefaultScid),
                ThumbnailCdnUrl = new Uri("https://xboxlive.com/"),
                WidthInPixels   = 1920
            };

            string expectedToken = this.ExpectedToken(DefaultScid, null);

            this.mockHandler.Expect(initUri.ToString())
            .WithHeaders("Authorization", expectedToken)
            .Respond(res => this.ExpectedJsonResponse(initResponse));

            Uri setMetadataUri = new Uri(new Uri(ClientSettings.Singleton.XFusEndpoint), $"/upload/SetMetadata?filename={filename}&fileSize={fileSize}&id={xfusId}&token={xfusToken}");

            this.mockHandler.Expect(setMetadataUri.ToString())
            .WithHeaders("Authorization", expectedToken)
            .Respond(res => this.ExpectedJsonResponse(setMetadataResponse));

            Uri uploadChunkUri = new Uri(new Uri(ClientSettings.Singleton.XFusEndpoint), $"/upload/uploadchunk/{xfusId}?blockNumber=1&token={xfusToken}");

            this.mockHandler.Expect(uploadChunkUri.ToString())
            .WithHeaders("Authorization", expectedToken)
            .Respond(res => this.ExpectedJsonResponse(uploadResponse));

            Uri finishUploadUri = new Uri(new Uri(ClientSettings.Singleton.XFusEndpoint), $"/upload/finished/{xfusId}?token={xfusToken}");

            this.mockHandler.Expect(finishUploadUri.ToString())
            .WithHeaders("Authorization", expectedToken)
            .Respond(res => this.ExpectedJsonResponse(uploadResponse));

            Uri finalizeUri = new Uri(new Uri(ClientSettings.Singleton.XAchEndpoint), $"/scids/{DefaultScid}/images");

            this.mockHandler.Expect(finalizeUri.ToString())
            .WithHeaders("Authorization", expectedToken)
            .Respond(res => this.ExpectedJsonResponse(finalizeResponse));

            ConfigResponse <AchievementImage> response = await ConfigurationManager.UploadAchievementImageAsync(new Guid(DefaultScid), filename, image);

            Assert.AreEqual(finalizeResponse.AssetId, response.Result.AssetId);
        }
Example #2
0
 public ImageKeywordItem(AchievementImage image)
 {
     this.AchievementImage = image;
 }