You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
5.6 KiB
Python
209 lines
5.6 KiB
Python
# DO NOT EDIT THIS FILE!
|
|
#
|
|
# This file is generated from the CDP specification. If you need to make
|
|
# changes, edit the generator and regenerate all of the modules.
|
|
#
|
|
# CDP domain: BackgroundService (experimental)
|
|
from __future__ import annotations
|
|
from .util import event_class, T_JSON_DICT
|
|
from dataclasses import dataclass
|
|
import enum
|
|
import typing
|
|
from . import network
|
|
from . import service_worker
|
|
|
|
|
|
class ServiceName(enum.Enum):
|
|
'''
|
|
The Background Service that will be associated with the commands/events.
|
|
Every Background Service operates independently, but they share the same
|
|
API.
|
|
'''
|
|
BACKGROUND_FETCH = "backgroundFetch"
|
|
BACKGROUND_SYNC = "backgroundSync"
|
|
PUSH_MESSAGING = "pushMessaging"
|
|
NOTIFICATIONS = "notifications"
|
|
PAYMENT_HANDLER = "paymentHandler"
|
|
PERIODIC_BACKGROUND_SYNC = "periodicBackgroundSync"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
@dataclass
|
|
class EventMetadata:
|
|
'''
|
|
A key-value pair for additional event information to pass along.
|
|
'''
|
|
key: str
|
|
|
|
value: str
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['key'] = self.key
|
|
json['value'] = self.value
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
key=str(json['key']),
|
|
value=str(json['value']),
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class BackgroundServiceEvent:
|
|
#: Timestamp of the event (in seconds).
|
|
timestamp: network.TimeSinceEpoch
|
|
|
|
#: The origin this event belongs to.
|
|
origin: str
|
|
|
|
#: The Service Worker ID that initiated the event.
|
|
service_worker_registration_id: service_worker.RegistrationID
|
|
|
|
#: The Background Service this event belongs to.
|
|
service: ServiceName
|
|
|
|
#: A description of the event.
|
|
event_name: str
|
|
|
|
#: An identifier that groups related events together.
|
|
instance_id: str
|
|
|
|
#: A list of event-specific information.
|
|
event_metadata: typing.List[EventMetadata]
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['timestamp'] = self.timestamp.to_json()
|
|
json['origin'] = self.origin
|
|
json['serviceWorkerRegistrationId'] = self.service_worker_registration_id.to_json()
|
|
json['service'] = self.service.to_json()
|
|
json['eventName'] = self.event_name
|
|
json['instanceId'] = self.instance_id
|
|
json['eventMetadata'] = [i.to_json() for i in self.event_metadata]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
timestamp=network.TimeSinceEpoch.from_json(json['timestamp']),
|
|
origin=str(json['origin']),
|
|
service_worker_registration_id=service_worker.RegistrationID.from_json(json['serviceWorkerRegistrationId']),
|
|
service=ServiceName.from_json(json['service']),
|
|
event_name=str(json['eventName']),
|
|
instance_id=str(json['instanceId']),
|
|
event_metadata=[EventMetadata.from_json(i) for i in json['eventMetadata']],
|
|
)
|
|
|
|
|
|
def start_observing(
|
|
service: ServiceName
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Enables event updates for the service.
|
|
|
|
:param service:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['service'] = service.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'BackgroundService.startObserving',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def stop_observing(
|
|
service: ServiceName
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Disables event updates for the service.
|
|
|
|
:param service:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['service'] = service.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'BackgroundService.stopObserving',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def set_recording(
|
|
should_record: bool,
|
|
service: ServiceName
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Set the recording state for the service.
|
|
|
|
:param should_record:
|
|
:param service:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['shouldRecord'] = should_record
|
|
params['service'] = service.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'BackgroundService.setRecording',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def clear_events(
|
|
service: ServiceName
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Clears all stored data for the service.
|
|
|
|
:param service:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['service'] = service.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'BackgroundService.clearEvents',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
@event_class('BackgroundService.recordingStateChanged')
|
|
@dataclass
|
|
class RecordingStateChanged:
|
|
'''
|
|
Called when the recording state for the service has been updated.
|
|
'''
|
|
is_recording: bool
|
|
service: ServiceName
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> RecordingStateChanged:
|
|
return cls(
|
|
is_recording=bool(json['isRecording']),
|
|
service=ServiceName.from_json(json['service'])
|
|
)
|
|
|
|
|
|
@event_class('BackgroundService.backgroundServiceEventReceived')
|
|
@dataclass
|
|
class BackgroundServiceEventReceived:
|
|
'''
|
|
Called with all existing backgroundServiceEvents when enabled, and all new
|
|
events afterwards if enabled and recording.
|
|
'''
|
|
background_service_event: BackgroundServiceEvent
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> BackgroundServiceEventReceived:
|
|
return cls(
|
|
background_service_event=BackgroundServiceEvent.from_json(json['backgroundServiceEvent'])
|
|
)
|