a
    $ñ»jÙ  ã                   @  s   d dl mZ d dlZd dlZd dlmZ ddlmZmZ ddl	m
Z
 ddl	mZ G dd	„ d	ejƒZeG d
d„ dƒƒZeG dd„ dƒƒZd	ddœdd„Zd	ddœdd„Zdd	ddœdd„Zd	ddœdd„ZedƒeG dd„ dƒƒƒZedƒeG dd„ dƒƒƒZdS ) é    )ÚannotationsN)Ú	dataclassé   )Úevent_classÚT_JSON_DICT)Únetwork)Úservice_workerc                   @  sJ   e Zd ZdZdZdZdZdZdZdZ	dd	œd
d„Z
edd dœdd„ƒZdS )ÚServiceNamezŸ
    The Background Service that will be associated with the commands/events.
    Every Background Service operates independently, but share the same API.
    ZbackgroundFetchZbackgroundSyncZpushMessagingZnotificationsZpaymentHandlerZperiodicBackgroundSyncÚstr©Úreturnc                 C  s   | j S ©N)Úvalue)Úself© r   ú>E:\soccer\ml_env\Lib\site-packages\mycdp/background_service.pyÚto_json   s    zServiceName.to_json©Újsonr   c                 C  s   | |ƒS r   r   ©Úclsr   r   r   r   Ú	from_json    s    zServiceName.from_jsonN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZBACKGROUND_FETCHZBACKGROUND_SYNCZPUSH_MESSAGINGZNOTIFICATIONSZPAYMENT_HANDLERZPERIODIC_BACKGROUND_SYNCr   Úclassmethodr   r   r   r   r   r	      s   r	   c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚEventMetadataz@A key-value pair for additional event information to pass along.r
   Úkeyr   r   r   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr   r   )Údictr   r   ©r   r   r   r   r   r   +   s    

zEventMetadata.to_jsonr   c                 C  s   | t |d ƒt |d ƒd�S )Nr   r   )r   r   )r
   r   r   r   r   r   1   s    

þzEventMetadata.from_jsonN)r   r   r   r   Ú__annotations__r   r   r   r   r   r   r   r   %   s   
r   c                   @  sp   e Zd ZU ded< ded< ded< ded< ded	< ded
< ded< ded< ddœdd„Zedd dœdd„ƒZdS )ÚBackgroundServiceEventznetwork.TimeSinceEpochÚ	timestampr
   Úoriginzservice_worker.RegistrationIDÚservice_worker_registration_idr	   ÚserviceÚ
event_nameÚinstance_idztyping.List[EventMetadata]Úevent_metadataÚstorage_keyr   r   c                 C  sp   t ƒ }| j ¡ |d< | j|d< | j ¡ |d< | j ¡ |d< | j|d< | j|d< dd„ | jD ƒ|d	< | j	|d
< |S )Nr#   r$   ÚserviceWorkerRegistrationIdr&   Ú	eventNameÚ
instanceIdc                 S  s   g | ]}|  ¡ ‘qS r   )r   ©Ú.0Úir   r   r   Ú
<listcomp>V   ó    z2BackgroundServiceEvent.to_json.<locals>.<listcomp>ÚeventMetadataÚ
storageKey)
r   r#   r   r$   r%   r&   r'   r(   r)   r*   r    r   r   r   r   L   s    
ÿ


zBackgroundServiceEvent.to_jsonr   c                 C  sh   | t j |d ¡t|d ƒtj |d ¡t |d ¡t|d ƒt|d ƒdd„ |d	 D ƒt|d
 ƒd�S )Nr#   r$   r+   r&   r,   r-   c                 S  s   g | ]}t  |¡‘qS r   )r   r   r.   r   r   r   r1   e   s   z4BackgroundServiceEvent.from_json.<locals>.<listcomp>r3   r4   )r#   r$   r%   r&   r'   r(   r)   r*   )r   ZTimeSinceEpochr   r
   r   ZRegistrationIDr	   r   r   r   r   r   Z   s    
ÿ

ÿ
ôz BackgroundServiceEvent.from_jsonN)r   r   r   r!   r   r   r   r   r   r   r   r"   9   s   
r"   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])r&   r   c                 c  s&   t ƒ }|  ¡ |d< d|dœ}|V }dS )zD
    Enables event updates for the service.
    :param service:
    r&   z BackgroundService.startObserving©ÚmethodÚparamsN©r   r   ©r&   r7   Úcmd_dictr   r   r   r   Ústart_observingl   s    þr;   c                 c  s&   t ƒ }|  ¡ |d< d|dœ}|V }dS )zE
    Disables event updates for the service.
    :param service:
    r&   zBackgroundService.stopObservingr5   Nr8   r9   r   r   r   Ústop_observing|   s    þr<   Úbool)Úshould_recordr&   r   c                 c  s.   t ƒ }| |d< | ¡ |d< d|dœ}|V }dS )z`
    Set the recording state for the service.
    :param should_record:
    :param service:
    ZshouldRecordr&   zBackgroundService.setRecordingr5   Nr8   )r>   r&   r7   r:   r   r   r   r   Úset_recordingŒ   s    þr?   c                 c  s&   t ƒ }|  ¡ |d< d|dœ}|V }dS )zE
    Clears all stored data for the service.
    :param service:
    r&   zBackgroundService.clearEventsr5   Nr8   r9   r   r   r   Úclear_eventsž   s    þr@   z'BackgroundService.recordingStateChangedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚRecordingStateChangedzACalled when the recording state for the service has been updated.r=   Úis_recordingr	   r&   r   r   c                 C  s   | t |d ƒt |d ¡d�S )NZisRecordingr&   )rB   r&   )r=   r	   r   r   r   r   r   r   µ   s    
þzRecordingStateChanged.from_jsonN©r   r   r   r   r!   r   r   r   r   r   r   rA   ®   s
   
rA   z0BackgroundService.backgroundServiceEventReceivedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚBackgroundServiceEventReceivedz„
    Called with all existing backgroundServiceEvents when enabled,
    and all new events afterwards if enabled and recording.
    r"   Úbackground_service_eventr   r   c                 C  s   | t  |d ¡d�S )NZbackgroundServiceEvent)rE   )r"   r   r   r   r   r   r   Æ   s
    ÿÿz(BackgroundServiceEventReceived.from_jsonNrC   r   r   r   r   rD   ½   s   
rD   )Ú
__future__r   ÚenumÚtypingÚdataclassesr   Úutilr   r   Ú r   r   ÚEnumr	   r   r"   r;   r<   r?   r@   rA   rD   r   r   r   r   Ú<module>   s*   2