예제 #1
0
 private static void Load()
 {
     if (Session == null)
     {
         Session = Globals.DefaultSession;
     }
     if (LastUpdate == null || DateTimeOffset.Now - LastUpdate > TimeSpan.FromHours(1))
     {
         lock (_lock)
         {
             // Load countries
             var countriesRequest = new CountriesRequest <Country>()
             {
                 Carrier           = Carrier.USPS,
                 OriginCountryCode = "US"
             };
             var countriesResponse = CountriesMethods.Countries(countriesRequest, Session).GetAwaiter().GetResult();
             if (countriesResponse.Success)
             {
                 _rules.Clear();
                 foreach (var c in countriesResponse.APIResponse)
                 {
                     _rules[c.CountryCode] = c.CountryName;
                 }
                 LastUpdate = DateTimeOffset.Now;
             }
             else
             {
                 if (Session != null)
                 {
                     Session.LogError(countriesResponse.ToString());
                 }
             }
         }
     }
 }
예제 #2
0
 /// <summary>
 /// This operation returns a list of supported destination countries to which the carrier offers international shipping services.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="request"></param>
 /// <param name="session"></param>
 /// <returns></returns>
 public async static Task <ShippingApiResponse <IEnumerable <T> > > Countries <T>(CountriesRequest <T> request, ISession session = null) where T : Country, new()
 {
     return(await WebMethod.Get <IEnumerable <T>, CountriesRequest <T> >("/shippingservices/v1/countries", request, session));
 }