Add HMAC requests

Needs tests and some cleanup.
This was failing because `client.ad` returns a single ad rather than an ad list. Could this have been failing before my changes?