composerにはhttp://
ストリームラッパのコンテキストオプションを指定できる機能があるように見える。
マニュアル化されておらず、ソースを追っていくしかなくて分かりにくい。
必要なもの(follow_locationとかmax_redirectsとか)はcomposer側で勝手に付与してくれるので、普通は使う必要はない。
ヘッダーを追加したり、tlsのオプションを変更できるとすれば面白いかもしれない。
packageのtransport-options
パッケージ自体に対しては、transport-options
という属性名で指定できるっぽい。
{
"name": "vendor/package",
// ...
"transport-options": {
"https": {
"method": "POST",
"user_agent": "Mozilla/5.0"
}
}
}
repositoryのoptions
リポジトリに対しては、options
という属性名で指定できる。ただし、optionsがtransportOptionsの意味になるのはtype: composer
の場合だけだ。type: path
みたいに通信を必要としないrepositoryタイプもあるからね。
なお、このオプションはリポジトリ配下のパッケージダウンロード時に全て引き継がれる。パッケージ個別にtransport-optionsを指定していないかぎり、優先して使われるらしい。
例えばpackagist.jpに関して自己署名を許可してしかもpeerのチェックをしない、というデンジャラスな設定はこう書く。
{
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.jp",
"options": {
"ssl": {
"allow_self_signed": true,
"verify_peer": false
}
}
}
}
}