/*
* Copyright 2013 Netflix, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package netflix.adminresources.resources;
import com.google.common.annotations.Beta;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* @author Nitesh Kant
*/
@Path("/env")
@Beta
@Produces(MediaType.APPLICATION_JSON)
public class EnvironmentResource {
public static class EnvResponse {
private Map<String, String> env;
public EnvResponse(Map<String, String> env) {
this.env = env;
}
public Map<String, String> getEnv() {
return env;
}
}
@GET
public Response getEnvironmentVars() {
// make a writable copy of the immutable System.getenv() map
Map<String, String> envVarsMap = new HashMap<String, String>(System.getenv());
// mask the specified properties if they're in the envVarsMap
Set<String> maskedProperties = MaskedResourceHelper.getMaskedPropertiesSet();
Iterator<String> maskedResourcesIter = maskedProperties.iterator();
while (maskedResourcesIter.hasNext()) {
String maskedResource = maskedResourcesIter.next();
if (envVarsMap.containsKey(maskedResource)) {
envVarsMap.put(maskedResource, MaskedResourceHelper.MASKED_PROPERTY_VALUE);
}
}
GsonBuilder gsonBuilder = new GsonBuilder().serializeNulls();
Gson gson = gsonBuilder.create();
String envJson = gson.toJson(new EnvResponse(envVarsMap));
return Response.ok(envJson).build();
}
}