-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathCustomTransformer.cs
More file actions
47 lines (40 loc) · 1.71 KB
/
Copy pathCustomTransformer.cs
File metadata and controls
47 lines (40 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// This file is referenced by docs/utilities/parameters.md
// via pymdownx.snippets (mkdocs).
namespace AWS.Lambda.Powertools.Docs.Snippets.Parameters;
// --8<-- [start:xml_transformer]
public class XmlTransformer : ITransformer
{
public T? Transform<T>(string value)
{
if (string.IsNullOrEmpty(value))
return default;
var serializer = new XmlSerializer(typeof(T));
using var reader = new StringReader(value);
return (T?)serializer.Deserialize(reader);
}
}
// --8<-- [end:xml_transformer]
// --8<-- [start:using_xml_transformer]
var value = await ssmProvider
.WithTransformation(new XmlTransformer())
.GetAsync<MyObj>("/my/parameter/xml")
.ConfigureAwait(false);
// --8<-- [end:using_xml_transformer]
// --8<-- [start:adding_xml_transformer]
// Get SSM Provider instance
ISsmProvider ssmProvider = ParametersManager.SsmProvider
.AddTransformer("XML", new XmlTransformer());
// Retrieve a single parameter
var value = await ssmProvider
.WithTransformation("XML")
.GetAsync<MyObj>("/my/parameter/xml")
.ConfigureAwait(false);
// --8<-- [end:adding_xml_transformer]
// --8<-- [start:fluent_api]
ssmProvider
.DefaultMaxAge(TimeSpan.FromSeconds(10)) // will set 10 seconds as the default cache TTL
.WithMaxAge(TimeSpan.FromMinutes(1)) // will set the cache TTL for this value at 1 minute
.WithTransformation(Transformation.Json) // Will use JSON transfomer to deserializes JSON to an object
.WithDecryption() // enable decryption of the parameter value
.Get<MyObj>("/my/param"); // finally get the value
// --8<-- [end:fluent_api]