// GET: api/UPSTracking/1ZE680080304005492
        public UPS.TrackResponse Get(string id)
        {
            //HACK hard code local storage for simplicity
            CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
            CloudTableClient    tableClient    = storageAccount.CreateCloudTableClient();
            CloudTable          table          = tableClient.GetTableReference("UPSTracking");

            table.CreateIfNotExists();

            PackageTrackerDetails ptd = null;
            TableOperation        retrieveOperation = TableOperation.Retrieve <PackageTrackerDetails>(PackageTrackerDetails.GetPartitionKey(id), id);
            TableResult           retrievedResult   = table.Execute(retrieveOperation);

            if (retrievedResult.Result != null)
            {
                ptd = (PackageTrackerDetails)retrievedResult.Result;
            }
            else
            {
                UPS.TrackResponse response = null;
                using (var tracker = new UPS.TrackPortTypeClient())
                {
                    response = tracker.ProcessTrack(
                        new UPS.UPSSecurity
                    {
                        UsernameToken = new UPS.UPSSecurityUsernameToken
                        {
                            Username = ConfigurationManager.AppSettings["UPSSecurityUsernameToken.Username"],
                            Password = ConfigurationManager.AppSettings["UPSSecurityUsernameToken.Password"]
                        },
                        ServiceAccessToken = new UPS.UPSSecurityServiceAccessToken
                        {
                            AccessLicenseNumber = ConfigurationManager.AppSettings["UPSSecurityServiceAccessToken.AccessLicenseNumber"]
                        }
                    },
                        new UPS.TrackRequest {
                        InquiryNumber = id, Request = new UPS.RequestType {
                            RequestOption = new string[] { "1" }
                        }
                    }
                        );


                    ptd = new PackageTrackerDetails(id, null, response);
                    TableOperation insertOperation = TableOperation.Insert(ptd);
                    table.Execute(insertOperation);
                }
            }


            return(ptd.UPSResponse);
        }
Esempio n. 2
0
 public PackageTrackerDetails(string referenceNumber, DateTime?cacheExpirationDate, UPS.TrackResponse upsResponse)
 {
     this.ReferenceNumber     = referenceNumber;
     this.PartitionKey        = GetPartitionKey(referenceNumber);
     this.RowKey              = referenceNumber;
     this.CacheExpirationDate = cacheExpirationDate;
     this.UPSResponse         = upsResponse;
 }