Skip to content

v4.0.0

Compare
Choose a tag to compare
@Justintime50 Justintime50 released this 12 Oct 20:37
· 248 commits to master since this release
74120e5

Breaking Changes & New Features

  • Library is now thread-safe
    • Initialize a Client object with an API key
    • Static methods (i.e. create, retrieve, retrieve all of a resource) exist in services, accessed via property of the client (e.g. myClient.Address.Create())
    • Instance methods (i.e. update, delete) accessed on instance of a resource (i.e. myShipment.Update())
  • All properties are now title-cased rather than snake-cased to match standard .NET naming conventions
    • e.g. myShipment.id is now myShipment.Id, myAddress.federal_tax_id is now myAddress.FederalTaxId, myTrackerCollection.has_more is now myTrackerCollection.HasMore
    • Some properties have been renamed to avoid naming conflicts:
      • Rate.rate is now Rate.Price
      • Message.message is now Message.Text
  • All properties are now nullable
    • Almost all properties will be assigned a value during JSON deserialization. This is mostly to address compiler warnings
    • Users can proceed with the assumption that any given property will not be null
  • Consistent exception handling
    • All exceptions inherit from EasyPostError
    • API-related and HTTP-related exceptions will throw an ApiError or inherited-type exception
    • API exception types can be retrieved by HTTP status code via the EasyPost.Exceptions.Constants class (i.e. to anticipate what error will be thrown for a 404, etc.)
    • Common exception messages and templates can be found in the EasyPost.Exceptions.Constants class (i.e. for log parsing)
  • Source code files have been organized
    • Most EasyPost-related objects (i.e. Shipment, Address, Tracker, etc.) are now in the EasyPost.Model.API namespace
  • Dependencies updated to latest versions, including RestSharp v108

Misc

  • Under the hood improvements:
    • Underlying Request-Client-ClientConfiguration relationship has been re-architected to allow for thread safety
    • Process of generating an API request has been standardized and simplified
    • Improved accessibility levels of internal functions, to prevent accidental use by end users
    • Files have been organized into a more logical structure
    • Methods and properties have been organized (e.g. methods ordered by CRUD, properties ordered alphabetically)
  • Improved API error parsing
    • API error message may be an array rather than a string. Arrays will be concatenated (by comma) and returned as a string.
  • Capture 1xx and 3xx HTTP status codes as errors
    • Any known 3xx status code from the EasyPost API will throw a RedirectError exception
    • Any unknown 3xx status code will throw a UnexpectedHttpError exception
    • Any 1xx status code (known or unknown) will throw a UnexpectedHttpError exception