Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
    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))
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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))
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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"]
    }
Ejemplo n.º 12
0
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"],
    }
Ejemplo n.º 13
0
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"],
    }
Ejemplo n.º 14
0
 def __str__(self):
     return decode_str(self._methodcall(lib.relay_secretkey_to_string),
                       free=True)
Ejemplo n.º 15
0
def parse_release(release):
    return json.loads(
        decode_str(rustcall(lib.relay_parse_release, encode_str(release)), free=True)
    )
Ejemplo n.º 16
0
 def sign(self, value):
     buf = make_buf(value)
     return decode_str(self._methodcall(lib.relay_secretkey_sign, buf),
                       free=True)
Ejemplo n.º 17
0
 def api_name(self):
     """
     Returns the API name of the given `DataCategory`.
     """
     return decode_str(lib.relay_data_category_name(self.value), free=True)