Skip to content

Commit

Permalink
chore: adding disposable token generation example
Browse files Browse the repository at this point in the history
  • Loading branch information
pgautier404 committed Sep 8, 2023
1 parent b2fc063 commit 9961647
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
21 changes: 21 additions & 0 deletions examples/DisposableTokens/DisposableTokens.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<None Remove="Momento.Sdk" />
<None Remove="Microsoft.SourceLink.GitHub" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Momento.Sdk" Version="1.20.0" />
</ItemGroup>
</Project>
42 changes: 42 additions & 0 deletions examples/DisposableTokens/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using System;
using Momento.Sdk;
using Momento.Sdk.Auth;
using Momento.Sdk.Auth.AccessControl;
using Momento.Sdk.Config;
using Momento.Sdk.Responses;

ICredentialProvider authProvider = new EnvMomentoTokenProvider("MOMENTO_AUTH_TOKEN");

IAuthClient client = new AuthClient(AuthConfigurations.Default.Latest(), authProvider);
var scope = new DisposableTokenScope(Permissions: new List<DisposableTokenPermission>
{
new DisposableToken.CacheItemPermission(
CacheRole.ReadWrite,
CacheSelector.ByName("cache"),
CacheItemSelector.AllCacheItems
),
new DisposableToken.CachePermission(
CacheRole.ReadOnly,
CacheSelector.ByName("topsecret")
),
new DisposableToken.TopicPermission(
TopicRole.PublishSubscribe,
CacheSelector.ByName("cache"),
TopicSelector.ByName("example-topic")
)
});
var tokenResponse = await client.GenerateDisposableTokenAsync(
scope,
ExpiresIn.Minutes(5)
);

if (tokenResponse is GenerateDisposableTokenResponse.Success token)
{
Console.WriteLine("The generated disposable token is: " + token.AuthToken);
Console.WriteLine("The token endpoint is: " + token.Endpoint);
Console.WriteLine("The token expires at (epoch timestamp): " + token.ExpiresAt.Epoch());
}
else if (tokenResponse is GenerateDisposableTokenResponse.Error err)
{
Console.WriteLine("Error generating disposable token: " + err.Message);
}
3 changes: 3 additions & 0 deletions examples/DisposableTokens/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<img src="https://docs.momentohq.com/img/logo.svg" alt="logo" width="400"/>

# Disposable Tokens Example

0 comments on commit 9961647

Please sign in to comment.