Skip to content

Instantly share code, notes, and snippets.

View tomkerkhove's full-sized avatar

Tom Kerkhove tomkerkhove

View GitHub Profile
@tomkerkhove
tomkerkhove / Consume-gRPC-from-Azure-API-Management.cs
Created June 25, 2024 13:19
Example of consuming gRPC service with Azure API Management
using Grpc.Net.Client;
using System.Security.Authentication;
Console.WriteLine("Hello, World!");
var endpointAddress = "https://localhost:8124";
var apiPrefix = "grpc-api";
var subscriptionKey = "<subscription-key>";
GrpcChannel grpcChannel = CreateGrpcChannel(endpointAddress, apiPrefix, subscriptionKey);
{
"openapi": "3.0.1",
"info": {
"title": "Echo API",
"version": "1.0"
},
"servers": [
{
"url": "http://echoapi.cloudapp.net/api"
},
syntax = "proto3";
service TestService {
rpc Unary(Foo) returns (Foo);
rpc ClientStreaming(stream Foo) returns (Foo);
rpc ServerStreaming(Foo) returns (stream Foo);
rpc Duplex(stream Foo) returns (stream Foo);
}
message Foo {
{
"openapi": "3.0.1",
"info": {
"title": "Performance Testing API",
"version": "1.0"
},
"servers": [
{
"url": "http://apim-sandbox-cloud-native.azure-api.net/echo"
},
@tomkerkhove
tomkerkhove / advanced-frament.policy.xml
Last active August 9, 2023 12:09
Throttling by product, but applied on operation-level
<!--
IMPORTANT:
- Policy fragment are included as-is whenever they are referenced.
- If using variables. Ensure they are setup before use.
- Copy and paste your code here or simply start coding
-->
<fragment>
<rate-limit-by-key calls="@(int.Parse((string)context.Variables["amountOfCalls"]))" renewal-period="@(int.Parse((string)context.Variables["renewalPeriod"]))" counter-key="@(context.Subscription.Id)" remaining-calls-variable-name="remainingCallsPerSubscription" />
</fragment>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE order [
<!ENTITY myExternalEntity SYSTEM "expressions.json">
]>
<order>&myExternalEntity;</order>
{
"openapi": "3.0.1",
"info": {
"title": "Echo API",
"version": "1.0"
},
"servers": [
{
"url": "http://apim-sandbox-cloud-native.azure-api.net/echo"
},
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: {scaled-object-name}
spec:
scaleTargetRef:
name: foo
minReplicaCount: 1 # Optional. Default: 0
maxReplicaCount: 100 # Optional. Default: 100
triggers:
name: Add issue to project
on:
issues:
types:
- opened
jobs:
track_issue:
runs-on: ubuntu-latest
steps:
- name: Get project data