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

import static io.webfolder.cdp.JsonLibrary.Jackson;
import static io.webfolder.cdp.chromium.ChromiumChannel.stable;
import static io.webfolder.cdp.logger.CdpLoggerType.Console;
import static java.util.EnumSet.of;

import java.nio.file.Path;

import io.webfolder.cdp.Example;
import io.webfolder.cdp.Launcher;
import io.webfolder.cdp.Options;
import io.webfolder.cdp.chromium.Chromium;
import io.webfolder.cdp.chromium.ChromiumOptions;
import io.webfolder.cdp.chromium.ChromiumVersion;
import io.webfolder.cdp.session.Session;
import io.webfolder.cdp.session.SessionFactory;

@Example
public class ChromiumDownloader {

    public static void main(String[] args) {
        ChromiumOptions options = ChromiumOptions
                                            .builder()
                                            .jsonLibrary(Jackson)
                                            .loggerType(Console)
                                        .build();

        Chromium chromium = new Chromium(options);
        final long daysAgo = 30;
        // download the chromium stable version if it's released before 10 days ago
        ChromiumVersion version = chromium.download(stable, daysAgo);
        // delete the stable version if it's released before 15 days ago
        chromium.deleteOldVersions(of(stable), daysAgo + 5);
        Path executablePath = chromium.getExecutablePath(version);

        Launcher launcher = new Launcher(
                                    Options.builder()
                                        .browserExecutablePath(executablePath.toString())
                                    .build()
        );

        try (SessionFactory factory = launcher.launch();
                            Session session = factory.create()) {
            session.navigate("https://yahoo.com");
            session.waitDocumentReady();
        } finally {
            launcher.kill();
        }
    }
}