View difference between Paste ID: 9xGMyMmX and CUGjuDCt
SHOW: | | - or go back to the newest paste.
1
#!/usr/bin/env perl
2
3
package HelloWorld;
4
use Web::Simple;
5
use Params::Validate qw(:all);
6
7
use JSON;
8
9
sub status_ok {
10
    my %p    = Params::Validate::validate( @_, { entity => 1, }, );
11
12
    return [ 200, [ 'Content-type', 'application/json' ], [ encode_json($p{entity}) ] ];
13
}
14
15
sub status_bad_request {
16
    my %p    = Params::Validate::validate( @_, { message => { type => SCALAR }, }, );
17
18
		return [ 400, [ 'Content-type', 'application/json' ], [ encode_json({error => $p{message}}) ] ];
19
}
20
21
sub dispatch_request {
22
	sub (GET) {
23
		my $resposta = { ola => 'rest', linhas => [ { a => 1}, { a => 2} ] };
24
25
		return status_ok( entity => $resposta);
26
	},
27-
	sub (GET + /user/*) {
27+
	sub (/user/*/...) {
28
    my ($self, $user_id) = @_;
29
30
		# essa sub retorna mais 2 subs
31
		sub (PUT + /endereco/*) {
32
       my ($self, $endereco) = @_;
33
34
				return status_ok( entity => { msg => "endereco do $user_id atualizado para $endereco" } );
35
		},
36
		sub (DELETE + /endereco/*) {
37
       my ($self, $endereco) = @_;
38
39
				return status_ok( entity => { msg => "endereco $endereco do $user_id foi removido" } );
40
		}
41
  },
42
	sub () {
43
		return status_bad_request( message => 'metodo nao suportado'	);
44
	}
45
}
46
47
HelloWorld->run_if_script;