コード例 #1
0
        public async Task DownloadLabels()
        {
            string accountNumber = AppConfiguration.AusPostAccountNumber;
            string username      = AppConfiguration.AusPostUsername;
            string password      = AppConfiguration.AusPostPassword;

            var client = new ShippingClient(accountNumber, username, password);

            client.Testing = true;

            // Delete files from previous runs
            string folder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\Labels";

            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory(folder);
            }
            foreach (string file in System.IO.Directory.GetFiles(folder))
            {
                System.IO.File.Delete(file);
            }

            var createShipmentsRequest = CreateCreateShipmentsRequest();

            var createShipmentsResponse = await client.CreateShipmentsAsync(createShipmentsRequest);

            Assert.AreEqual(true, createShipmentsResponse.Succeeded, string.Join(", ", createShipmentsResponse.Errors.Select(e => e.Message)));
            Assert.AreEqual(1, createShipmentsResponse.Shipments.Count);
            Assert.AreEqual(1, createShipmentsResponse.Shipments[0].Items.Count);

            var updateRequest = CreateCreateLabelsRequest(createShipmentsResponse.Shipments[0].ShipmentID);

            var updateResponse = await client.CreateLabelsAsync(updateRequest);

            Assert.AreEqual(true, updateResponse.Succeeded, string.Join(", ", updateResponse.Errors.Select(e => e.Message)));
            Assert.AreEqual(1, updateResponse.Labels.Count);
            Assert.AreEqual(LabelStatus.Pending, updateResponse.Labels[0].Status);
            Assert.AreEqual(0, createShipmentsResponse.Errors.Count);
            Assert.AreEqual(0, createShipmentsResponse.Warnings.Count);

            // HACK: Wait for the labels to be generated...
            System.Threading.Thread.Sleep(5000);

            var getShipmentsRequest = CreateGetShipmentsRequest(createShipmentsResponse);

            var getShipmentsResponse = await client.GetShipmentsAsync(getShipmentsRequest);

            Assert.AreEqual(true, getShipmentsResponse.Succeeded, string.Join(", ", getShipmentsResponse.Errors.Select(e => e.Message)));
            Assert.AreEqual(1, getShipmentsResponse.Shipments.Count);
            Assert.IsTrue(!string.IsNullOrEmpty(getShipmentsResponse.Shipments[0].Items[0].Label.LabelUrl));
            Assert.AreEqual(0, getShipmentsResponse.Errors.Count);
            Assert.AreEqual(0, getShipmentsResponse.Warnings.Count);

            // Download the PDF
            string pdfFile = folder + "\\labels.pdf";

            Assert.IsFalse(System.IO.File.Exists(pdfFile));
            var downloadResponse = await client.DownloadLabelsAsync(getShipmentsResponse.Shipments[0].Items[0].Label.LabelUrl);

            Assert.AreEqual(true, downloadResponse.Succeeded, string.Join(", ", downloadResponse.Errors.Select(e => e.Message)));

            downloadResponse.SaveToFile(pdfFile);
            Assert.IsTrue(System.IO.File.Exists(pdfFile));
        }