Builder を使用して、WebService に送信される XML メッセージを作成しています。さまざまなメソッドごとに異なる xml が必要ですが、すべてのメソッドには、要求を開始するための一連の共通要素 (主にアカウント認証のもの) があります。DRYの方法でそれを行う方法はありますか? パスフレーズ変更リクエストを作成するための私のコードは次のとおりです。
# XML REQUEST SETUP
msg = Builder::XmlMarkup.new(:indent=>2)
query = {}
test_hsh = self.testmode ? {:Test => "YES"} : {}
# BUILD THE REQUEST
query[:changePassPhraseRequestXML] = msg.ChangePassPhraseRequest(test_hsh) do |asr|
asr.RequesterID APP_CONFIG[:endicia_partner_id].to_s
asr.RequestID "1"
asr.CertifiedIntermediary do |ci|
ci.AccountID APP_CONFIG[:endicia_account_number].to_s
ci.PassPhrase APP_CONFIG[:endicia_passphrase].to_s
end
asr.NewPassPhrase APP_CONFIG[:passphrase].to_s
end
基本的に、NewPassPhrase 以外のすべての要素は、すべての (またはほとんどの) 要求に共通です。現在、同じコードを何度もコピーしていますが、これはまったく好きではありません。
それを乾かすことについてのアイデアはありますか?