code: func (m *Message) toMap(pToken, rToken string) map[string]string {
  	ret := map[string]string{
  		"token":    pToken,
  		"user":     rToken,
  		"message":  m.Message,
  		"priority": strconv.Itoa(m.Priority),
  	}
  
  	if m.Title != "" {
  		ret["title"] = m.Title
  	}
  
  	if m.URL != "" {
  		ret["url"] = m.URL
  	}
  
  	if m.URLTitle != "" {
  		ret["url_title"] = m.URLTitle
  	}
  
  	if m.Sound != "" {
  		ret["sound"] = m.Sound
  	}
  
  	if m.DeviceName != "" {
  		ret["device"] = m.DeviceName
  	}
  
  	if m.Timestamp != 0 {
  		ret["timestamp"] = strconv.FormatInt(m.Timestamp, 10)
  	}
  
  	if m.HTML {
  		ret["html"] = "1"
  	}
  
  	if m.Priority == PriorityEmergency {
  		ret["retry"] = strconv.FormatFloat(m.Retry.Seconds(), 'f', -1, 64)
  		ret["expire"] = strconv.FormatFloat(m.Expire.Seconds(), 'f', -1, 64)
  		if m.CallbackURL != "" {
  			ret["callback"] = m.CallbackURL
  		}
  	}
  
  	return ret
  }
docs: // Return a map filled with the relevant data.