IEnumerator GetProjectPriorities(string credentials)
    {
        string          url     = Url + "/rest/api/2/priority";
        UnityWebRequest request = new UnityWebRequest(url, "GET");

        request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
        request.SetRequestHeader("Authorization", "Basic " + credentials);
        request.SetRequestHeader("Content-Type", "application/json");
        yield return(request.SendWebRequest());

        if (request.isNetworkError || request.isHttpError)
        {
            Debug.Log("Error: " + request.responseCode + " - " + request.downloadHandler.text);
        }
        else
        {
            string     json       = "{\"Items\":" + request.downloadHandler.text + "}";
            Priority[] priorities = JsonHelper.FromJson <Priority>(json);
            _IssuePriorities = new List <IssuePreference>();
            for (int i = 0; i < priorities.Length; i++)
            {
                IssuePreference preference = new IssuePreference();
                preference.name = priorities[i].name;
                preference.id   = priorities[i].id.ToString();
                _IssuePriorities.Add(preference);
            }
        }
    }
    public IEnumerator CreateIssue(string summary, string description, string credentials)
    {
        Issue issue = new Issue();

        issue.summary     = summary;
        issue.description = description;
        for (int i = 0; i < _IssueTypes.Count; i++)
        {
            if (_IssueTypes[i].name == IssueCategory)
            {
                EntryType entryType = new EntryType();
                entryType.id    = _IssueTypes[i].id;
                issue.issuetype = entryType;
                break;
            }
        }
        for (int i = 0; i < _IssuePriorities.Count; i++)
        {
            if (_IssuePriorities[i].name == IssuePriority)
            {
                IssuePreference preference = new IssuePreference();
                preference.id  = _IssuePriorities[i].id;
                issue.priority = preference;
                break;
            }
        }
        EntryKey entryKey = new EntryKey();

        entryKey.key  = ProjectKey;
        issue.project = entryKey;
        string json = "{\"fields\":" + JsonUtility.ToJson(issue).ToString() + "}";

        byte[]          bodyRaw = Encoding.UTF8.GetBytes(json);
        UnityWebRequest request = new UnityWebRequest(Url + "/rest/api/2/issue", "POST");

        request.uploadHandler   = (UploadHandler) new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
        request.SetRequestHeader("Authorization", "Basic " + credentials);
        request.SetRequestHeader("Content-Type", "application/json");
        yield return(request.SendWebRequest());

        if (request.isNetworkError || request.isHttpError)
        {
            Debug.Log("Error: " + request.responseCode + " - " + request.downloadHandler.text);
        }
        else
        {
            Debug.Log("Jira Issue created!");
            Entry  entry = JsonUtility.FromJson <Entry>(request.downloadHandler.text);
            string path  = "";
            // path = Path.Combine(Application.persistentDataPath, "output_log.txt");
#if (!UNITY_EDITOR && UNITY_STANDALONE_WIN)
            path = CombinePaths(Environment.GetEnvironmentVariable("AppData"), "..", "LocalLow", Application.companyName, Application.productName, "output_log.txt");
#endif
#if (UNITY_EDITOR && UNITY_EDITOR_WIN)
            path = CombinePaths(Environment.GetEnvironmentVariable("AppData"), "..", "Local", "Unity", "Editor", "Editor.log");
#endif
            if (File.Exists(path) && AttachOutputLog)
            {
                byte[]  logData = GetBytesFromFilePath(path);
                string  logName = "output_log.txt";
                WWWForm form    = new WWWForm();
                form.AddBinaryData("file", logData, logName);
                UnityWebRequest attachment = UnityWebRequest.Post(Url + "/rest/api/2/issue" + "/" + entry.key + "/attachments", form);
                attachment.SetRequestHeader("X-Atlassian-Token", "no-check");
                attachment.SetRequestHeader("Authorization", "Basic " + credentials);
                attachment.SendWebRequest();
                if (attachment.isNetworkError || attachment.isHttpError)
                {
                    Debug.Log("Error " + attachment.responseCode + " - " + attachment.downloadHandler.text);
                }
                else
                {
                    Debug.Log("Output Log attach completed!");
                }
            }
        }
    }