Best Python code snippet using localstack_python
s3_listener.py
Source:s3_listener.py  
...842def handle_notification_request(bucket, method, data):843    if method == "GET":844        return handle_get_bucket_notification(bucket)845    if method == "PUT":846        return handle_put_bucket_notification(bucket, data)847    return empty_response()848def handle_get_bucket_notification(bucket):849    response = Response()850    response.status_code = 200851    response._content = ""852    # TODO check if bucket exists853    result = '<NotificationConfiguration xmlns="%s">' % XMLNS_S3854    if bucket in S3_NOTIFICATIONS:855        notifs = S3_NOTIFICATIONS[bucket]856        for notif in notifs:857            for dest in NOTIFICATION_DESTINATION_TYPES:858                if dest in notif:859                    dest_dict = {860                        "%sConfiguration"861                        % dest: {862                            "Id": notif["Id"],863                            dest: notif[dest],864                            "Event": notif["Event"],865                            "Filter": notif["Filter"],866                        }867                    }868                    result += xmltodict.unparse(dest_dict, full_document=False)869    result += "</NotificationConfiguration>"870    response._content = result871    return response872def _validate_filter_rules(filter_doc):873    rules = filter_doc.get("FilterRule")874    if not rules:875        return876    for rule in rules:877        name = rule.get("Name", "")878        if name.lower() not in ["suffix", "prefix"]:879            raise InvalidFilterRuleName(name)880        # TODO: check what other rules there are881def _sanitize_notification_filter_rules(filter_doc):882    rules = filter_doc.get("FilterRule")883    if not rules:884        return885    for rule in rules:886        name = rule.get("Name", "")887        if name.lower() not in ["suffix", "prefix"]:888            raise InvalidFilterRuleName(name)889        rule["Name"] = name.title()890def handle_put_bucket_notification(bucket, data):891    parsed = xmltodict.parse(data)892    notif_config = parsed.get("NotificationConfiguration")893    notifications = []894    for dest in NOTIFICATION_DESTINATION_TYPES:895        config = notif_config.get("%sConfiguration" % dest)896        configs = config if isinstance(config, list) else [config] if config else []897        for config in configs:898            events = config.get("Event")899            if isinstance(events, six.string_types):900                events = [events]901            event_filter = config.get("Filter", {})902            # make sure FilterRule is an array903            s3_filter = _get_s3_filter(event_filter)904            if s3_filter and not isinstance(s3_filter.get("FilterRule", []), list):...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
