class Fastlane::Actions::MailgunAction

def self.author

def self.author
  "thiagolioy"
end

def self.available_options

def self.available_options
  [
    # This is here just for while due to the transition, not needed anymore
    FastlaneCore::ConfigItem.new(key: :mailgun_sandbox_domain,
                                 env_name: "MAILGUN_SANDBOX_POSTMASTER",
                                 optional: true,
                                 description: "Mailgun sandbox domain postmaster for your mail. Please use postmaster instead"),
    # This is here just for while due to the transition, should use postmaster instead
    FastlaneCore::ConfigItem.new(key: :mailgun_sandbox_postmaster,
                                 env_name: "MAILGUN_SANDBOX_POSTMASTER",
                                 optional: true,
                                 description: "Mailgun sandbox domain postmaster for your mail. Please use postmaster instead"),
    # This is here just for while due to the transition, should use apikey instead
    FastlaneCore::ConfigItem.new(key: :mailgun_apikey,
                                 env_name: "MAILGUN_APIKEY",
                                 optional: true,
                                 description: "Mailgun apikey for your mail. Please use postmaster instead"),
    FastlaneCore::ConfigItem.new(key: :postmaster,
                                 env_name: "MAILGUN_SANDBOX_POSTMASTER",
                                 description: "Mailgun sandbox domain postmaster for your mail"),
    FastlaneCore::ConfigItem.new(key: :apikey,
                                 env_name: "MAILGUN_APIKEY",
                                 description: "Mailgun apikey for your mail"),
    FastlaneCore::ConfigItem.new(key: :to,
                                 env_name: "MAILGUN_TO",
                                 description: "Destination of your mail"),
    FastlaneCore::ConfigItem.new(key: :message,
                                 env_name: "MAILGUN_MESSAGE",
                                 description: "Message of your mail"),
    FastlaneCore::ConfigItem.new(key: :subject,
                                 env_name: "MAILGUN_SUBJECT",
                                 description: "Subject of your mail",
                                 optional: true,
                                 is_string: true,
                                 default_value: "fastlane build"),
    FastlaneCore::ConfigItem.new(key: :success,
                                env_name: "MAILGUN_SUCCESS",
                                description: "Was this build successful? (true/false)",
                                optional: true,
                                default_value: true,
                                is_string: false),
    FastlaneCore::ConfigItem.new(key: :app_link,
                                env_name: "MAILGUN_APP_LINK",
                                description: "App Release link",
                                optional: false,
                                is_string: true),
    FastlaneCore::ConfigItem.new(key: :ci_build_link,
                                env_name: "MAILGUN_CI_BUILD_LINK",
                                description: "CI Build Link",
                                optional: true,
                                is_string: true)
  ]
end

def self.description

def self.description
  "Send a success/error message to an email group"
end

def self.handle_params_transition(options)

def self.handle_params_transition(options)
  options[:postmaster] = options[:mailgun_sandbox_postmaster] if options[:mailgun_sandbox_postmaster]
  puts "\nUsing :mailgun_sandbox_postmaster is deprecated, please change to :postmaster".yellow
  options[:apikey] = options[:mailgun_apikey] if options[:mailgun_apikey]
  puts "\nUsing :mailgun_apikey is deprecated, please change to :apikey".yellow
end

def self.is_supported?(platform)

def self.is_supported?(platform)
  true
end

def self.mail_teplate(options)

def self.mail_teplate(options)
  hash = {
    author: Actions.git_author,
    last_commit: Actions.last_git_commit,
    message: options[:message],
    app_link: options[:app_link]
  }
  hash[:success] = options[:success] if options[:success]
  hash[:ci_build_link] = options[:success] if options[:ci_build_link]
  Fastlane::ErbTemplateHelper.render(
    Fastlane::ErbTemplateHelper.load("mailgun_html_template"),
    hash
  )
end

def self.mailgunit(options)

def self.mailgunit(options)
  sandbox_domain = options[:postmaster].split("@").last
  RestClient.post "https://api:#{options[:apikey]}@api.mailgun.net/v3/#{sandbox_domain}/messages",
                  from: "Mailgun Sandbox<#{options[:postmaster]}>",
                  to: "#{options[:to]}",
                  subject: options[:subject],
                  html: mail_teplate(options)
  mail_teplate(options)
end

def self.run(options)

def self.run(options)
  require 'rest_client'
  handle_params_transition(options)
  mailgunit(options)
end