# SPDX-FileCopyrightText: 2024 Clicks Codes
#
# SPDX-License-Identifier: GPL-3.0-only

{ lib, ... }: let
  step0 = {
    "calibre.clicks.codes" = {
      service = lib.clicks.nginx.http.unsafeAddCrossOriginHeader (lib.clicks.nginx.http.reverseProxy "generic" 1024);
      www = true;
      dnsProvider = "cloudflare";
      routes = null;
      authWith = "tailscale";
      enableHttp = false;
    };
  };
  step1 = {
    "calibre.clicks.codes" = {
      service = {
        _type = "header";
        name = "Access-Control-Allow-Origin";
        value = "*";
        content = {
          host = "generic";
          port = 1024;
          protocol = "http";
          _type = "reverseProxy";
          headers = null;
        };
      };
      dnsProvider = "cloudflare";
      routes = null;
      authWith = "tailscale";
      enableHttp = false;
    };
    "www.calibre.clicks.codes" = {
      routes."~ ^/?([^\r\n]*)$" = lib.home-manager.hm.dag.entryAnywhere {
        to = "https://calibre.clicks.codes/$1";
        permanent = true;
        _type = "redirect";
        headers = null;
      };
      dnsProvider = "cloudflare";
      authWith = null;
      service = null;
      enableHttp = false;
    };
  };
  step2 = {
    "calibre.clicks.codes" = {
      routes."/" = lib.home-manager.hm.dag.entryAnywhere {
        _type = "header";
        name = "Access-Control-Allow-Origin";
        value = "*";
        content = {
          host = "generic";
          port = 1024;
          protocol = "http";
          _type = "reverseProxy";
          headers = null;
        };
      };
      dnsProvider = "cloudflare";
      authWith = "tailscale";
      enableHttp = false;
    };
    "www.calibre.clicks.codes" = {
      routes."~ ^/?([^\r\n]*)$" = lib.home-manager.hm.dag.entryAnywhere {
        to = "https://calibre.clicks.codes/$1";
        permanent = true;
        _type = "redirect";
        headers = null;
      };
      dnsProvider = "cloudflare";
      authWith = null;
      enableHttp = false;
    };
  };
  step3 = {
    "calibre.clicks.codes" = {
      routes = [
        {
          name = "/";
          value = {
            _type = "header";
            name = "Access-Control-Allow-Origin";
            value = "*";
            content = {
              host = "generic";
              port = 1024;
              protocol = "http";
              _type = "reverseProxy";
              headers = null;
            };
          };
        }
      ];
      dnsProvider = "cloudflare";
      authWith = "tailscale";
      enableHttp = false;
    };
    "www.calibre.clicks.codes" = {
      routes = [
        {
          name = "~ ^/?([^\r\n]*)$";
          value = {
            to = "https://calibre.clicks.codes/$1";
            permanent = true;
            _type = "redirect";
            headers = null;
          };
        }
      ];
      dnsProvider = "cloudflare";
      authWith = null;
      enableHttp = false;
    };
  };
  step4 = {
    "calibre.clicks.codes" = {
      routes = [
        {
          name = "/";
          value = {
            host = "generic";
            port = 1024;
            protocol = "http";
            _type = "reverseProxy";
            headers = {
              "Access-Control-Allow-Origin" = "*";
            };
          };
        }
      ];
      dnsProvider = "cloudflare";
      authWith = "tailscale";
      enableHttp = false;
    };
    "www.calibre.clicks.codes" = {
      routes = [
        {
          name = "~ ^/?([^\r\n]*)$";
          value = {
            to = "https://calibre.clicks.codes/$1";
            permanent = true;
            _type = "redirect";
            headers = null;
          };
        }
      ];
      dnsProvider = "cloudflare";
      authWith = null;
      enableHttp = false;
    };
  };
  step5 = {
    "calibre.clicks.codes" = {
      locations = [
        {
          name = "/";
          value = {
            proxyPass = "http://generic:1024";
            proxyWebsockets = true;
            recommendedProxySettings = true;
            extraConfig = "\nadd_header \"Access-Control-Allow-Origin\" \"*\";";
          };
        }
      ];
      dnsProvider = "cloudflare";
      authWith = "tailscale";
      enableHttp = false;
    };
    "www.calibre.clicks.codes" = {
      locations = [
        {
          name = "~ ^/?([^\r\n]*)$";
          value = {
            return = "307 https://calibre.clicks.codes/$1";
          };
        }
      ];
      dnsProvider = "cloudflare";
      authWith = null;
      enableHttp = false;
    };
  };
  step6 = {
    "calibre.clicks.codes" = {
      locations."/" = {
        priority = 100;
        proxyPass = "http://generic:1024";
        proxyWebsockets = true;
        recommendedProxySettings = true;
        extraConfig = "\nadd_header \"Access-Control-Allow-Origin\" \"*\";";
      };
      dnsProvider = "cloudflare";
      authWith = "tailscale";
      enableHttp = false;
    };
    "www.calibre.clicks.codes" = {
      locations."~ ^/?([^\r\n]*)$" = {
        return = "307 https://calibre.clicks.codes/$1";
        priority = 100;
      };
      dnsProvider = "cloudflare";
      authWith = null;
      enableHttp = false;
    };
  };
  step7 = {
    "calibre.clicks.codes" = {
      locations."/" = {
        priority = 100;
        proxyPass = "http://generic:1024";
        proxyWebsockets = true;
        recommendedProxySettings = true;
        extraConfig = "\nadd_header \"Access-Control-Allow-Origin\" \"*\";";
      };
      onlySSL = true;
      addSSL = false;
      useACMEHost = "calibre.clicks.codes";
      dnsProvider = "cloudflare";
      authWith = "tailscale";
    };
    "www.calibre.clicks.codes" = {
      locations."~ ^/?([^\r\n]*)$" = {
        return = "307 https://calibre.clicks.codes/$1";
        priority = 100;
      };
      dnsProvider = "cloudflare";
      onlySSL = true;
      addSSL = false;
      useACMEHost = "www.calibre.clicks.codes";
      authWith = null;
    };
  };
in {
  testGenerateWwwRedirects = {
    expr = lib.clicks.nginx.http.internal.generateWwwRedirects step0;
    expected = step1;
  };
  testTranslateServiceToRoutes = {
    expr = lib.clicks.nginx.http.internal.translateServiceToRoutes step1;
    expected = step2;
  };
  testTranslateRoutesDagToList = {
    expr = lib.clicks.nginx.http.internal.translateRoutesDagToList step2;
    expected = step3;
  };
  testUnwrapHeader = {
    expr = lib.clicks.nginx.http.internal.unwrapHeaders step3;
    expected = step4;
  };
  testTranslateRoutesToLocations = {
    expr = lib.clicks.nginx.http.internal.translateRoutesToLocations step4;
    expected = step5;
  };
  testSetLocationPriorities = {
    expr = lib.clicks.nginx.http.internal.setLocationPriorities step5;
    expected = step6;
  };
  testAddListenDefaults = {
    expr = lib.clicks.nginx.http.internal.addListenDefaults step6;
    expected = step7;
  };
}
