/*
 * https://webfolder.io/license.html
 */
package io.webfolder.cdp.channel;

import static org.glassfish.tyrus.client.ClientProperties.MASKING_KEY_GENERATOR;

import org.glassfish.tyrus.client.ClientManager;
import org.glassfish.tyrus.core.MaskingKeyGenerator;

import io.webfolder.cdp.Example;
import io.webfolder.cdp.Launcher;
import io.webfolder.cdp.session.Session;
import io.webfolder.cdp.session.SessionFactory;

@Example
public class TyrusWebSocketConnection {

    public static void main(String[] args) {
        ClientManager client = ClientManager.createClient();

        client.getProperties()
              .put(MASKING_KEY_GENERATOR, (MaskingKeyGenerator) () -> 0);

        // Optionally use JakartaWebSocketFactory for jakarta compatible api
        StandardWebSocketFactory channelFactory = new StandardWebSocketFactory(client);

        Launcher launcher = new Launcher(channelFactory);

        try (SessionFactory factory = launcher.launch();
                            Session session = factory.create()) {
            factory.addCloseListener(() -> client.shutdown());
            session.navigate("https://webfolder.io?cdp4j");
            session.waitDocumentReady();
            String content = session.getContent();
            System.out.println(content);
        } finally {
            launcher.kill();
        }
    }
}