// 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); }
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; }