| /* | |
| * Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"). | |
| * You may not use this file except in compliance with the License. | |
| * A copy of the License is located at | |
| * | |
| * http://aws.amazon.com/apache2.0 | |
| * | |
| * or in the "license" file accompanying this file. This file 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 com.amazonaws.auth; | |
| import java.io.File; | |
| import java.io.FileInputStream; | |
| import java.io.FileNotFoundException; | |
| import java.io.IOException; | |
| import java.io.InputStream; | |
| import java.util.Properties; | |
| /** | |
| * Simple implementation AWSCredentials that reads in AWS access keys from a | |
| * properties file. The AWS access key is expected to be in the "accessKey" | |
| * property and the AWS secret key id is expected to be in the "secretKey" | |
| * property. | |
| */ | |
| public class PropertiesCredentials implements AWSCredentials { | |
| private final String accessKey; | |
| private final String secretAccessKey; | |
| /** | |
| * Reads the specified file as a Java properties file and extracts the | |
| * AWS access key from the "accessKey" property and AWS secret access | |
| * key from the "secretKey" property. If the specified file doesn't | |
| * contain the AWS access keys an IOException will be thrown. | |
| * | |
| * @param file | |
| * The file from which to read the AWS credentials | |
| * properties. | |
| * | |
| * @throws FileNotFoundException | |
| * If the specified file isn't found. | |
| * @throws IOException | |
| * If any problems are encountered reading the AWS access | |
| * keys from the specified file. | |
| * @throws IllegalArgumentException | |
| * If the specified properties file does not contain the | |
| * required keys. | |
| */ | |
| public PropertiesCredentials(File file) throws FileNotFoundException, IOException, IllegalArgumentException { | |
| if (!file.exists()) { | |
| throw new FileNotFoundException("File doesn't exist: " | |
| + file.getAbsolutePath()); | |
| } | |
| FileInputStream stream = new FileInputStream(file); | |
| try { | |
| Properties accountProperties = new Properties(); | |
| accountProperties.load(stream); | |
| if (accountProperties.getProperty("accessKey") == null || | |
| accountProperties.getProperty("secretKey") == null) { | |
| throw new IllegalArgumentException( | |
| "The specified file (" + file.getAbsolutePath() | |
| + ") doesn't contain the expected properties 'accessKey' " | |
| + "and 'secretKey'." | |
| ); | |
| } | |
| accessKey = accountProperties.getProperty("accessKey"); | |
| secretAccessKey = accountProperties.getProperty("secretKey"); | |
| } finally { | |
| try { | |
| stream.close(); | |
| } catch (IOException e) { | |
| } | |
| } | |
| } | |
| /** | |
| * Reads the specified input stream as a stream of Java properties file | |
| * content and extracts the AWS access key ID and secret access key from the | |
| * properties. | |
| * | |
| * @param inputStream | |
| * The input stream containing the AWS credential properties. | |
| * | |
| * @throws IOException | |
| * If any problems occur while reading from the input stream. | |
| */ | |
| public PropertiesCredentials(InputStream inputStream) throws IOException { | |
| Properties accountProperties = new Properties(); | |
| try { | |
| accountProperties.load(inputStream); | |
| } finally { | |
| try {inputStream.close();} catch (Exception e) {} | |
| } | |
| if (accountProperties.getProperty("accessKey") == null || | |
| accountProperties.getProperty("secretKey") == null) { | |
| throw new IllegalArgumentException("The specified properties data " + | |
| "doesn't contain the expected properties 'accessKey' and 'secretKey'."); | |
| } | |
| accessKey = accountProperties.getProperty("accessKey"); | |
| secretAccessKey = accountProperties.getProperty("secretKey"); | |
| } | |
| /* (non-Javadoc) | |
| * @see com.amazonaws.auth.AWSCredentials#getAWSAccessKeyId() | |
| */ | |
| public String getAWSAccessKeyId() { | |
| return accessKey; | |
| } | |
| /* (non-Javadoc) | |
| * @see com.amazonaws.auth.AWSCredentials#getAWSSecretKey() | |
| */ | |
| public String getAWSSecretKey() { | |
| return secretAccessKey; | |
| } | |
| } |