# By: Riasat Ullah
# Contributor: Md. Fahim Bin Amin
# This file contains the names of all the types of integrations that are available.
from taskcallrest import settings


amazon_cloud_watch = 'AMAZON_CLOUD_WATCH'
appbeat = 'APPBEAT'
app_dynamics = 'APP_DYNAMICS'
appoptics = 'APPOPTICS'
autotask = 'AUTOTASK'
aws_cloud_trail = 'AWS_CLOUD_TRAIL'
azure_ad_sso = 'AZURE_AD_SSO'
checkly = 'CHECKLY'
crowdstrike = 'CROWDSTRIKE'
custom_endpoint = 'CUSTOM_ENDPOINT'
custom_integration = 'CUSTOM_INTEGRATION'
datadog = 'DATADOG'
dynatrace = 'DYNATRACE'
elasticsearch_watcher = 'ELASTICSEARCH_WATCHER'
email = 'EMAIL'
errorception = 'ERRORCEPTION'
freshdesk = 'FRESHDESK'
freshservice = 'FRESHSERVICE'
github = 'GITHUB'
gitlab = 'GITLAB'
google_chat = 'GOOGLE_CHAT'
google_cloud_monitoring = 'GOOGLE_CLOUD_MONITORING'
google_sso = 'GOOGLE_SSO'
grafana = 'GRAFANA'
haloitsm = 'HALO'
honeycomb = 'HONEYCOMB'
icinga2 = 'ICINGA2'
instana = 'INSTANA'
jira_cloud = 'JIRA_CLOUD'
jira_server = 'JIRA_SERVER'
kibana_alerting = 'KIBANA_ALERTING'
logdna = 'LOGDNA'
loggly = 'LOGGLY'
logic_monitor = 'LOGIC_MONITOR'
logrocket = 'LOGROCKET'
manage_engine_op_manager = 'MANAGE_ENGINE_OP_MANAGER'
manage_engine_service_desk_plus = 'MANAGE_ENGINE_SERVICE_DESK_PLUS'
meraki = 'MERAKI'
microsoft_azure_alerts = 'MICROSOFT_AZURE_ALERTS'
microsoft_teams = 'MICROSOFT_TEAMS'
monday = 'MONDAY'
n_central = 'N_CENTRAL'
nagios = 'NAGIOS'
new_relic = 'NEW_RELIC'
observium = 'OBSERVIUM'
okta = 'OKTA'
orion = 'ORION'
pingdom = 'PINGDOM'
prometheus = 'PROMETHEUS'
prtg = 'PRTG'
rollbar = 'ROLLBAR'
rundeck = 'RUNDECK'
runscope = 'RUNSCOPE'
saml = 'SAML'
sentry = 'SENTRY'
servicenow = 'SERVICENOW'
site24x7 = 'SITE24X7'
slack = 'SLACK'
solarwinds_servicedesk = 'SOLARWINDS_SERVICE_DESK'
splunk = 'SPLUNK'
sumo_logic = 'SUMO_LOGIC'
sysdig = 'SYSDIG'
team_dynamix = 'TEAM_DYNAMIX'
uptime_robot = 'UPTIME_ROBOT'
webex = 'WEBEX'
zabbix = 'ZABBIX'
zendesk = 'ZENDESK'
zoom = 'ZOOM'


def get_integration_url(integ_type, integ_key):
    '''
    Get the URL for a particular integration given the type of the integration and integration key.
    :param integ_type: (str) integration type
    :param integ_key: (str) integration key
    :return: (str) url
    '''
    base_url = settings.INTEGRATIONS_API_BASE_URL
    change_event_ext = 'change-event'

    if integ_type in [amazon_cloud_watch, aws_cloud_trail]:
        return '/'.join([base_url, 'amazon', integ_key])
    elif integ_type == appbeat:
        return '/'.join([base_url, 'appbeat', integ_key])
    elif integ_type == appoptics:
        return '/'.join([base_url, 'appoptics', integ_key])
    elif integ_type == app_dynamics:
        return '/'.join([base_url, 'app-dynamics', integ_key])
    elif integ_type == autotask:
        return '/'.join([base_url, 'autotask', integ_key])
    elif integ_type == checkly:
        return '/'.join([base_url, 'checkly', integ_key])
    elif integ_type == custom_integration:
        return '/'.join([base_url, 'custom-integration', integ_key])
    elif integ_type == crowdstrike:
        return '/'.join([base_url, 'crowdstrike', integ_key])
    elif integ_type == datadog:
        return '/'.join([base_url, 'datadog', integ_key])
    elif integ_type == dynatrace:
        return '/'.join([base_url, 'dynatrace', integ_key])
    elif integ_type == elasticsearch_watcher:
        return '/'.join([base_url, 'elasticsearch-watcher', integ_key])
    elif integ_type == errorception:
        return '/'.join([base_url, 'errorception', integ_key])
    elif integ_type == freshdesk:
        return '/'.join([base_url, 'freshdesk', integ_key])
    elif integ_type == freshservice:
        return '/'.join([base_url, 'freshservice', integ_key])
    elif integ_type == github:
        return '/'.join([base_url, 'github', change_event_ext, integ_key])
    elif integ_type == gitlab:
        return '/'.join([base_url, 'gitlab', change_event_ext, integ_key])
    elif integ_type == google_cloud_monitoring:
        return '/'.join([base_url, 'google-cloud-monitoring', integ_key])
    elif integ_type == grafana:
        return '/'.join([base_url, 'grafana', integ_key])
    elif integ_type == haloitsm:
        return '/'.join([base_url, 'haloitsm', integ_key])
    elif integ_type == honeycomb:
        return '/'.join([base_url, 'honeycomb', integ_key])
    elif integ_type == icinga2:
        return '/'.join([base_url, 'icinga2', integ_key])
    elif integ_type == instana:
        return '/'.join([base_url, 'instana', integ_key])
    elif integ_type == jira_cloud:
        return '/'.join([base_url, 'jira-cloud', integ_key])
    elif integ_type == jira_server:
        return '/'.join([base_url, 'jira-server', integ_key])
    elif integ_type == kibana_alerting:
        return '/'.join([base_url, 'kibana-alerting', integ_key])
    elif integ_type == logdna:
        return '/'.join([base_url, 'logdna', integ_key])
    elif integ_type == loggly:
        return '/'.join([base_url, 'loggly', integ_key])
    elif integ_type == logic_monitor:
        return '/'.join([base_url, 'logic-monitor', integ_key])
    elif integ_type == logrocket:
        return '/'.join([base_url, 'logrocket', integ_key])
    elif integ_type == manage_engine_op_manager:
        return '/'.join([base_url, 'manage-engine', 'op-manager', integ_key])
    elif integ_type == manage_engine_service_desk_plus:
        return '/'.join([base_url, 'manage-engine', 'service-desk-plus', integ_key])
    elif integ_type == meraki:
        return '/'.join([base_url, 'meraki', integ_key])
    elif integ_type == microsoft_azure_alerts:
        return '/'.join([base_url, 'azure', integ_key])
    elif integ_type == monday:
        return '/'.join([base_url, 'monday', integ_key])
    elif integ_type == n_central:
        return '/'.join([base_url, 'n-central', integ_key])
    elif integ_type == nagios:
        return '/'.join([base_url, 'nagios', integ_key])
    elif integ_type == new_relic:
        return '/'.join([base_url, 'new-relic', integ_key])
    elif integ_type == observium:
        return '/'.join([base_url, 'observium', integ_key])
    elif integ_type == orion:
        return '/'.join([base_url, 'orion', integ_key])
    elif integ_type == pingdom:
        return '/'.join([base_url, 'pingdom', integ_key])
    elif integ_type == prometheus:
        return '/'.join([base_url, 'prometheus', integ_key])
    elif integ_type == prtg:
        return '/'.join([base_url, 'prtg', integ_key])
    elif integ_type == rollbar:
        return '/'.join([base_url, 'rollbar', integ_key])
    elif integ_type == rundeck:
        return '/'.join([base_url, 'rundeck', integ_key])
    elif integ_type == runscope:
        return '/'.join([base_url, 'runscope', integ_key])
    elif integ_type == servicenow:
        return '/'.join([base_url, 'servicenow', integ_key])
    elif integ_type == site24x7:
        return '/'.join([base_url, 'site24x7', integ_key])
    elif integ_type == solarwinds_servicedesk:
        return '/'.join([base_url, 'solarwinds-servicedesk', integ_key])
    elif integ_type == splunk:
        return '/'.join([base_url, 'splunk', integ_key])
    elif integ_type == sumo_logic:
        return '/'.join([base_url, 'sumo-logic', integ_key])
    elif integ_type == sysdig:
        return '/'.join([base_url, 'sysdig', integ_key])
    elif integ_type == team_dynamix:
        return '/'.join([base_url, 'teamdynamix', integ_key])
    elif integ_type == uptime_robot:
        return '/'.join([base_url, 'uptimerobot', integ_key])
    elif integ_type == zabbix:
        return '/'.join([base_url, 'zabbix', integ_key])
    elif integ_type == zendesk:
        return '/'.join([base_url, 'zendesk', integ_key])
    else:
        return None
