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