whole_func_string: function (id, path, body, contentType, options) {
      const metadata = {
        mimeType: contentType
      };
      const headers = {
        'Content-Type': 'application/json; charset=UTF-8'
      };
  
      if (options && options.ifMatch) {
        headers['If-Match'] = '"' + options.ifMatch + '"';
      }
  
      return this._request('PUT', BASE_URL + '/upload/drive/v2/files/' + id + '?uploadType=resumable', {
        body: JSON.stringify(metadata),
        headers: headers
      }).then((response) => {
        if (response.status === 412) {
          return (response);
        } else {
          return this._request('PUT', response.getResponseHeader('Location'), {
            body: contentType.match(/^application\/json/) ? JSON.stringify(body) : body
          });
        }
      });
    }
func_code_string: function (id, path, body, contentType, options) {
      const metadata = {
        mimeType: contentType
      };
      const headers = {
        'Content-Type': 'application/json; charset=UTF-8'
      };
  
      if (options && options.ifMatch) {
        headers['If-Match'] = '"' + options.ifMatch + '"';
      }
  
      return this._request('PUT', BASE_URL + '/upload/drive/v2/files/' + id + '?uploadType=resumable', {
        body: JSON.stringify(metadata),
        headers: headers
      }).then((response) => {
        if (response.status === 412) {
          return (response);
        } else {
          return this._request('PUT', response.getResponseHeader('Location'), {
            body: contentType.match(/^application\/json/) ? JSON.stringify(body) : body
          });
        }
      });
    }
func_documentation_string: Update an existing file.
  
  @param {string} id - File ID
  @param {string} path - File path
  @param body - File content
  @param {string} contentType - File content-type
  @param {Object} options
  @param {string} options.ifMatch - Only update the file if its ETag
  matches this string
  @returns {Promise} Resolves with the response of the network request
  
  @private