77
88import java .io .PrintWriter ;
99import java .net .HttpURLConnection ;
10+ import java .util .Objects ;
11+ import java .util .Optional ;
1012
1113public class HealthHttp implements HttpFunction {
12- @ Override
13- public void service (HttpRequest request , HttpResponse response ) throws Exception {
14- PrintWriter writer = new PrintWriter (response .getWriter ());
15- response .setStatusCode (HttpURLConnection .HTTP_OK );
16- response .setContentType ("application/json; charset=UTF-8" );
17- writer .write ("{\" status\" : \" UP\" }" );
18- }
14+ @ Override
15+ public void service (HttpRequest request , HttpResponse response ) throws Exception {
16+ PrintWriter writer = new PrintWriter (response .getWriter ());
17+ response .setContentType ("application/json; charset=UTF-8" );
18+ response .setStatusCode (HttpURLConnection .HTTP_OK );
19+ handleCORS (request , response );
20+ writer .write ("{\" status\" : \" UP\" }" );
21+ }
22+
23+ private void handleCORS (HttpRequest request , HttpResponse response ) {
24+ Optional .ofNullable (request .getHeaders ().get ("Origin" ))
25+ .map (list -> list .get (0 ))
26+ .filter (HealthHttp ::isWhitelisted )
27+ .ifPresent (originValue -> {
28+ response .appendHeader ("Access-Control-Allow-Origin" , originValue );
29+ response .appendHeader ("Access-Control-Allow-Headers" , "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" );
30+ });
31+ }
32+
33+ private static boolean isWhitelisted (String source ) {
34+ Objects .requireNonNull (source );
35+ return source .equals ("https://somesite.com" ) || source .equals ("https://mail.google.com" );
36+ }
1937}
2038
21- // [END functions_health_get]
39+ // [END functions_health_get]
0 commit comments