code: func (h *Handler) Handle(w http.ResponseWriter, r *http.Request) error {
  	blob, matched, err := api.ProcessRequestFirstMatchOf(r,
  		[][]string{
  			{"certificate"},
  			{"domain"},
  		})
  	if err != nil {
  		log.Warningf("invalid request: %v", err)
  		return err
  	}
  
  	flavor := blob["flavor"]
  	bf := bundler.Ubiquitous
  	if flavor != "" {
  		bf = bundler.BundleFlavor(flavor)
  	}
  	log.Infof("request for flavor %v", bf)
  
  	var result *bundler.Bundle
  	switch matched[0] {
  	case "domain":
  		bundle, err := h.bundler.BundleFromRemote(blob["domain"], blob["ip"], bf)
  		if err != nil {
  			log.Warningf("couldn't bundle from remote: %v", err)
  			return err
  		}
  		result = bundle
  	case "certificate":
  		bundle, err := h.bundler.BundleFromPEMorDER([]byte(blob["certificate"]), []byte(blob["private_key"]), bf, "")
  		if err != nil {
  			log.Warning("bad PEM certifcate or private key")
  			return err
  		}
  
  		serverName := blob["domain"]
  		ip := blob["ip"]
  
  		if serverName != "" {
  			err := bundle.Cert.VerifyHostname(serverName)
  			if err != nil {
  				return errors.Wrap(errors.CertificateError, errors.VerifyFailed, err)
  			}
  
  		}
  
  		if ip != "" {
  			err := bundle.Cert.VerifyHostname(ip)
  			if err != nil {
  				return errors.Wrap(errors.CertificateError, errors.VerifyFailed, err)
  			}
  		}
  
  		result = bundle
  	}
  	log.Info("wrote response")
  	return api.SendResponse(w, result)
  }
docs: // Handle implements an http.Handler interface for the bundle handler.