J'utilise Builder pour construire des messages XML envoyés à un WebService. Chacune des différentes méthodes nécessite un xml différent mais elles ont toutes un ensemble d'éléments communs pour démarrer la requête (principalement des éléments d'authentification de compte). Y a-t-il un moyen de le faire de manière DRY? Voici mon code pour la construction d'une demande de changement de mot de passe:Rails Builder :: XmlMarkup pour le service Web - Section répétitive
# 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
Fondamentalement, tous les éléments sauf l'NewPassPhrase un sont communs à toutes les demandes (ou la plupart). En ce moment, je copie le même code encore et encore, mais je n'aime pas du tout cela.
Des idées sur le séchage?