Codez 0.0.1
A library to generate random codes
See the version list below for details.
Install-Package Codez -Version 0.0.1
dotnet add package Codez --version 0.0.1
<PackageReference Include="Codez" Version="0.0.1" />
paket add Codez --version 0.0.1
codez
Codez is a library designed to help ease the process of generating codes for your end users that can be helpful for confirmation numbers, reservation systems, error codes, and more.
Getting Started
NuGet Coming Soon...
CodeGenerator
The core of the library is the CodeGenerator
class, which has two methods: GenerateAsync
and TryGenerateAsync
. The CodeGenerator
class is made up of several dependencies that can change the behavior of the generate methods:
- Alphabet (
IAlphabet
) - Randomizer (
IRandomizer
) - Uniqueness (
IUniqueness
) - Stop Words (
IStopWords
) - Options (
CodeGeneratorOptions
)
Each dependency is explained in detail below. Codez also comes with some defaults out of the box if you don't want to customize anything.
GenerateAsync
The GenerateAsync
method returns a code based on the alphabet and the length specified.
var generator = new CodeGenerator();
// returns "]hG/g"
string result = await generator.GenerateAsync(length: 5);
If the generator fails to generate a code, it will throw a CodeGeneratorException
.
TryGenerateAsync
The TryGenerateAsync
method returns a CodeGeneratorResult
that gives you the generated value, and some other metadata from the generation process. This method will not throw a CodeGeneratorException
.
var generator = new CodeGenerator();
// returns CodeGeneratorResult
var result = await generator.TryGenerateAsync(length: 5);
if (result.Success) {
Console.WriteLine(result.Value);
}
Alphabet
The alphabet is an important part of the generation process. You can constrain what kinds of codes get generated by specifying the alphabet appropriately. Codez comes with an AsciiAlphabet
by default with characters between ! (33)
and ~ (126)
included.
You can also use the StringAlphabet
class to pass in a string, and each character will be treated as an option during the generation.
var alphabet = new StringAlphabet("ABCDE");
var characters = alphabet.Characters;
You may also implement your own class using the IAlphabet
interface.
Randomizer
The IRandomizer
interface picks a random index based on your alphabet size. The RandomRandomizer
is used by default.
Uniqueness
The IUniqueness
interface allows you to enforce global uniquness on the codes that are being generated. This can be against a database, web api, or whatever you would like. By default, Codez provides a NoUniqueness
implementation.
Stop Words
StopWords (IStopWords
) provides a mechanism to filter out codes that may be deemed inappropriate or incorrect. You can live on the edge by using the default NoStopWords
. If you like it boring, you can also use the InMemoryStopWords
implementation and provide inappropriate words there, which uses and IndexOf
implementation to find matches.
Transformers
The transformer (ITransfomer
) interface allows you to take a uniquely generated code and transform it into something else. The transfomer will only run when the result is a Success
. Note, The uniqueness of the code coming from a transfomer is not garaunteed.
There is a sample in which this libary is used to generate unique container names.
Options
Options allow you to alter the behavior of the code generation:
- Retry Limit (default of 5): Number of iterations to attempt generation
codez
Codez is a library designed to help ease the process of generating codes for your end users that can be helpful for confirmation numbers, reservation systems, error codes, and more.
Getting Started
NuGet Coming Soon...
CodeGenerator
The core of the library is the CodeGenerator
class, which has two methods: GenerateAsync
and TryGenerateAsync
. The CodeGenerator
class is made up of several dependencies that can change the behavior of the generate methods:
- Alphabet (
IAlphabet
) - Randomizer (
IRandomizer
) - Uniqueness (
IUniqueness
) - Stop Words (
IStopWords
) - Options (
CodeGeneratorOptions
)
Each dependency is explained in detail below. Codez also comes with some defaults out of the box if you don't want to customize anything.
GenerateAsync
The GenerateAsync
method returns a code based on the alphabet and the length specified.
var generator = new CodeGenerator();
// returns "]hG/g"
string result = await generator.GenerateAsync(length: 5);
If the generator fails to generate a code, it will throw a CodeGeneratorException
.
TryGenerateAsync
The TryGenerateAsync
method returns a CodeGeneratorResult
that gives you the generated value, and some other metadata from the generation process. This method will not throw a CodeGeneratorException
.
var generator = new CodeGenerator();
// returns CodeGeneratorResult
var result = await generator.TryGenerateAsync(length: 5);
if (result.Success) {
Console.WriteLine(result.Value);
}
Alphabet
The alphabet is an important part of the generation process. You can constrain what kinds of codes get generated by specifying the alphabet appropriately. Codez comes with an AsciiAlphabet
by default with characters between ! (33)
and ~ (126)
included.
You can also use the StringAlphabet
class to pass in a string, and each character will be treated as an option during the generation.
var alphabet = new StringAlphabet("ABCDE");
var characters = alphabet.Characters;
You may also implement your own class using the IAlphabet
interface.
Randomizer
The IRandomizer
interface picks a random index based on your alphabet size. The RandomRandomizer
is used by default.
Uniqueness
The IUniqueness
interface allows you to enforce global uniquness on the codes that are being generated. This can be against a database, web api, or whatever you would like. By default, Codez provides a NoUniqueness
implementation.
Stop Words
StopWords (IStopWords
) provides a mechanism to filter out codes that may be deemed inappropriate or incorrect. You can live on the edge by using the default NoStopWords
. If you like it boring, you can also use the InMemoryStopWords
implementation and provide inappropriate words there, which uses and IndexOf
implementation to find matches.
Transformers
The transformer (ITransfomer
) interface allows you to take a uniquely generated code and transform it into something else. The transfomer will only run when the result is a Success
. Note, The uniqueness of the code coming from a transfomer is not garaunteed.
There is a sample in which this libary is used to generate unique container names.
Options
Options allow you to alter the behavior of the code generation:
- Retry Limit (default of 5): Number of iterations to attempt generation
Dependencies
-
.NETStandard 2.0
- MinVer (>= 1.0.0-beta.1)
- System.Threading.Tasks.Extensions (>= 4.6.0-preview.18571.3)
Used By
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.