/// <summary>
    /// Helper method which makes the REST call for running the job.
    /// </summary>
    /// <param name="resourceGroup">Resource group.</param>
    /// <param name="resourceName">Resource name.</param>
    /// <param name="jobDefinitionName">Job definition name.</param>
    /// <param name="payload">Payload for the REST call.</param>
    /// <param name="trackJobUrl">Returns the url to track the job.</param>
    /// <param name="interval">Returns the ideal interval after
    /// which the job should be tracked.</param>
    public void RunJob(string resourceGroup, string resourceName, string jobDefinitionName, string payload, out string trackJobUrl, out string interval)
    {
        string url = DefaultServiceHelperUrls.GetRunJobUrl(Constants.FrontdoorUrl, subscriptionId, resourceGroup, resourceName, Constants.ResourceProviderName, jobDefinitionName);

        trackJobUrl = SubmitRequest(url, payload, Constants.POST);
        interval    = GetJobStatusInterval;
    }
    /// <summary>
    /// Helper method which makes the REST call for retrieving a job definition.
    /// </summary>
    /// <param name="jobDefinitionName">Job definition name.</param>
    /// <param name="resourceGroup">Resource group.</param>
    /// <param name="resourceName">Resource name.</param>
    /// <returns>Response.</returns>
    public string GetJobDefinition(string jobDefinitionName, string resourceGroup, string resourceName)
    {
        string url      = DefaultServiceHelperUrls.GetJobDefinitionUrl(Constants.FrontdoorUrl, subscriptionId, resourceGroup, resourceName, Constants.ResourceProviderName, jobDefinitionName);
        string response = SubmitRequest(url, string.Empty, Constants.GET);

        return(response);
    }
    /// <summary>
    /// Helper method which makes the REST call for retrieving public keys.
    /// </summary>
    /// <param name="jobDefinitionName">Job definition name.</param>
    /// <param name="resourceGroup">Resource group.</param>
    /// <param name="resourceName">Resource name.</param>
    /// <returns>Response.</returns>
    public string GetPublicKeys(string resourceGroup, string resourceName)
    {
        string url      = DefaultServiceHelperUrls.GetPublicKeysUrl(Constants.FrontdoorUrl, subscriptionId, resourceGroup, resourceName, Constants.ResourceProviderName);
        string response = string.Empty;
        int    cnt      = 1;

        do
        {
            Thread.Sleep(10 * 1000);
            response = SubmitRequest(url, string.Empty, Constants.GET);
            cnt++;
        }while (response.ToUpper().Contains("REQUEST FAILED.") && cnt <= 6);

        return(response);
    }
    /// <summary>
    /// Helper method which makes the REST call to create new Job definition
    /// </summary>
    /// <param name="resourceGroup">Resource group name</param>
    /// <param name="resourceName">Resource name</param>
    /// <param name="payload">Payload</param>
    /// <param name="jobDefinitionName">Job Definition name</param>
    /// <param name="message">Message</param>
    /// <returns></returns>
    public bool CreateJobDefinition(string resourceGroup, string resourceName, string payload, string jobDefinitionName, out string message)
    {
        string url = DefaultServiceHelperUrls.GetJobDefinitionUrl(Constants.FrontdoorUrl, subscriptionId, resourceGroup, resourceName, Constants.ResourceProviderName, jobDefinitionName);

        message = SubmitRequest(url, payload, Constants.PUT);

        if (message.ToUpper().Contains("REQUEST FAILED"))
        {
            return(false);
        }

        string getRequestUrl = message;

        return(GetDataRequestByUrl(getRequestUrl, out message));
    }