What if one of these variables is not specified? I also wonder if we should make this a separate method called `service_url` for the sake of testability.