Skip to content

Instantly share code, notes, and snippets.

View mgjam's full-sized avatar

Milan Gatyás mgjam

View GitHub Profile
@mgjam
mgjam / kis-2.cs
Last active November 4, 2020 14:44
class MyService
{
/* ... dependencies ... */
MyResult Process(MyParams params)
{
if (!IsSerialCodeValid(params.SerialCode)) return MyResult.InvalidSerialCode;
var externalId = GetExternalId(params.SerialCode);
StoreData(params.SerialCode, externalId);
Report(params.SerialCode, externalId);
@mgjam
mgjam / kis-3.cs
Last active November 4, 2020 14:58
class MyService
{
private readonly ISerialCodeValidator serialCodeValidator;
private readonly IExternalIdService externalIdService;
private readonly IDataService dataService;
private readonly IReportingService reportingService;
MyResult Process(MyParams params)
{
if (!serialCodeValidator.IsSerialCodeValid(params.SerialCode)) return MyResult.InvalidSerialCode;
class EmailValidator
{
/* dependencies */
bool IsEmailValid(string email)
{
if ((email?.Length ?? 0) < 3) return false;
if (!Regex.IsMatch(email, myPattern)) return false;
if (myBlacklistService.IsEmailBlacklisted(email)) return false;
return true;
@mgjam
mgjam / kis-5.cs
Last active November 4, 2020 18:02
class EmailValidator
{
private readonly IEmailLengthValidation emailLengthValidation;
private readonly IEmailRegexValidation emailRegexValidation;
private readonly IEmailBlacklistValidation emailBlacklistValidation;
bool IsEmailValid(string email)
{
if (!emailLengthValidation.IsEmailValid(email)) return false;
if (!emailRegexValidation.IsEmailValid(email)) return false;
@mgjam
mgjam / kis-6.cs
Last active November 4, 2020 18:16
class EmailValidator
{
private readonly IEnumerable<IEmailValidation> emailValidations;
/*...ctor...*/
bool IsEmailValid(string email) => emailValidations
.Aggregate(true, (acc, src) => acc ? src.IsEmailValid(email) : acc);
}
interface IEmailValidation
{
@mgjam
mgjam / unit-1.cs
Last active February 5, 2021 14:52
class Processor
{
// .. dependencies
void Process(MyInput input)
{
if (ValidateInput(input))
{
new DatabaseConnection(...).ExecuteSql("...");
}
var serviceCollection = new ServiceCollection();
serviceCollection.AddTransient<IHttpService, HttpService>();
serviceCollection.AddTransient<IService, LoggingService>();
class MyDto
{
public string MyQueryStringValue { get; set; }
public string[] MyQuerystringArray { get; set; }
}
// myApiResource: Resource defined
myApiResource.addMethod(
...http_method...,
{
...lambda_integration_options...
requestTemplates: 'application/json': `{
"MyQueryStringValue": "$input.params('MyQueryStringValue')"
#if ($input.params('MyQuerystringArray') != '')
,"MyQuerystringArray": $input.params('MyQuerystringArray')
{
...,
"multiValueQueryStringParameters": {
"parameter1": [
"value1",
"value2"
],
"parameter2": [
"value"
]