func ValidateIncomingRequest(host string, authToken string, req *http.Request) (err error) {
	err = req.ParseForm()
	if err != nil {
		return
	}
	err = validateIncomingRequest(host, authToken, req.URL.String(), req.PostForm, req.Header.Get("X-Twilio-Signature"))
	if err != nil {
		return
	}
	return
}
ValidateIncomingRequest returns an error if the incoming req could not be
validated as coming from Twilio.

This process is frequently error prone, especially if you are running behind
a proxy, or Twilio is making requests with a port in the URL.
See https://www.twilio.com/docs/security#validating-requests for more information
package twilio
import (
	"crypto/hmac"
	"crypto/sha1"
	"encoding/base64"
	"errors"
	"net/http"
	"net/url"
	"sort"
)