| /* | 
 |  * 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; | 
 |     } | 
 |  | 
 | } |