Skip to content

odushimi-xer/Xerris.DotNet.Core.Aws

 
 

Repository files navigation

Xerris.DotNet.Core.Aws

AWS shared components

This module contains reusable components for C# AWS Lambdas and other AWS resources

##API

ApiGatewayProxyRequestExtensions

The ApiGatewayProxyRequestExtensions class provides convenience methods for worjking with the APIGatewayProxRequest

Parse Deserializes the JSON body into a C# Dto
    var addUserRequest = apiRequest.Parse<AddUserRequest>();
GetQueryString Retrieves the value of a querystring
    var searchString = apiRequest.GetQueryString("search_string");
GetAuthorization Retrieves the Authorization header
    var searchString = apiRequest.GetAuthorization();

ResponseBuilder

Factory method extensions that easily create the APIGatewayResponse

OK A HTTP 200 (OK) response with a JSON payload
    var results = await service.GetListByIdAndDescriptionAsync(request.GetQueryString("search_string"));
    return results.Ok();
Created A HTTP 201 (CREATED) response with a JSON payload
    var response = await userManagementService.AddUserAsync(addUserRequest).ConfigureAwait(false);
    return response.Created();
Accepted A HTTP 202 (ACCEPTED) response with a JSON payload
    var response = await userManagementService.DeleteUserAsync(addUserRequest).ConfigureAwait(false);
    return response.Accepted();
Error(this string error) A HTTP 500 (SERVER_ERROR) response with a JSON payload
    var response = await userManagementService.DeleteUserAsync(addUserRequest).ConfigureAwait(false);
    return response.Accepted();
UnAuthorized A HTTP 400 (BAD_REQUEST) response with a JSON payload
    if (!authenticationService.Authenticate(input.GetAuthorization()))
        return await Task.FromResult(ResponseBuilder.UnAuthorized());
BadRequest A HTTP 400 (BAD_REQUEST) response with JSON payload
    var addUserRequest = input.Parse<AddUserRequest>();
    var validation = addUserRequest.ValidateAdd();

    if (!validation.IsValid())
         return addUserRequest.Invalid(validation.Errors).ToJson().BadRequest();
BadRequest(this string payload) A HTTP 400 (BAD_REQUEST) response with a JSON payload
    return "invalid".BadRequest();

Repositories

###DynamoDb BaseRepository Used to interact with DynamoDB JSON-based tables

####Method Summary

FindOneAsync(ScanCondition) Scan for an entity that matches the criteria provided
    public async Task<User> FindUserAsync(string userName)
    {
        return await FindOneAsync<User>(WhereEquals(nameof(User.Email), userName));
    }
FindOneAsync(IEnumerable) Scan for an entity that matches the criteria provided
    //TODO
SaveAsync() Saves an Entity to the table the Repository is based on
    await userRepository.SaveAsync(user);
DeleteAsync() Deleted an Entity to the table the Repository is based on
    await userRepository.DeleteAsync(user);

###ScanConditionExtensions Extensions methods that generate DynamoDB ScanConditions using reflection on domain objects.

####Example Usage

    var movieStar =  new Foo("Angelina", "Jolie");
    var eq = movieStar.Equals(x => x.FirstName, angelina);

####Method Summary

Equals(x => x.FirstName, subject) Equals Condition
    var movieStar = new Foo("Angelina", "Jolie");
    var eq = movieStar.Equals(x => x.FirstName, angelina);
NotEqual(x => x.FirstName, subject) NotEqual Condition
    var movieStar = new Foo("Angelina", "Jolie");
    var eq = movieStar.NotEqual(x => x.FirstName, angelina);
NotEqual(x => x.FirstName, "Pitt") NotEqual Condition
    var movieStar = new Foo("Angelina", "Jolie");
    var eq = movieStar.NotEqual(x => x.FirstName, "Pitt");
Contains(x => x.FirstName, subject) Contains Condition
    var movieStar = new Foo("Angelina", "Jolie");
    var eq = movieStar.Contains(x => x.FirstName, angelina);
NotContains(x => x.FirstName, subject) NotContains Condition
    var movieStar = new Foo("Angelina", "Jolie");
    var eq = movieStar.NotContains(x => x.FirstName, angelina);
GreaterThan(x => x.FirstName, subject) GreaterThan Condition
    var movieStar = new Foo("Angelina", "Jolie") {Age = 44};
    var eq = movieStar.GreaterThan(x => x.Age, movieStar);
NotGreaterThan(x => x.FirstName, subject) NotGreaterThan Condition
    var movieStar = new Foo("Angelina", "Jolie") {Age = 44};
    var eq = movieStar.NotGreaterThan(x => x.Age, movieStar);
LessThan(x => x.FirstName, subject) LessThan Condition
    var movieStar = new Foo("Angelina", "Jolie") {Age = 44};
    var eq = movieStar.LessThan(x => x.Age, movieStar);
LessThanOrEqual(x => x.FirstName, subject) LessThanOrEqual Condition
    var movieStar = new Foo("Angelina", "Jolie") {Age = 44};
    var eq = movieStar.LessThanOrEqual(x => x.Age, movieStar);
And(ScanCondition) A way to aggregate multiple ScanConditions
    var movieStar = new Foo("Angelina", "Jolie") {Age = 44};
    var condition = movieStar.Equals(x => x.FirstName, movieStar)
                        .And(movieStar.GreaterThan(x => x.Age, movieStar))
                        .And(movieStar.NotEqual<Foo>(x => x.LastName, "Pitt")).ToList();

About

AWS shared components

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 88.9%
  • JavaScript 6.1%
  • TypeScript 5.0%