# vim: ft=nginx

# =====MATRIX WELL-KNOWN FILES=====
# Used for server federation
location = /.well-known/matrix/server {
    charset utf-8;
    default_type application/json;

    if ($request_method = 'GET') {
        add_header Access-Control-Allow-Origin '*';
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
        add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization';

        return 200 '{"m.server":"${MATRIX_SERVER}"}';
    }

    if ($request_method = 'OPTIONS') {
        add_header Access-Control-Allow-Origin '*';
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
        add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization';
        add_header 'Content-Length' 0;
        return 204;
    }

    return 405;
}

location = /.well-known/matrix/client {
    charset utf-8;
    default_type application/json;

    if ($request_method = 'GET') {
        add_header Access-Control-Allow-Origin '*';
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
        add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization';

        return 200 '{"m.homeserver":{"base_url":"${MATRIX_CLIENT_SERVER}"}}';
    }

    if ($request_method = 'OPTIONS') {
        add_header Access-Control-Allow-Origin '*';
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
        add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization';
        add_header 'Content-Length' 0;
        return 204;
    }

    return 405;
}