resource "aws_apigatewayv2_api" "grpsd2-rdx-api" {
  name          = "dev-grps-rdx"
  protocol_type = "HTTP"

  tags = {
    "Business-Unit" = "GRPS"
    "Environment"   = "Dev"
    "Name"          = "dev-grps-rdx"
    "Owner"         = "Richard Mayer"
    "Project-Code"  = "2000-0497G"
    "Project-Name"  = "GRPS"
  }
}

resource "aws_apigatewayv2_vpc_link" "grpsd2-rdx-vpclink" {
  name               = "grpsd2-rdx-vpclink"
  security_group_ids = [aws_security_group.grpsd2-rdx-vpclink-sg.id]
  subnet_ids = [
    "subnet-05a08dd6751dfb4f3",
    "subnet-085ad4bf749412a9c",
  ]

  tags = {
    "Business-Unit" = "GRPS"
    "Environment"   = "Dev"
    "Name"          = "grpsd2-rdx-vpclink"
    "Owner"         = "Richard Mayer"
    "Project-Code"  = "2000-0497G"
    "Project-Name"  = "GRPS"
  }
}

resource "aws_apigatewayv2_integration" "grpsd2-rdx-integration" {
  api_id                 = aws_apigatewayv2_api.grpsd2-rdx-api.id
  connection_id          = aws_apigatewayv2_vpc_link.grpsd2-rdx-vpclink.id
  connection_type        = "VPC_LINK"
  integration_method     = "ANY"
  integration_type       = "HTTP_PROXY"
  integration_uri        = "arn:aws:elasticloadbalancing:eu-central-1:230315258045:listener/app/k8s-devgrpsr-devgrpsr-6bbb8e1d5c/a0d5995a2301533c/c750034aa22cef3b"
  payload_format_version = "1.0"

  tls_config {
    server_name_to_verify = "dev-grps-rdx.smecloudops.com"
  }
}

/* resource "aws_apigatewayv2_route" "grpsd2-rdx-route-root" {
  api_id    = aws_apigatewayv2_api.grpsd2-rdx-api.id
  route_key = "ANY /"
  target    = "integrations/${aws_apigatewayv2_integration.grpsd2-rdx-integration.id}"
}

resource "aws_apigatewayv2_route" "grpsd2-rdx-route-proxy" {
  api_id    = aws_apigatewayv2_api.grpsd2-rdx-api.id
  route_key = "ANY /{proxy+}"
  target    = "integrations/${aws_apigatewayv2_integration.grpsd2-rdx-integration.id}"
} */

resource "aws_apigatewayv2_stage" "grpsd2-rdx-stage" {
  # checkov:skip=CKV_AWS_76:Ensure API Gateway has Access Logging enabled
  api_id      = aws_apigatewayv2_api.grpsd2-rdx-api.id
  auto_deploy = true
  name        = "$default"

  default_route_settings {
    throttling_burst_limit = 0
    throttling_rate_limit  = 0
  }

  tags = {
    "Business-Unit" = "GRPS"
    "Environment"   = "Dev"
    "Name"          = "grpsd2-rdx-stage-default"
    "Owner"         = "Richard Mayer"
    "Project-Code"  = "2000-0497G"
    "Project-Name"  = "GRPS"
  }
}

resource "aws_apigatewayv2_domain_name" "grpsd2-rdx-domain" {
  domain_name = "dev-grps-rdx.smecloudops.com"

  domain_name_configuration {
    certificate_arn = "arn:aws:acm:eu-central-1:230315258045:certificate/0a71656f-80f0-47d6-ac31-e1a33741de1c"
    endpoint_type   = "REGIONAL"
    security_policy = "TLS_1_2"
  }

  tags = {
    "Business-Unit" = "GRPS"
    "Environment"   = "Dev"
    "Name"          = "dev-grps-rdx.smecloudops.com"
    "Owner"         = "Richard Mayer"
    "Project-Code"  = "2000-0497G"
    "Project-Name"  = "GRPS"
  }
}

resource "aws_apigatewayv2_api_mapping" "grpsd2-rdx-mapping" {
  api_id      = aws_apigatewayv2_api.grpsd2-rdx-api.id
  domain_name = aws_apigatewayv2_domain_name.grpsd2-rdx-domain.id
  stage       = aws_apigatewayv2_stage.grpsd2-rdx-stage.id
}
