node.js で bitbucket-api を使用して BitBucket の特定のリポジトリにアクセスしようとしていますが、パスワードに変な文字 (丸括弧とスペース) が含まれています。有用なエラーをスローしたり、データを取得したりしません。
たまたま自分のパスワードが好きなので、変更したくありません。パスワードから丸括弧とスペースを削除すると問題が解決することを知っています。
私に何ができる?
node.js で bitbucket-api を使用して BitBucket の特定のリポジトリにアクセスしようとしていますが、パスワードに変な文字 (丸括弧とスペース) が含まれています。有用なエラーをスローしたり、データを取得したりしません。
たまたま自分のパスワードが好きなので、変更したくありません。パスワードから丸括弧とスペースを削除すると問題が解決することを知っています。
私に何ができる?
curl-transport.js の実装を十分に検索してステップインした後、この問題を回避する方法を見つけました。これは、curl-transport が に渡すものを理解することに依存していrequire('child_process').exec
ます。
基本的に、メカニズムは CURL の新しいプロセスを開始し、コマンド ライン引数を渡すことによって機能します。丸括弧を使用すると CURL が混乱し、スペースを使用するとコマンド ライン引数の解析が混乱します。したがって、これを回避するには、ユーザー名の最初の文字として二重引用符を追加し、パスワードの最後の文字として終了二重引用符を追加するだけです。したがって、2 つの文字列が連結されると (つまり、ユーザー名 + ":" + パスワード)、最終的な文字列は"USERNAME:PASSWORD"
、1 つの引数としてプロセスに渡されます。
私のノードコードは次のようになります。
var bitbucket = require('bitbucket-api');
var credentials = { username: '"USERNAME', password: 'PASSWORD With Spaces and ()s"' };
var client = bitbucket.createClient(credentials);
var repository = client.getRepository({ slug: 'repoName', owner: 'USERNAME' }, function (err, repo) {
//Code to access the repo object.
console.log(repo);
});
username の値の先頭に二重引用符が追加されていることに注意してください (これが裏技です)。明らかではないため、スペースを追加して以下で強調しました::
パスワードの値の末尾に二重引用符が追加されていることに注意してください (これが裏技です)。明らかではないため、スペースを追加して以下に強調しました。
呼び出しは成功し、リポジトリの詳細が返されます。
ところで、この修正は、Windows 8 の bitbucket-api の V0.0.6 で機能しました。
Windows では、CURL を検出できるように、パスに以下を忘れずに入れてください。あなたはこれを行うことができます[Win8: Windows-X]->System->Advanced System Settings->Advanced->System Variables->Path->Edit...
git のバイナリが CURL のパスにあることを確認します。
C:\Program Files (x86)\Git\bin
また、heroku で動作させようとしている場合は、C:\Heroku の下に Heroku ツールベルトを再インストールし (理由については他の記事を参照)、次をパスに追加して、パスの問題を回避する必要がある場合があります。
C:\Heroku\ruby-1.9.2\bin;C:\Heroku\bin;C:\Program Files (x86)\Git\bin