package Ġme . cc amp o . aws flake . server Ċ Ċ import Ġio . mic ronaut . context . ApplicationContext Ċ import Ġio . mic ronaut . context . annotation . Factory Ċ import Ġio . mic ronaut . http . MediaType Ċ import Ġio . mic ronaut . http . annotation . Controller Ċ import Ġio . mic ronaut . http . annotation . Get Ċ import Ġio . mic ronaut . http . annotation . Query Value Ċ import Ġio . mic ronaut . runtime . Mic ronaut Ċ import Ġme . cc amp o . aws flake . core . AWS Region Ċ import Ġme . cc amp o . aws flake . core . ID Generator Ċ import Ġme . cc amp o . aws flake . core . encode Ċ import Ġjava . time . Instant Ċ import Ġjavax . inject . Singleton Ċ Ċ object ĠAWS Fl ake Application Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠM ic ronaut . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. packages (" me . cc amp o . aws flake ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. main Class ( AWS Fl ake Application . java Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Controller ("/ id ") Ċ class ĠAWS Fl ake Controller ( private Ġval Ġid Generator : ĠID Generator ) Ġ{ ĊĊĠĠĠ Ġ@ Get ( pro duces Ġ= Ġ[ MediaType . TEXT _ PLAIN ]) ĊĠĠĠ Ġfun Ġgenerate Id (@ Query Value Ġmin Length : ĠInt ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġid Generator . next Id () ĊĠĠĠĠĠĠĠ Ġreturn Ġencode ( id , Ġmin Len Ġ= Ġmin Length ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Factory Ċ internal Ġclass ĠID Generator Factory Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġid Generator ( ctx : ĠApplication Context ): ĠID Generator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠID Generator . Builder () ĊĊĠĠĠĠĠĠĠ Ġctx . environment . getProperty (" aws flake . ip ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Present Ġ{ Ġbuilder . ip ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġctx . environment . getProperty (" aws flake . epoch ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Present Ġ{ Ġbuilder . epoch ( Instant . parse ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġctx . environment . getProperty (" aws flake . region ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Present Ġ{ Ġbuilder . region ( AWS Region . parse ( it )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} Ċ } Ċ