data "aws_caller_identity" "current" {
}

data "aws_secretsmanager_secret" "gcm_api_key" {
  name = "${var.environment}/${var.service_name}/GCM_API_KEY"
}

data "aws_secretsmanager_secret_version" "gcm_api_key" {
  secret_id = data.aws_secretsmanager_secret.gcm_api_key.id
}

data "aws_secretsmanager_secret" "apns_private_key" {
  name = "${var.environment}/${var.service_name}/APNS_PRIVATE_KEY"
}

data "aws_secretsmanager_secret_version" "apns_private_key" {
  secret_id = data.aws_secretsmanager_secret.apns_private_key.id
}

data "aws_secretsmanager_secret" "apns_certificate" {
  name = "${var.environment}/${var.service_name}/APNS_CERTIFICATE"
}

data "aws_secretsmanager_secret_version" "apns_certificate" {
  secret_id = data.aws_secretsmanager_secret.apns_certificate.id
}

data "aws_iam_role" "sns_platform_application_delivery_status_log_role" {
  name = "${var.environment}-sns-platform-application-delivery-status-log-role"
}

resource "aws_sns_platform_application" "gcm_application" {
  count                        = var.platform_type == "GCM" ? 1 : 0
  name                         = "${var.environment}-${var.service_name}"
  platform                     = var.platform_type
  platform_credential          = data.aws_secretsmanager_secret_version.gcm_api_key.secret_string
  failure_feedback_role_arn    = data.aws_iam_role.sns_platform_application_delivery_status_log_role.arn
  success_feedback_role_arn    = data.aws_iam_role.sns_platform_application_delivery_status_log_role.arn
  success_feedback_sample_rate = var.success_feedback_sample_rate
}

resource "aws_sns_platform_application" "apns_application" {
  count                        = var.platform_type == "APNS" ? 1 : 0
  name                         = "${var.environment}-${var.service_name}"
  platform                     = var.platform_type
  platform_credential          = data.aws_secretsmanager_secret_version.apns_private_key.secret_string
  platform_principal           = data.aws_secretsmanager_secret_version.apns_certificate.secret_string
  failure_feedback_role_arn    = data.aws_iam_role.sns_platform_application_delivery_status_log_role.arn
  success_feedback_role_arn    = data.aws_iam_role.sns_platform_application_delivery_status_log_role.arn
  success_feedback_sample_rate = var.success_feedback_sample_rate
}
