|
|
@@ -0,0 +1,44 @@ |
|
|
|
package captureas |
|
|
|
|
|
|
|
import ( |
|
|
|
"crypto/md5" |
|
|
|
"encoding/hex" |
|
|
|
"fmt" |
|
|
|
"io" |
|
|
|
"net/url" |
|
|
|
) |
|
|
|
|
|
|
|
type CaptureParams struct { |
|
|
|
URL string `field:"url"` |
|
|
|
Width int `field:"w"` |
|
|
|
Height int `field:"h"` |
|
|
|
} |
|
|
|
|
|
|
|
func (c *Client) Capture(cp *CaptureParams) string { |
|
|
|
u, err := url.Parse(c.Config.BaseURL) |
|
|
|
if err != nil { |
|
|
|
return "" |
|
|
|
} |
|
|
|
|
|
|
|
// Build query string |
|
|
|
q := u.Query() |
|
|
|
q.Add("url", cp.URL) |
|
|
|
if cp.Width > 0 { |
|
|
|
q.Add("w", fmt.Sprintf("%d", cp.Width)) |
|
|
|
} |
|
|
|
if cp.Height > 0 { |
|
|
|
q.Add("h", fmt.Sprintf("%d", cp.Height)) |
|
|
|
} |
|
|
|
u.RawQuery = q.Encode() |
|
|
|
|
|
|
|
// Calculate token |
|
|
|
h := md5.New() |
|
|
|
ue, _ := url.QueryUnescape(u.RawQuery) |
|
|
|
io.WriteString(h, "?"+ue) |
|
|
|
io.WriteString(h, c.Secret) |
|
|
|
token := hex.EncodeToString(h.Sum(nil)) |
|
|
|
|
|
|
|
u.Path = "/" + c.Username + "/" + token + "/png" |
|
|
|
|
|
|
|
return u.String() |
|
|
|
} |