blob: 83e9780b01b0603067a065edc1ff8c2c89d1f18c [file] [log] [blame]
Tang Cheng32e32562015-07-08 17:08:03 +08001package swwebservice
2
3func dailTimeout(network, addr string) (net.Conn, error) {
4 default_timeout := time.Duration(theSession.DefaultTimeout) * time.Second
5 return net.DialTimeout(network, addr, default_timeout)
6}
7
8type WebSession struct {
9 AppId string
10 AppSecret string
11 BaseUrl string
12 DefaultTimeout int
13 session_key string
14}
15
16func (w *WebSession) DoGet(uri string, params map[string]string) (*http.Response, error) {
17 transport := http.Transport{Dial: dailTimeout}
18
19 client := http.Client{Transport: &transport}
20
21 full_url := w.BaseUrl + uri
22
23 vl := url.Values{}
24 vl.Add("app_id", w.AppId)
25 ts := w.GetTimestamp()
26 vl.Add("timestamp", ts)
27
28 if params != nil {
29 for k, v := range params {
30 vl.Add(k, v)
31 }
32 }
33 vl.Add("sign", w.Sign(ts, vl.Encode()))
34 full_url = full_url + "?" + vl.Encode()
35 return client.Get(full_url)
36}
37
38func (w *WebSession) GetTimestamp() string {
39 t := time.Now()
40 return fmt.Sprintf("%04d%02d%02d%02d%02d%02d", t.Year(), t.Month(), t.Day(),
41 t.Hour(), t.Minute(), t.Second())
42}
43
44func (w *WebSession) Sign(timestamp, query_string string) string {
45 return "122123123"
46}
47
48func (w *WebSession) DoPost(uri string, param map[string]string, json_data []byte) (*http.Response, error) {
49 transport := http.Transport{Dial: dailTimeout}
50 client := &http.Client{Transport: &transport}
51 vl := url.Values{}
52 vl.Add("app_id", w.AppId)
53 ts := w.GetTimestamp()
54 vl.Add("timestamp", ts)
55 vl.Add("sign", w.Sign(ts, vl.Encode()))
56 if param != nil {
57 for k, v := range param {
58 vl.Add(k, v)
59 }
60 }
61 if json_data != nil {
62 vl.Add("request_data", string(json_data))
63 }
64 full_url := w.BaseUrl + uri
65 log.Debugf("Url=%v", full_url)
66 r, err := client.Post(full_url, "application/x-www-form-urlencoded", bytes.NewReader([]byte(vl.Encode())))
67 if err != nil || r.StatusCode != 200 {
68 log.Errorf("Status=%v, err=%v", r, err)
69 }
70 return r, err
71}
72
73func (w *WebSession) Auth() error {
74 return nil
75}