(repo_cors) {
	header {
		Access-Control-Allow-Origin *
		Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
		Access-Control-Allow-Headers "*"
		Access-Control-Allow-Credentials true
		Strict-Transport-Security "max-age=15768000"
		# Request ID tracing
		+X-Request-ID {uuid}
	}
}

(repo_common_proxy) {
	# Set headers similar to uwsgi_param
	header_up Host {host}
	header_up X-Request-ID {uuid}
	# Remove sensitive headers
	header_down -X-Session-ID
	header_down -X-User-ID
}

(repo_site) {
	import repo_cors

	# UI Server routes
	handle / {
		request_body {
			max_size 100MB
		}
		reverse_proxy repo-web-ui:5000 {
			import repo_common_proxy
		}
	}

	# API routes
	handle /api/* {
		request_body {
			max_size 100MB
		}
		reverse_proxy repo-web-api:5000 {
			import repo_common_proxy
		}
	}

	# Large file upload API routes
	handle_path /api/records/*/draft/files/*/content {
		request_body {
			max_size 250GB
		}
		encode gzip
		reverse_proxy repo-web-api:5000 {
			import repo_common_proxy
		}
	}

	handle /static/* {
		root * /opt/invenio/var/instance/static
		file_server
	}

	handle /robots.txt {
		root * /opt/invenio/var/instance/static
		file_server
	}
}
