Использование Bitbucket REST Api v2 - невозможно указать проект при создании нового репозитория - PullRequest
0 голосов
/ 27 сентября 2018

Репозиторий создан, но не добавлен в проект, указанный в запросе.Я где-то читал, что это может быть потому, что я использую ключевое слово form в запросе, но я не уверен, как заставить его работать.

let event = {
reponame: "DWM_Test-3",
visibility: "private",
description: "This repo is created by DWM",
language: "php",
project: {"key": "DWMT"},
wiki: true,
issues: true,
username: "xyz"
};

Это моя функция

const createRepo = (access_token, event) => {
request({
    url: 'https://api.bitbucket.org/2.0/repositories/' + event.username + '/' + _.kebabCase(event.reponame),
    method: 'POST',
    headers: {'Authorization': 'Bearer ' + access_token, 'Content-Type': 'application/json'},
    form: {
        "scm": "git",
        "name": event.reponame,
        "is_private": event.visibility === 'private' ? true : false,
        "description": event.description,
        "language": event.language,
        "project": event.project,
        "has_issues": event.issues,
        "has_wiki": event.wiki,
        "fork_policy": "no_public_forks"

    }
}, function (err, res) {
    if (err) {
        console.log(err);
    }

    let json = JSON.parse(res.body);

    if (res.statusCode === 401) {
        console.log(json);
        return json;
        // reject(new Error(json.error.message));
    }

    if (res.statusCode === 400) {
        console.log(json);
        return json;
        // reject(new Error(json.error.message));
    }

    if (res.statusCode === 200) {
        console.log(chalk.green('You can view it here: ' + json.links.html.href + '\n'));

    }

});

};

1 Ответ

0 голосов
/ 01 октября 2018

Удалось это выяснить.

let data = {
    "scm": "git",
    "name": event.repoName,
    "is_private": event.visibility === 'private',
    "description": event.description,
    "language": event.language,
    "project": event.project,
    "has_issues": false,
    "has_wiki": true,
    "fork_policy": "no_public_forks"
};

    const createRepo = (access_token) => {
    request({
        url: 'https://api.bitbucket.org/2.0/repositories/' + event.owner + '/' + _.kebabCase(event.repoName),
        method: 'POST',
        headers: {'Authorization': 'Bearer ' + access_token, 'Content-Type': 'application/json'},
        // form : {
        //     "scm": "git",
        //     "name": event.reponame,
        //     "is_private": event.visibility === 'private' ? true : false,
        //     "description": event.description,
        //     "language": event.language,
        //     "project": event.project,
        //     "has_issues": event.issues,
        //     "has_wiki": event.wiki,
        //     "fork_policy": "no_public_forks"
        //
        // }
        body: JSON.stringify(data)
    }, function (err, res) {
        if (err) {
            callback(err);
        }

        let json = JSON.parse(res.body);

        if (res.statusCode === 401) {
            response.statusCode = 401;
            response.message = json;
            // console.log(json);
            callback(null, response)
            // reject(new Error(json.error.message));
        }

        if (res.statusCode === 400) {
            response.statusCode = 400;
            response.message = json;
            // console.log(json);
            callback(null, response)
            // reject(new Error(json.error.message));
        }

        if (res.statusCode === 200) {
            response.statusCode = 200;
            response.url = json.links.html.href;
            console.log(chalk.green('\n' + json.name + ' created sucessfully.'));
            console.log(chalk.green('You can view it here: ' + json.links.html.href + '\n'));
            callback(null, response)

        }

    });

};
...