File: //home/arjun/projects/env/lib/python3.10/site-packages/boto/__pycache__/provider.cpython-310.pyc
o
we�W � @ s d Z ddlZddlmZ ddlmZ ddlZddlmZ ddlmZ ddlm Z ddl
mZ dd lm
Z
dd
lmZ dd
lmZ ddlmZ dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&d Z'd!Z(d"Z)d#Z*e+� Z,G d$d%� d%e-�Z.G d&d'� d'e+�Z/d(d)� Z0dS )*zC
This class encapsulates the provider-specific header differences.
� N)�six)�datetime)�config)�
expanduser)�Config)�InvalidInstanceMetadataError)�ACL)�CannedACLStrings)�Policy�
header_prefix�metadata_prefixzx-amz-zx-goog-z
acl-headerzauth-headerzcopy-source-headerzcopy-source-version-id-headerzcopy-source-range-headerzdelete-marker-headerzdate-headerzmetadata-directive-headerzresumable-upload-headerzsecurity-token-header�
storage-classz
mfa-headerzserver-side-encryption-headerzversion-id-headerzrestore-header�StorageCopyError�StorageCreateError�StorageDataError�StoragePermissionsError�StorageResponseErrorc @ s e Zd ZdS )�ProfileNotFoundErrorN)�__name__�
__module__�__qualname__� r r �F/home/arjun/projects/env/lib/python3.10/site-packages/boto/provider.pyr J s r c @ s� e Zd Zddd�Zeed�Zeed�Z ddd�Z
ddd�Zddd�Zi e
e�eed �eed �ed
�eed �eed �eed
�eed �eed �eed �ed�eed �eed �eed �eed �eed �eed �i e
e�eed �eed �ed�eed �eed �ed�eed �eed �eed �eed �eed �ed�eed �eed �ed�ed�d�Z e!e"j#j$e%e"j#j&e'e"j#j(e)e"j#j*e+e"j#j,ie!e"j#j-e%e"j#j.e'e"j#j/e)e"j#j0e+e"j#j1id�Z2 d:dd�Z3dd� Z4dd� Z5e6e4e5�Z7d d!� Z8d"d#� Z9e6e8e9�Z:d$d%� Z;d&d'� Z<e6e;e<�Z=d(d)� Z> d:d*d+�Z?d,d-� Z@d.d/� ZAd0d1� ZBd2d3� ZCd4d5� ZDd6d7� ZEd8d9� ZFdS );�Provider)�aws_access_key_id�aws_secret_access_key�aws_security_token�aws_profile)�gs_access_key_id�gs_secret_access_keyNN)�aws�google�s3�gsFTzmeta-�acl�AWSzcopy-sourcezcopy-source-version-idzcopy-source-range�datez
delete-markerzmetadata-directiveNzsecurity-tokenzserver-side-encryptionz
version-idr
�mfa�restore�GOOG1� resumablec
C s4 d | _ d | _d | _|| _|| _|| _|| _|| _| j| j | _ | j
| j | _d | _t
j�td�d| d�}tdd�| _t
j�|�rG| j�|� | �||||� | �� | �� d| j| j }t�d|�rlt�d|�| _ d| j| j }t�d|�r�t�d|�| _d | j| j } t�d| �r�t�d| �| _d S d S )
N�~�.�credentialsF)�do_loadz%s_host�Credentialsz%s_portz%s_host_header)�host�port�host_header�
access_key�
secret_key�security_token�profile_name�name�AclClassMap� acl_class�
CannedAclsMap�canned_acls�_credential_expiry_time�os�path�joinr r �shared_credentials�isfile�load_from_path�get_credentials�configure_headers�configure_errors�
HostKeyMapr �
has_option�get�getint)
�selfr7 r3 r4 r5 r6 �shared_path�
host_opt_name�
port_opt_name�host_header_opt_namer r r �__init__� s8 �zProvider.__init__c C � | � � r| �� | jS �N)�_credentials_need_refresh�#_populate_keys_from_metadata_server�_access_key�rJ r r r �get_access_key� � zProvider.get_access_keyc C �
|| _ d S rQ )rT �rJ �valuer r r �set_access_key� �
zProvider.set_access_keyc C rP rQ )rR rS �_secret_keyrU r r r �get_secret_key� rW zProvider.get_secret_keyc C rX rQ )r] rY r r r �set_secret_key� r\ zProvider.set_secret_keyc C rP rQ )rR rS �_security_tokenrU r r r �get_security_token� rW zProvider.get_security_tokenc C rX rQ )r` rY r r r �set_security_token� r\ zProvider.set_security_tokenc C sZ | j d u rdS | j t�� }|j|j|jd d d d }|dk r+tj�d� dS dS )NF� i i@B i, z!Credentials need to be refreshed.T) r<