def split_chunks(string, remarks): json_chunks = rustcall( lib.relay_split_chunks, encode_str(string), encode_str(json.dumps(remarks)), ) return json.loads(decode_str(json_chunks, free=True))
def convert_datascrubbing_config(config): """ Convert an old datascrubbing config to the new PII config format. """ raw_config = encode_str(json.dumps(config)) raw_rv = rustcall(lib.relay_convert_datascrubbing_config, raw_config) return json.loads(decode_str(raw_rv, free=True))
def pii_selectors_from_event(event): """ DEPRECATED: Use relay_pii_selector_suggestions_from_event """ raw_event = encode_str(json.dumps(event)) raw_rv = rustcall(lib.relay_pii_selectors_from_event, raw_event) return json.loads(decode_str(raw_rv, free=True))
def normalize_event(self, event=None, raw_event=None): if raw_event is None: raw_event = _serialize_event(event) event = _encode_raw_event(raw_event) rv = self._methodcall(lib.relay_store_normalizer_normalize_event, event) return json.loads(decode_str(rv, free=True))
def pii_strip_event(config, event): """ Scrub an event using new PII stripping config. """ raw_config = encode_str(json.dumps(config)) raw_event = encode_str(json.dumps(event)) raw_rv = rustcall(lib.relay_pii_strip_event, raw_config, raw_event) return json.loads(decode_str(raw_rv, free=True))
def pii_selector_suggestions_from_event(event): """ Walk through the event and collect selectors that can be applied to it in a PII config. This function is used in the UI to provide auto-completion of selectors. """ raw_event = encode_str(json.dumps(event)) raw_rv = rustcall(lib.relay_pii_selector_suggestions_from_event, raw_event) return json.loads(decode_str(raw_rv, free=True))
def _init_valid_platforms(): global VALID_PLATFORMS size_out = ffi.new("uintptr_t *") strings = rustcall(lib.relay_valid_platforms, size_out) valid_platforms = [] for i in range(int(size_out[0])): valid_platforms.append(decode_str(strings[i], free=True)) VALID_PLATFORMS = frozenset(valid_platforms)
def validate_sampling_configuration(condition): """ Validate the whole sampling configuration. Used in dynamic sampling serializer. The parameter is a string containing the rules configuration as JSON. """ assert isinstance(condition, string_types) raw_error = rustcall(lib.relay_validate_sampling_configuration, encode_str(condition)) error = decode_str(raw_error, free=True) if error: raise ValueError(error)
def scrub_event(config, data): if not config: return data config = json.dumps(config) raw_event = _serialize_event(data) event = _encode_raw_event(raw_event) rv = rustcall(lib.relay_scrub_event, encode_str(config), event) return json.loads(decode_str(rv, free=True))
def validate_pii_config(config): """ Validate a PII config against the schema. Used in project options UI. The parameter is a JSON-encoded string. We should pass the config through as a string such that line numbers from the error message match with what the user typed in. """ assert isinstance(config, string_types) raw_error = rustcall(lib.relay_validate_pii_config, encode_str(config)) error = decode_str(raw_error, free=True) if error: raise ValueError(error)
def validate_register_response(public_key, data, signature, max_age=60 * 15): response_json = rustcall( lib.relay_validate_register_response, public_key._objptr, make_buf(data), encode_str(signature), max_age, ) response = json.loads(decode_str(response_json, free=True)) return { "relay_id": uuid.UUID(response["relay_id"]), "token": response["token"] }
def create_register_challenge(data, signature, max_age=60 * 15): challenge_json = rustcall( lib.relay_create_register_challenge, make_buf(data), encode_str(signature), max_age, ) challenge = json.loads(decode_str(challenge_json, free=True)) return { "relay_id": uuid.UUID(challenge["relay_id"]), "public_key": PublicKey.parse(challenge["public_key"]), "token": challenge["token"], }
def validate_register_response(data, signature, secret, max_age=60): response_json = rustcall( lib.relay_validate_register_response, make_buf(data), encode_str(signature), encode_str(secret), max_age, ) response = json.loads(decode_str(response_json, free=True)) return { "relay_id": uuid.UUID(response["relay_id"]), "token": response["token"], "public_key": response["public_key"], "version": response["version"], }
def __str__(self): return decode_str(self._methodcall(lib.relay_secretkey_to_string), free=True)
def parse_release(release): return json.loads( decode_str(rustcall(lib.relay_parse_release, encode_str(release)), free=True) )
def sign(self, value): buf = make_buf(value) return decode_str(self._methodcall(lib.relay_secretkey_sign, buf), free=True)
def api_name(self): """ Returns the API name of the given `DataCategory`. """ return decode_str(lib.relay_data_category_name(self.value), free=True)