Newer
Older
ai-team / system / redmine / driver.js
@楽曲作りまくりおじさん 楽曲作りまくりおじさん on 31 May 2024 2 KB first commit
import axios from 'axios';

export async function getProjects(params) {
    const redmineApiKey = params.REDMINE_API_KEY;
    const redmineUrl = params.REDMINE_URL;
    try {
        const url = `${redmineUrl}/projects.json`;
        console.log(`Fetching projects from ${url}`);
        const response = await axios.get(url, {
            headers: {
                'X-Redmine-API-Key': redmineApiKey,
                'Accept': 'application/json'
            }
        });
        return response.data.projects;
    } catch (error) {
        console.error(error);
    }
}

// statusを指定してチケットを取得する
export async function getTicketsByStatus(params, statusId) {
    const redmineApiKey = params.REDMINE_API_KEY;
    const redmineUrl = params.REDMINE_URL;
    const projectId = params.PROJECT_ID;
    try {
        const url = `${redmineUrl}/issues.json?project_id=${projectId}&status_id=${statusId}`;
        console.log(`Fetching tickets from ${url}`);
        const response = await axios.get(url, {
            headers: {
                'X-Redmine-API-Key': redmineApiKey,
                'Accept': 'application/json'
            }
        });
        return response.data.issues;
    } catch (error) {
        console.error(error);
    }
}

export async function getTickets(params) {
    const redmineApiKey = params.REDMINE_API_KEY;
    const redmineUrl = params.REDMINE_URL;
    const projectId = params.PROJECT_ID;
    try {
        const url = `${redmineUrl}/issues.json?project_id=${projectId}`;
        console.log(`Fetching tickets from ${url}`);
        const response = await axios.get(url, {
            headers: {
                'X-Redmine-API-Key': redmineApiKey,
                'Accept': 'application/json'
            }
        });
        return response.data.issues;
    } catch (error) {
        console.error(error);
    }
}

export async function addCommentToTicket(params, ticketId, comment) {
    const redmineApiKey = params.REDMINE_API_KEY;
    const redmineUrl = params.REDMINE_URL;
    try {
        const url = `${redmineUrl}/issues/${ticketId}.json`;
        console.log(`Adding comment to ticket at ${url}`);
        const response = await axios.put(url, {
            issue: {
                notes: comment,
                status_id: 3
            }
        }, {
            headers: {
                'X-Redmine-API-Key': redmineApiKey,
                'Content-Type': 'application/json'
            }
        });
        return response.data;
    } catch (error) {
        console.error(error);
    }
}