summaryrefslogtreecommitdiff
path: root/lib/Ultramarine/Middleware/SetContentType.pm6
blob: 600e2ae9a1c94e1208b5c041663ed5a115bfd2bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use v6.d.PREVIEW;
use Cro::HTTP::Middleware;
use Cro::HTTP::BodySerializerSelector;
use Ultramarine::Serialiser::XML;
 
my %types = (
    xml => 'text/xml',
    json => 'application/json',
    jsonp => 'application/javascript',
);
 
class Ultramarine::Middleware::SetContentType
 does Cro::HTTP::Middleware::Response {
    method process(Supply:D $response-stream{
        supply whenever $response-stream -> $response {
            with $response.request {
                my $format =  .query-value('f')[0// 'xml';
                with %types{$format} {
                    $response.append-header('Content-type',$_);
                }
            }
 
            emit $response;
        }
    }
}