
                             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
 ZddZddZ G d de      Zy)z(Utilities for Cloud Pub/Sub Schemas API.    )absolute_import)division)unicode_literals)apisInvalidArgumentErrorc                      t        d      S )NzRThe schema name must include a revision-id of the format: SCHEMA_NAME@REVISION_ID.r        ,lib/googlecloudsdk/api_lib/pubsub/schemas.pyNoRevisionIdSpecifiedr      s    	"
 r   c                 @    | j                  d      }t        |      dkD  S )N@   )splitlen)
schema_reffind_ids     r   CheckRevisionIdInSchemaPathr       s!    S!'	W	r   c                      t        d      S )Nz7The schema type must be either AVRO or PROTOCOL-BUFFER.r   r
   r   r   InvalidSchemaTyper   %   s    	?
 r   c                     |j                         }|dk(  s|dk(  r | j                  j                  j                  S |dk(  r | j                  j                  j                  S t               )Nzprotocol-bufferprotocol_bufferavro)lowerSchemaTypeValueValuesEnumPROTOCOL_BUFFERAVROr   )messagesschema_typetype_strs      r   ParseSchemaTyper#   +   s^     (""h2C&C??..>>>6??..333r   c                 2    t        j                  dd|       S )Npubsubv1no_http)r   GetClientInstancer'   s    r   r)   r)   4   s    			$	@@r   Nc                 6    | xs
 t               } | j                  S N)r)   MESSAGES_MODULE)clients    r   GetMessagesModuler.   8   s    (&(&			r   c                   *    e Zd ZdZddZd Zd Zd Zy)SchemasClientz4Client for schemas service in the Cloud Pub/Sub API.Nc                     |xs
 t               | _        |xs t        |      | _        | j                  j                  | _        y r+   )r)   r-   r.   r    projects_schemas_service)selfr-   r    s      r   __init__zSchemasClient.__init__@   s5    /-/DK9 1& 9DMKK00DMr   c                 
   | j                   j                  |t        | j                   |      |      }| j                   j                  | j                   j	                  |      |      }| j
                  j                  |      S )a  Commits a revision for a Schema.

    Args:
      schema_ref: The full schema_path.
      schema_definition: The new schema definition to commit.
      schema_type: The type of the schema (avro or protocol-buffer).

    Returns:
    Schema: the committed Schema revision
    )nametype
definition)schema)commitSchemaRequestr7   )r    r   r#   "PubsubProjectsSchemasCommitRequestCommitSchemaRequestr3   Commit)r4   r   schema_definitionr!   r:   
commit_reqs         r   r>   zSchemasClient.CommitE   s|     ]]!!T]]K8$ " F
 AA MM==V=L B J ==
++r   c                     | j                   j                  | j                   j                  |      |      }| j                  j	                  |      S )a5  Rolls back to a previous schema revision.

    Args:
      schema_ref: The path of the schema to rollback.
      revision_id: The revision_id to rollback to.

    Returns:
    Schema: the new schema revision you have rolled back to.

    Raises:
      InvalidArgumentError: If no revision_id is provided.
    )
revisionId)rollbackSchemaRequestr7   )r    $PubsubProjectsSchemasRollbackRequestRollbackSchemaRequestr3   Rollback)r4   r   revision_idrollback_reqs       r   rF   zSchemasClient.Rollback[   sU     ==EE"mmAA" B 
 	 F L ==!!,//r   c                     t        |      s
t               | j                  j                  |      }| j                  j                  |      S )zDeletes a schema revision.

    Args:
      schema_ref: The path of the schema, with the revision_id.

    Returns:
    Schema: the deleted schema revision.
    )r7   )r   r   r    *PubsubProjectsSchemasDeleteRevisionRequestr3   DeleteRevision)r4   r   delete_revision_reqs      r   rK   zSchemasClient.DeleteRevisionp   sO     'z2!## 	@@ 	A 	
 
 ==''(;<<r   )NN)__name__
__module____qualname____doc__r5   r>   rF   rK   r
   r   r   r0   r0   =   s    <1
,,0*=r   r0   )Fr+   )rP   
__future__r   r   r   googlecloudsdk.api_lib.utilr   &googlecloudsdk.command_lib.pubsub.utilr   r   r   r   r#   r)   r.   objectr0   r
   r   r   <module>rU      sF    / &  ' , G
A 
D=F D=r   