/******************************************************************************* 
 * Copyright (c) 2014-2015 Red Hat, Inc. 
 * Distributed under license by Red Hat, Inc. All rights reserved. 
 * This program is made available under the terms of the 
 * Eclipse Public License v1.0 which accompanies this distribution, 
 * and is available at http://www.eclipse.org/legal/epl-v10.html 
 * 
 * Contributors: 
 * Red Hat, Inc. - initial API and implementation 
 ******************************************************************************/
package com.openshift.restclient.utils;

import java.io.InputStream;

import org.apache.commons.io.IOUtils;

/**
 * @author Andre Dietisheim
 * @author Jeff Cantrill
 */
public enum Samples {

	GROUP_ENDPONT_API_V1("openshift3/api_v1_endpoint.json"),
	GROUP_ENDPONT_OAPI_V1("openshift3/oapi_v1_endpoint.json"),
	GROUP_ENDPONT_APIS("openshift3/apis_endpoint.json"),
	GROUP_ENDPONT_APIS_EXTENSIONS("openshift3/apis_endpoint_extensions.json"),
	
	// api/extensions
	V1BETA1_API_EXT_SCALE("openshift3/api/extensions/v1beta1_scale.json"),
	
	//v1
	V1_KUBE_CONFIG("openshift3/v1_kubeconfig.yaml"),

	V1_BUILD_CONFIG("openshift3/v1_build_config.json"),
	V1_BUILD_CONFIG_LIST("openshift3/v1_build_config_list.json"),
	V1_DEPLOYMENT_CONIFIG("openshift3/v1_deployment_config.json"),
	V1_ENDPOINTS("openshift3/api/v1_endpoints.json"),
	V1_EVENT("openshift3/v1_event.json"),
	V1_IMAGE_STREAM("openshift3/v1_image_stream.json"),
	V1_IMAGE_STREAM_IMPORT("openshift3/v1_image_stream_import.json"), 
	V1_BUILD("openshift3/v1_build.json"), 
	V1_OBJECT_REF("openshift3/v1_objectref.json"), 
	V1_POD("openshift3/v1_pod.json"), 
	V1_PROJECT("openshift3/v1_project.json"), 
	V1_PROJECT_REQUEST("openshift3/v1_project_request.json"), 
	V1_PVC("openshift3/v1_pvc.json"),
	V1_PERSISTENT_VOLUME("openshift3/v1_persistent_volume.json"),
	V1_REPLICATION_CONTROLLER("openshift3/v1_replication_controller.json"), 
	V1_ROLE_BINDING("openshift3/v1_role_binding.json"), 
	V1_ROUTE("openshift3/v1_route.json"),
	V1_ROUTE_WO_TLS("openshift3/v1_route_wo_tls.json"),
	V1_ROUTE_PORT_NUMERIC("openshift3/v1_route_port_numeric.json"),
	V1_ROUTE_PORT_NAME("openshift3/v1_route_port_name.json"),
	V1_SERVICE("openshift3/v1_service.json"),
	V1_SERVICE_ACCOUNT("openshift3/v1_service_account.json"),
	V1_Status("openshift3/v1_status.json"),
	V1_TEMPLATE("openshift3/v1_template.json"), 
	V1_USER("openshift3/v1_user.json"),
	V1_SECRET("openshift3/v1_secret.json"),
	V1_UNRECOGNIZED("openshift3/v1_unrecognized.json"),
	V1_CONFIG_MAP("openshift3/v1_config_map.json"),
	V1_CONFIG_MAP_LIST_EMPTY("openshift3/v1_config_map_list_empty.json"),
	V1_EMPTYDIR_VOLUME_SOURCE("openshift3/v1_empty_dir_volume_source.json"),
	V1_SECRET_VOLUME_SOURCE("openshift3/v1_secret_volume_source.json"),
	V1_PVC_VOLUME_SOURCE("openshift3/v1_pvc_volume_source.json"),
    V1_LIFECYCLE("openshift3/v1_lifecycle.json"),
	V1_DOCKER_IMAGE_MANIFEST("dockerregistry/v1_image_manifest.json"),
	V1_BUILDCONFIG_PIPELINE("openshift3/v1_buildconfig_pipeline.json");

	private static final String SAMPLES_FOLDER = "/samples/";

	private String filePath;

	Samples(String fileName) {
		this.filePath = SAMPLES_FOLDER + fileName;
	}
	
	Samples(String root, String filename){
		this.filePath = root + filename;
	}

	public String getContentAsString() {
		String content = null;
		try {
			final InputStream contentStream = Samples.class.getResourceAsStream(filePath);
			content = IOUtils.toString(contentStream, "UTF-8");
		} catch (Throwable e) {
			e.printStackTrace();
			throw new RuntimeException("Could not read file " + filePath + ": " + e.getMessage());
		}
		return content;
	}
}
