terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/snowflake/delphi/network-rules/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

provider "snowflake" {
  account_name = var.account
  role         = "PROD_ATLANTIS"
}

resource "snowflake_network_rule" "spotify_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "SPOTIFY_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "api.spotify.com",
    "i.scdn.co",
    "open.spotify.com",
    "accounts.spotify.com",
  ]
}

resource "snowflake_network_rule" "google_news_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "GOOGLE_NEWS_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "news.google.com",
    "gnews.io"
  ]
}

resource "snowflake_network_rule" "powerplatform_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "POWERPLATFORM_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "defaultf0aff3b791a54aaeaf71c63e1dda20.49.environment.api.powerplatform.com"
  ]
}

resource "snowflake_network_rule" "audiense_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "AUDIENSE_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "api.audiense.com"
  ]
}

resource "snowflake_network_rule" "google_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "GOOGLE_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "fonts.googleapis.com",
    "fonts.gstatic.com"
  ]
}

resource "snowflake_network_rule" "apple_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "APPLE_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "itunes.apple.com"
  ]
}

resource "snowflake_network_rule" "tiktok_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "TIKTOK_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "tiktok.com"
  ]
}

resource "snowflake_network_rule" "deezer_api" {
  database = var.database_name
  schema   = var.schema_name
  name     = "DEEZER_API"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = [
    "api.deezer.com"
  ]
}
