|
- 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()
- }
|