import hudson.Util
import com.sonymusic.Utils

def call(Map args) {
    def params = Utils.validateParams('slackNotify', args, [
        channel: [type: String, required: true],
        message: [type: String, required: false],
        stepName: [type: String, required: false],
        color: [type: String, required: false]
    ])
    def message = params.message ?: getDefaultMessage(params.stepName)
    def color = params.color ?: getDefaultMessageColor()

    args['message'] = message
    if (color) {
        args['color'] = color
    }

    slackSend(args)
}

def getDefaultMessage(String stepName) {
    return "${env.JOB_NAME} - #${env.BUILD_NUMBER}${stepName ? ' (' + stepName + ')' : ''} ${currentBuild.currentResult} after ${Util.getTimeSpanString(System.currentTimeMillis() - currentBuild.startTimeInMillis)} (<${env.BUILD_URL}|Open>)"
}

def getDefaultMessageColor() {
    def resultToColorMapping = [
        'SUCCESS': 'good',
        'UNSTABLE': 'warning',
        'FAILURE': 'danger'
    ]
    return resultToColorMapping[currentBuild.currentResult]
}
