{"id":23820278,"url":"https://github.com/newky2k/portablewebclient","last_synced_at":"2025-06-16T02:04:08.048Z","repository":{"id":35032074,"uuid":"193726152","full_name":"newky2k/PortableWebClient","owner":"newky2k","description":"Cross platform web client framework for calling ASP.NET Core RESTful Web Apis and Grpc services","archived":false,"fork":false,"pushed_at":"2025-02-19T20:56:12.000Z","size":253,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-06T08:48:56.507Z","etag":null,"topics":["asp-net-core","csharp","dotnet-core","grpc","netcore","rest-api","restful"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/newky2k.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}},"created_at":"2019-06-25T14:40:13.000Z","updated_at":"2025-02-19T20:38:24.000Z","dependencies_parsed_at":"2023-12-11T20:30:48.537Z","dependency_job_id":"0bc0d5ba-65ce-411f-8d1d-d5cda825c139","html_url":"https://github.com/newky2k/PortableWebClient","commit_stats":{"total_commits":117,"total_committers":6,"mean_commits":19.5,"dds":0.7094017094017093,"last_synced_commit":"c7d2fae96207cecf875d62399a1ef3f3f5df1ec0"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/newky2k/PortableWebClient","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newky2k%2FPortableWebClient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newky2k%2FPortableWebClient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newky2k%2FPortableWebClient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newky2k%2FPortableWebClient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/newky2k","download_url":"https://codeload.github.com/newky2k/PortableWebClient/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newky2k%2FPortableWebClient/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260083860,"owners_count":22956407,"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":["asp-net-core","csharp","dotnet-core","grpc","netcore","rest-api","restful"],"created_at":"2025-01-02T07:34:17.352Z","updated_at":"2025-06-16T02:04:08.009Z","avatar_url":"https://github.com/newky2k.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Portable Web Client\n\nCross platform web client framework for calling ASP.NET Core RESTful Web Apis and gRPC services\n\n## Functionality\n\nThe libary provides low level, bootstrapped base classes to simplify the building of client libraries for use with ASP.NET Core Web Apis and now gRPC services too.\n\n- Base web service client classes for RESTful Web APIs and gRPC service clients\n  - Core Web Client functionality\n  - Stores Url\n  - Can check for connectivity\n  - Stores Default Timeout\n  - Supports gRPC fpr Web\n- Base service client classes for both RESTFul and Grpc services\n  - Handles RestClient and Grpc channel management functionality\n  - Helper methods for Get and Post method calls\n  - Simplifies calls to the services\n- Base request and response classes\n- Generic methods and extensions for calling RESTful Web APIs\n- Secure request and response classes using a `SecurePayload`\n- Integrated encryption, with abiltiy provide override with custom implementations.\n  - Uses 256-bit AES encryption by default\n\n## V3.x and v3.1 breaking changes\nWith the move to v3 some of the classes have been renamed and moved into different packages, such as `ServiceClientBase` which now exists in `DSoft.Portable.WebClient.Rest` and is now named `RestServiceClientBase`.  \n\n### Encryption changes \n**v3.0 only!**  \nYou know have to set an InitVector key of your own on `EncryptionProviderFactory` before encrption and decryption will function.  \n\n**v3.1 and Above**  \nIn v3.1 and above the InitVector key is passed explicilty to the `IEncryptionProvider` implementation when returned by `EncryptionProviderFactory.Build`.  This allows for calls to multiple services using multiple IVs.  Check out the test harness for an example.\n\n## Build status\n[![Build Status](https://dev.azure.com/humbatt/Daves%20Projects/_apis/build/status/PortableWebClient/PortableWebClient%20-%20Release?branchName=master)](https://dev.azure.com/humbatt/Daves%20Projects/_build/latest?definitionId=49\u0026branchName=master)\n\n\n## Packages\n\nPlatform/Feature               | Package name                              | Stable                              | Beta\n-----------------------|-------------------------------------------|------------------------------------------------|----------------\nCore             | `DSoft.Portable.WebClient.Core` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Core.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Core/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Core.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Core/) |\nEncryption             | `DSoft.Portable.WebClient.Encryption` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Encryption.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Encryption/) |  [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Encryption.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Encryption/) |\nGrpc             | `DSoft.Portable.WebClient.Grpc` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Grpc.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Grpc/) |[![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Grpc.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Grpc/) |\nGrpc Encryption       | `DSoft.Portable.WebClient.Grpc.Encryption` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Grpc.Encryption.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Grpc.Encryption/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Grpc.Encryption.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Grpc.Encryption/) |\nGrpc Encryption Build Tools | `DSoft.Portable.WebClient.Grpc.Encryption.Tools` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Grpc.Encryption.Tools.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Grpc.Encryption.Tools/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Grpc.Encryption.Tools.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Grpc.Encryption.Tools/) |\nRest             | `DSoft.Portable.WebClient.Rest` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Rest.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Rest/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Rest.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Rest/) |\nRest Encryption          | `DSoft.Portable.WebClient.Rest.Encryption` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Rest.Encryption.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Rest.Encryption/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Rest.Encryption.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Rest.Encryption/) |\nRest Extensions          | `DSoft.Portable.WebClient.Rest.Extensions` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.WebClient.Rest.Extensions.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Rest.Extensions/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.WebClient.Rest.Extensions.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.WebClient.Rest.Extensions/) |\nEF Core Security Entities       | `DSoft.Portable.Server.Security.Core` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.Server.Security.Core.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.Server.Security.Core/) | [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.Server.Security.Core.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.Server.Security.Core/) |\nEF Core Secure Database contexts           | `DSoft.Portable.EntityFrameworkCore.Security` | [![NuGet](https://img.shields.io/nuget/v/DSoft.Portable.EntityFrameworkCore.Security.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.EntityFrameworkCore.Security/) |  [![NuGet](https://img.shields.io/nuget/vpre/DSoft.Portable.EntityFrameworkCore.Security.svg?style=flat-square\u0026label=nuget)](https://www.nuget.org/packages/DSoft.Portable.EntityFrameworkCore.Security/) |\n  \n## Version History (from 4.0)\n\n- Version 4.1.0\n    - Updtated to the latest packages\n- Version 4.0.0\n  \t- Added support for .NET 8.0\n  \t- Removed EF Core libraries\n\t- Updated to last RestSharp\n\t- Improved support for Dependency Injecting `GrpcClientOptions`\n\t- Added custom HttpHandler to `GrpcClientOptions`\n\t- Cleaned up `GrpcChannelManager` code and add support for the custom HttpHandler in `GrpcClientOptions`\n\t\t- This works great for Testing you Grpc Services with WebApplicationFactory\n\t- Updated `AesEncryptionProvider` to use Aes.Create\n\t- Added Unit Test sample","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewky2k%2Fportablewebclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewky2k%2Fportablewebclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewky2k%2Fportablewebclient/lists"}