DRY up full URL generation

:convenience_store: 

This was being done in a few different places in an ad-hoc way, and one of those ways broke during a cookbook refactor.  This DRYs it all up in one place.