{"id":22025154,"url":"https://github.com/easykeys/easykeys.shipping","last_synced_at":"2026-02-20T20:08:16.314Z","repository":{"id":37987302,"uuid":"338212343","full_name":"easykeys/EasyKeys.Shipping","owner":"easykeys","description":"Amazon Shipping,FedEx, Usps, Stamps.com Shipping Implementations","archived":false,"fork":false,"pushed_at":"2025-05-03T20:15:38.000Z","size":43181,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-03T21:20:30.136Z","etag":null,"topics":["amazon","amazon-shipping","amazon-sp-api","aspnetcore","dotnet","dotnet-core","fedex-api","fedex-shipping","fedexapi","kdcllc","shipping-api","shipping-labels","shipping-rates","stamps-com","stamps-shipping","usps-api"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easykeys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-12T03:10:06.000Z","updated_at":"2025-05-03T20:00:42.000Z","dependencies_parsed_at":"2023-11-08T04:43:13.437Z","dependency_job_id":"a24cd86e-1420-45c4-b59f-d4aeb4eea833","html_url":"https://github.com/easykeys/EasyKeys.Shipping","commit_stats":{"total_commits":132,"total_committers":3,"mean_commits":44.0,"dds":0.5075757575757576,"last_synced_commit":"cd05d9f8df5757d5f0524a7cd404be7035bb4559"},"previous_names":["easykeys/easykeys.shipping.fedex"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easykeys%2FEasyKeys.Shipping","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easykeys%2FEasyKeys.Shipping/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easykeys%2FEasyKeys.Shipping/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easykeys%2FEasyKeys.Shipping/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easykeys","download_url":"https://codeload.github.com/easykeys/EasyKeys.Shipping/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252851637,"owners_count":21814185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon","amazon-shipping","amazon-sp-api","aspnetcore","dotnet","dotnet-core","fedex-api","fedex-shipping","fedexapi","kdcllc","shipping-api","shipping-labels","shipping-rates","stamps-com","stamps-shipping","usps-api"],"created_at":"2024-11-30T07:14:27.459Z","updated_at":"2026-02-20T20:08:16.264Z","avatar_url":"https://github.com/easykeys.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EasyKeys.Shipping\n\n[![Build status](https://ci.appveyor.com/api/projects/status/xp52rbpa9vmr1ck9?svg=true)](https://ci.appveyor.com/project/easykeys/easykeys-shipping)\n[![NuGet](https://img.shields.io/nuget/v/EasyKeys.Shipping.Abstractions.svg)](https://www.nuget.org/packages?q=EasyKeys.Shipping.Abstractions)\n![Nuget](https://img.shields.io/nuget/dt/EasyKeys.Shipping.Abstractions)\n[![feedz.io](https://img.shields.io/badge/endpoint.svg?url=https://f.feedz.io/easykeys/core/shield/EasyKeys.Shipping.Abstractions/latest)](https://f.feedz.io/easykeys/core/packages/EasyKeys.Shipping.Abstractions/latest/download)\n\n[EasyKeys.com](https://easykeys.com) production ready shipment library for Amazon, FedEx, Stamps and USPS shipping providers.\n\n## Give a Star! :star:\n\nIf you like or are using this project please give it a star. Thanks!\n\n## Reusable Abstractions\n\n- [x] [EasyKeys.Shipping.Abstractions](./src/EasyKeys.Shipping.Abstractions)\n- [x] [EasyKeys.Shipping.PostalAddress](./src/EasyKeys.Shipping.PostalAddress)\n\n## Amazon Shipping\n\n- [x] [EasyKeys.Shipping.Amazon.Abstractions](./src/EasyKeys.Shipping.Amazon.Abstractions)\n- [x] [EasyKeys.Shipping.Amazon.Rates](./src/EasyKeys.Shipping.Amazon.Rates)\n- [x] [EasyKeys.Shipping.Amazon.Shipment](./src/EasyKeys.Shipping.Amazon.Shipment)\n\n## FedEx Shipping\n\n- [x] [EasyKeys.Shipping.FedEx.Abstractions](./src/EasyKeys.Shipping.FedEx.Abstractions)\n- [x] [EasyKeys.Shipping.FedEx.AddressValidation](./src/EasyKeys.Shipping.FedEx.AddressValidation)\n- [x] [EasyKeys.Shipping.FedEx.Rates](./src/EasyKeys.Shipping.FedEx.Rates)\n- [x] [EasyKeys.Shipping.FedEx.Shipment](./src/EasyKeys.Shipping.FedEx.Shipment)\n- [x] [EasyKeys.Shipping.FedEx.Tracking](./src/EasyKeys.Shipping.FedEx.Tracking)\n- [x] [EasyKeys.Shipping.FedEx.Console](./src/EasyKeys.Shipping.FedEx.Console) - Sample Application\n\n## Stamps Shipping\n\n- [x] [EasyKeys.Shipping.Stamps.Abstractions](./src/EasyKeys.Shipping.Stamps.Abstractions)\n- [x] [EasyKeys.Shipping.Stamps.AddressValidation](./src/EasyKeys.Shipping.Stamps.AddressValidation)\n- [x] [EasyKeys.Shipping.Stamps.Rates](./src/EasyKeys.Shipping.Stamps.Rates)\n- [x] [EasyKeys.Shipping.Stamps.Shipment](./src/EasyKeys.Shipping.Stamps.Shipment)\n- [x] [EasyKeys.Shipping.Stamps.Tracking](./src/EasyKeys.Shipping.Stamps.Tracking)\n- [x] [EasyKeys.Shipping.Stamps.Console](./src/EasyKeys.Shipping.Stamps.Console) - Sample application\n\n## USPS Shipping\n\n- [x] [EasyKeys.Shipping.Usps.Abstractions](./src/EasyKeys.Shipping.Usps.Abstractions)\n- [x] [EasyKeys.Shipping.Usps.Rates](./src/EasyKeys.Shipping.Usps.Rates)\n\n## Poly policy Sample\n\n```csharp\n\n    var request = new ValidateAddress(model?.RequestId ?? Guid.NewGuid().ToString(), originalAddress, originalAddress);\n\n    var response = await _policy.ExecuteAsync(\n        async (ctx, ct) =\u003e await _validationProvider.ValidateAddressAsync(request, ct),\n        new Context\n        {\n            [_policyContextMethod] = \"ValidateAsync\"\n        },\n        cancellationToken);\n\n    private IAsyncPolicy GetRetryWithTimeOutPolicy()\n    {\n        // each call is limited to 30 seconds in case when fedex is non-reponsive and it is 1min timeout, it is way to long\n        // The request channel timed out attempting to send after 00:01:00.\n        // Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.\n        var timeoutPolicy = Policy.TimeoutAsync(30, TimeoutStrategy.Pessimistic);\n\n        var jitterer = new Random();\n\n        return Policy\n            .Handle\u003cTimeoutRejectedException\u003e()\n            .WaitAndRetryAsync(\n                  retryCount: 3,    // exponential back-off plus some jitter\n                  sleepDurationProvider: (retryAttempt, context) =\u003e\n                  {\n                      return TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))\n                            + TimeSpan.FromMilliseconds(jitterer.Next(0, 200));\n                  },\n                  onRetry: (ex, span, context) =\u003e\n                  {\n                      var methodName = context[_policyContextMethod] ?? \"MethodNotSpecified\";\n\n                      _logger.LogWarning(\n                        \"{Method} wait {Seconds} to execute with exception: {Message} for named policy: {Policy}\",\n                        methodName,\n                        span.TotalSeconds,\n                        ex.Message,\n                        context.PolicyKey);\n                  })\n             .WithPolicyKey($\"{nameof(FedExAddressValidationProvider)}WaitAndRetryAsync\")\n             .WrapAsync(timeoutPolicy);\n    }\n\n```\n\n## References\n\n- https://github.com/leoboles/Integration.Stamps.git\n- https://github.com/oparamo/StampsService.git\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasykeys%2Feasykeys.shipping","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasykeys%2Feasykeys.shipping","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasykeys%2Feasykeys.shipping/lists"}