:py:mod:`airflow.providers.google.suite.hooks.drive`
====================================================

.. py:module:: airflow.providers.google.suite.hooks.drive

.. autoapi-nested-parse::

   Hook for Google Drive service



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.suite.hooks.drive.GoogleDriveHook




.. py:class:: GoogleDriveHook(api_version = 'v3', gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None)

   Bases: :py:obj:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`

   Hook for the Google Drive APIs.

   :param api_version: API version used (for example v3).
   :param gcp_conn_id: The connection ID to use when fetching connection info.
   :param delegate_to: The account to impersonate using domain-wide delegation of authority,
       if any. For this to work, the service account making the request must have
       domain-wide delegation enabled.
   :param impersonation_chain: Optional service account to impersonate using short-term
       credentials, or chained list of accounts required to get the access_token
       of the last account in the list, which will be impersonated in the request.
       If set as a string, the account must grant the originating account
       the Service Account Token Creator IAM role.
       If set as a sequence, the identities from the list must grant
       Service Account Token Creator IAM role to the directly preceding identity, with first
       account from the list granting this role to the originating account.

   .. py:method:: get_conn(self)

      Retrieves the connection to Google Drive.

      :return: Google Drive services object.


   .. py:method:: get_media_request(self, file_id)

      Returns a get_media http request to a Google Drive object.

      :param file_id: The Google Drive file id
      :return: request
      :rtype: HttpRequest


   .. py:method:: exists(self, folder_id, file_name, drive_id = None)

      Checks to see if a file exists within a Google Drive folder

      :param folder_id: The id of the Google Drive folder in which the file resides
      :param file_name: The name of a file in Google Drive
      :param drive_id: Optional. The id of the shared Google Drive in which the file resides.
      :return: True if the file exists, False otherwise
      :rtype: bool


   .. py:method:: get_file_id(self, folder_id, file_name, drive_id = None)

      Returns the file id of a Google Drive file

      :param folder_id: The id of the Google Drive folder in which the file resides
      :param file_name: The name of a file in Google Drive
      :param drive_id: Optional. The id of the shared Google Drive in which the file resides.
      :return: Google Drive file id if the file exists, otherwise None
      :rtype: str if file exists else None


   .. py:method:: upload_file(self, local_location, remote_location, chunk_size = 100 * 1024 * 1024, resumable = False)

      Uploads a file that is available locally to a Google Drive service.

      :param local_location: The path where the file is available.
      :param remote_location: The path where the file will be send
      :param chunk_size: File will be uploaded in chunks of this many bytes. Only
          used if resumable=True. Pass in a value of -1 if the file is to be
          uploaded as a single chunk. Note that Google App Engine has a 5MB limit
          on request size, so you should never set your chunk size larger than 5MB,
          or to -1.
      :param resumable: True if this is a resumable upload. False means upload
          in a single request.
      :return: File ID
      :rtype: str


   .. py:method:: download_file(self, file_id, file_handle, chunk_size = 100 * 1024 * 1024)

      Download a file from Google Drive.

      :param file_id: the id of the file
      :param file_handle: file handle used to write the content to
      :param chunk_size: File will be downloaded in chunks of this many bytes.



