次の形式の URL があります。
https://clientjiberish:clientsecretjiberish@api.example.com/users?username=tralala
私がする時:
url = 'https://clientjiberish:clientsecretjiberish@api.example.com/users?username=tralala'
uri = URI(url)
必要なものはすべて手に入れました。
uri.host => "api.example.com"
uri.userinfo => "clientjiberish:clientsecretjiberish"
uri.path => '/users'
uri.scheme => 'https'
userinfo 部分にスラッシュが含まれていると、問題が発生します。API キーを提供する API を変更する権限がないため、URI の言及された部分を抽出する方法を見つける必要があります。
URI をテストできる例を次に示します。
url = 'https://clientjiberish:client/secretjiberish@api.example.com/users?username=tralala'
uri = URI(url)
エラー:
URI::InvalidURIError: URI が正しくありません (URI ではありませんか?)
次のように独自のパーサーを作成できることがわかりました。
parser = URI::Parser.new(:RESERVED => ";/?:@&=+$,\\[\\]")
uri = parser.parse(url)
しかし、それを機能させるには正規表現について十分に知りません。