代码拉取完成,页面将自动刷新
同步操作将从 Rex/go-qq-openapi-v3 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//
//
//
package qqopenapi_v3
import (
"crypto/tls"
"errors"
"fmt"
"log"
"io/ioutil"
"net/url"
"net/http"
"strings"
. "github.com/ckrissun/go-simplejson"
)
type SNSNetwork struct {
_iplist *RandomString
_ipaddr string
_seceret string
_sig_name string
}
func NewSNSNetwork(iplist *RandomString, seceret, sig_name string) *SNSNetwork {
this := &SNSNetwork{}
if iplist != nil {
this._iplist = iplist
} else {
this._iplist = NewRandomString([]string{DEFAULT_QQ_OPENIP})
}
this._ipaddr = this._iplist.String()
this._seceret = seceret
this._sig_name = sig_name
return this
}
func (this *SNSNetwork) mk_send_data(method, url_path string, params url.Values) url.Values {
sig := hmac_sha1_sig(method, url_path, this._seceret, params)
params.Set(this._sig_name, sig)
return params
}
func (this *SNSNetwork) http_send(method, uri string, params url.Values) (*Json, error) {
var resp *http.Response
var err error
switch strings.ToLower(method) {
case "get":
if params != nil && params.Encode() != "" {
uri += "?" + params.Encode()
}
resp, err = http.Get(uri)
case "post":
resp, err = http.PostForm(uri, params)
default:
return nil, errors.New(fmt.Sprintf("method invalid: %s", method))
}
if err != nil {
log.Println(err)
return nil, err
}
defer resp.Body.Close()
var buf []byte
buf, err = ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
return nil, err
}
var js *Json
js, err = NewJson(buf)
if err != nil {
log.Println(err)
}
return js, err
}
func (this *SNSNetwork) https_send(method, uri string, params url.Values) (*Json, error) {
var resp *http.Response
var err error
//http://stackoverflow.com/questions/12122159/golang-how-to-do-a-https-request-with-bad-certificate
var tr = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
var client = &http.Client{Transport: tr}
switch strings.ToLower(method) {
case "get":
if params != nil && params.Encode() != "" {
uri += "?" + params.Encode()
}
resp, err = client.Get(uri)
case "post":
resp, err = client.PostForm(uri, params)
default:
return nil, errors.New(fmt.Sprintf("method invalid: %s", method))
}
if err != nil {
log.Println(err)
return nil, err
}
defer resp.Body.Close()
var buf []byte
buf, err = ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
return nil, err
}
var js *Json
js, err = NewJson(buf)
if err != nil {
log.Println(err)
}
return js, err
}
func (this *SNSNetwork) open(method, url_path, protocol string, params url.Values) (*Json, error) {
var ec_params = this.mk_send_data(method, url_path, params)
var uri = fmt.Sprintf("%s://%s%s", strings.ToLower(protocol), this._ipaddr, url_path)
var data *Json
var err error
switch strings.ToLower(protocol) {
case "http":
data, err = this.http_send(method, uri, ec_params)
case "https":
data, err = this.https_send(method, uri, ec_params)
default:
data, err = nil, errors.New(fmt.Sprintln("protocol invalid:", protocol))
log.Println(err)
}
return data, err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。