{"id":15074364,"url":"https://github.com/hona/grpc.featureflags","last_synced_at":"2026-01-04T04:03:35.894Z","repository":{"id":254779744,"uuid":"847496726","full_name":"Hona/gRPC.FeatureFlags","owner":"Hona","description":"Support for Microsoft.FeatureManagement within ASP.NET Core gRPC applications. Example being, feature flags in Azure App Config, with the same attribute syntax [FeatureGate] used on controllers, but working for gRPC.","archived":false,"fork":false,"pushed_at":"2024-08-26T01:42:50.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-15T21:48:05.207Z","etag":null,"topics":["aspnetcore","feature-flags","grpc","grpc-csharp"],"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/Hona.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":"2024-08-26T01:07:23.000Z","updated_at":"2024-08-26T17:21:42.000Z","dependencies_parsed_at":"2024-08-26T03:56:46.933Z","dependency_job_id":"617b5381-eb5a-4fd1-9496-77d454f7c22e","html_url":"https://github.com/Hona/gRPC.FeatureFlags","commit_stats":null,"previous_names":["hona/grpc.featureflags"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FgRPC.FeatureFlags","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FgRPC.FeatureFlags/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FgRPC.FeatureFlags/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FgRPC.FeatureFlags/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hona","download_url":"https://codeload.github.com/Hona/gRPC.FeatureFlags/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243864822,"owners_count":20360360,"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":["aspnetcore","feature-flags","grpc","grpc-csharp"],"created_at":"2024-09-25T03:32:34.986Z","updated_at":"2026-01-04T04:03:30.876Z","avatar_url":"https://github.com/Hona.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gRPC.FeatureFlags\nSupport for Microsoft.FeatureManagement within ASP.NET Core gRPC applications. Example being, feature flags in Azure App Config, with the same attribute syntax [FeatureGate] used on controllers, but working for gRPC.\n\n[![NuGet Version](https://img.shields.io/nuget/v/Hona.gRPC.FeatureFlags)](https://www.nuget.org/packages/Hona.gRPC.FeatureFlags)\n\n## Pre-requisites\n\nAssuming you are using code first gRPC services for ASP.NET Core\n\ne.g. packages:\n\n- `protobuf-net.Grpc.AspNetCore`\n- `Grpc.AspNetCore.Web`\n\n## Usage\n\nAdd the package to your project:\n\n```bash\ndotnet add package Hona.gRPC.FeatureFlags\n```\n\nModify your dependency injection to include:\n\n```csharp\nusing Hona.gRPC.FeatureFlags; // 👈 New code\n...\nservices.AddCodeFirstGrpc(config =\u003e\n{\n    ...\n    config.UseFeatureFlags(); // 👈 New code\n});\n```\n\nNow you can add the attribute in one of 3 places\n\n- On the Request model\n- On the Service\n- On the method\n\n```csharp\n[FeatureGate(\"Ping\")] // 👈 This works\npublic class PingRequest { }\n\npublic class PingResponse { }\n\n[FeatureGate(\"Ping\")] // 👈 This works\npublic class MyService : IMyService\n{\n    // 👇 My preferred location, or on the service\n    [FeatureGate(\"Ping\")] // 👈 This works\n    [Authorize] // This already works, its nice to have both side by side\n    public async Task\u003cPingResponse\u003e PingAsync(PingRequest request, CallContext context = default)\n    {\n        return new PingResponse();\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhona%2Fgrpc.featureflags","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhona%2Fgrpc.featureflags","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhona%2Fgrpc.featureflags/lists"}