2017-09-17 17 views
0

私が書いているコマンドラインアプリケーションからリポジトリを作成しようとしています。私はnode.jsを使ってBitbucket 2.0 APIへのポストリクエストを送信していますが、リポジトリの作成に成功したにもかかわらず、リポジトリを作成する設定を尊重しているようには見えません(例:is_private = true、has_wiki = true 、言語= PHP)。私は何が間違っているのか分かりません。私の推測では、私は体のフォーマットをしているのですか?Bitbucket 2.0 apiとnode.jsでリポジトリを作成

 var dataString = '{"has_wiki": true, "is_private": true}'; 

     request({ 
      url: 'https://api.bitbucket.org/2.0/repositories/' + username + '/' + _.kebabCase(answers.reponame), 
      method: 'POST', 
      headers: {'Authorization': 'Bearer ' + prefs.ginit.token}, 
      body: dataString 
     }, function (err, res) { 
      status.stop(); 

      if (err) { 
       console.log(err); 
       reject(new Error('Couldn\'t create remote repo.')); 
      } 

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

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

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

       resolve(json); 
      } 

     }); 

APIドキュメントはhereを以下のとおりです。以下は、私が使用していたコードです。誰でも手伝うことができますか?前もって感謝します!

+0

あなたは 'var dataString = {has_wiki:true、is_private:true};を試したことがありますか? –

+0

私に戻ってくれてありがとう。あなたの提案に合格しようとすると、リポジトリは正常に作成されますが、再び渡​​された値を尊重しません:( – 5k313t0r

答えて

0

this questionに基づいて回答が見つかりました。リポジトリの設定を少しずつ渡す必要がありました。体の代わりにフォームキーを使用します。

request({ 
    url: 'https://api.bitbucket.org/2.0/repositories/' + username + '/' + _.kebabCase(answers.reponame), 
    method: 'POST', 
    headers: {'Authorization': 'Bearer ' + prefs.ginit.token}, 
    form: { 
     "scm": "git", 
     "name": answers.reponame, 
     "is_private": answers.visibility === 'private' ? true : false, 
     "description": answers.description, 
     "language": answers.language, 
    } 
}, function (err, res) { 
    status.stop(); 

    if (err) { 
     console.log(err); 
     reject(new Error('Couldn\'t create remote repo.')); 
    } 

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

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

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

     resolve(json); 
    } 

}); 
関連する問題