package Peace::Controller::Developer; use Mojo::Base 'Mojolicious::Controller'; use v5.30.0; use strict; use warnings; use Data::Dumper; use Const::Fast; use Peace::Swagger; use Crypt::Bcrypt qw/bcrypt/; use Crypt::URandom qw/urandom/; use Peace; use Peace::DB; use Peace::Model::Developer; use Peace::DAO::Developer; const my $swagger => Peace::Swagger->new; sub post { my $self = shift; my $json = $self->req->json; my $peace = Peace->new; my $config = $peace->peace_config; print Data::Dumper::Dumper $config; my $dbh = Peace::DB->dbh( config => $config ); my $developer_dao = Peace::DAO::Developer->new( dbh => $dbh ); unless ( defined $json ) { $self->render( text => 'body is not a json', status => '400' ); return; } my $spec = $swagger->developer_post; eval { $swagger->validate_request( json => $json, spec => $spec, ); }; if ($@) { $self->render( text => $@, status => '400' ); return; } my $secret = delete $json->{secret}; my $secret_bcrypt = bcrypt( $secret, '2b', 12, urandom(16) ); $json->{secret_bcrypt} = $secret_bcrypt; $json->{verified} = 0; my $developer = Peace::Model::Developer->new(%$json); eval { $developer_dao->create( developer => $developer ); }; if ($@) { $self->render( status => 400, text => $@ ); return; } $self->render( json => $developer->to_json() ); } 1; =encoding utf8 =head1 NAME Peace::Controller::Developer - Developer's http endpoint. =head1 SYNOPSIS # This object is used by mojolicious. =head1 DESCRIPTION Peace::Controller::Developer allows to interact using a json http api with the L objects in Peace. =head1 METHODS Peace::Controller::Developer implements the following methods: =head2 post # To be used by mojolicious. Creates a Developer in db with the data given by the user. =head1 SEE ALSO L, L =cut