
    Y                     n    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ d Zd Z	d	 Z
dd
Zd Z	 ddZy)zUtils for common error logic.    )absolute_import)division)unicode_literals)errors)storage_urlc                 n    t        j                  dj                  dj                  |       |||            )a  Raises error for user input mismatched with command resource type.

  Example message:

  "gcloud storage buckets" create only accepts bucket URLs.
  Example: "gs://bucket"
  Received: "gs://user-bucket/user-object.txt"

  Args:
    command_list (list[str]): The command being run. Can be gotten from an
      argparse object with `args.command_path`.
    expected_resource_type (str): Raise an error because we did not get this.
    example: (str): An example of a URL to a resource with the correct type.
    url (StorageUrl): The erroneous URL received.

  Raises:
    InvalidUrlError: Explains that the user entered a URL for the wrong type
      of resource.
  z7"{}" only accepts {} URLs.
Example: "{}"
Received: "{}" )r   InvalidUrlErrorformatjoin)command_listexpected_resource_typeexampleurls       5lib/googlecloudsdk/command_lib/storage/errors_util.py$_raise_error_for_wrong_resource_typer      s8    . 	AHH
((<
 "8'3	     c                 v    t        |t        j                        r|j                         st	        | dd|       y y )Nbucketgs://bucket)
isinstancer   CloudUrl	is_bucketr   r   r   s     r   raise_error_if_not_bucketr   7   s1    
S+..
/CMMO(hs 5Dr   c                 v    t        |t        j                        r|j                         st	        | dd|       y y )Nobjectzgs://bucket/object.txt)r   r   r   	is_objectr   r   s     r   raise_error_if_not_cloud_objectr   >   s2    
S+..
/CMMO(h 8# 5Dr   c                     t        |t        j                        r&|j                  t        j                  j
                  u st        | d||       y y )NzGoogle Cloud Storage)r   r   r   schemeProviderPrefixGCSr   )r   r   r   s      r   raise_error_if_not_gcsr$   E   sA    k**+
**2266
6(,gs 7r   c                 4    t        | |       t        | |       y )N)r$   r   r   s     r   raise_error_if_not_gcs_bucketr&   O   s    s+L#.r   c                     t        | |d       t        |t        j                        r|j	                         st        | dj                  |      d|       y y )Nzgs://bucket/folder/)r   zGoogle Cloud Storage {})r$   r   r   r   r   r   r   )r   r   folder_types      r   "raise_error_if_not_gcs_folder_typer)   T   sN     s4IJ
S+..
/CMMO(!((5	 5Dr   N)r   )zmanaged folder)__doc__
__future__r   r   r   "googlecloudsdk.command_lib.storager   r   r   r   r   r$   r&   r)    r   r   <module>r.      s<    $ &  ' 5 :</ $4
r   