diff --git a/accessToken.go b/accessToken.go
new file mode 100644
index 0000000..ebcd2be
--- /dev/null
+++ b/accessToken.go
@@ -0,0 +1,100 @@
+//
+// {"access_token":"s0wf65p-KMzvYtH8qPu2qSX_EXLE2NaBgFHl7MZwedc7Kv_hdO0FG1QeUmBYJAGmQqJinPwFr67MRZwJee4rDnGVwhbuIfKs29N4ZJSXFP8fbAheuas08UuRe13UsdCtWSMcAFAGCW","expires_in":7200}
+//
+package main
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "time"
+)
+
+//SaveToPath : where the authtoken json file is stored
+const SaveToPath = "/tmp/wechat_hitxy_token"
+
+type authToken struct {
+ AccessToken string `json:"access_token"`
+ ExpireIn int64 `json:"expires_in"`
+ Time time.Time `json:"created_at"`
+}
+
+func main2() {
+ e, _ := renewAuthtoken()
+ t, _ := readTokenFromFile("/tmp/wechat_hitxy_token")
+ fmt.Println(isAuthTokenExpired(t), e)
+}
+
+func isAuthTokenExpired(t authToken) bool {
+ seconds := fmt.Sprintf("%ds", t.ExpireIn) //7200s
+ duration, _ := time.ParseDuration(seconds)
+ expire := t.Time.Add(duration)
+ return time.Now().After(expire)
+}
+
+func writeTokenToFile(body []byte, path string) {
+ log.Printf("writing authtoke to %s\r\n", path)
+ ioutil.WriteFile(path, body, 0600)
+}
+
+func readTokenFromFile(path string) (authToken, error) {
+ var m authToken
+ log.Printf("read authtoke from %s\r\n", path)
+ body, err := ioutil.ReadFile(path)
+ json.Unmarshal(body, &m)
+ return m, err
+}
+
+func renewAuthtoken() (authToken, error) {
+ //url := "http://vimeo.com/api/v2/brad/info.json"
+ url := "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx876e233fde456b7b&secret=4a91aa328569b10a9fb97adeb8b0af58"
+ var myClient = &http.Client{Timeout: 20 * time.Second}
+ r, err := myClient.Get(url)
+ if err != nil {
+ return authToken{}, err
+ }
+ defer r.Body.Close()
+
+ var t authToken
+ err = json.NewDecoder(r.Body).Decode(&t)
+
+ if err != nil {
+ return authToken{}, err
+ }
+
+ t.Time = time.Now()
+ b, _ := json.Marshal(&t)
+ writeTokenToFile(b, SaveToPath)
+ return t, nil
+}
+
+//debugged http response
+func dummy() {
+ var body []byte
+ var response *http.Response
+ var request *http.Request
+ url := "http://vimeo.com/api/v2/brad/info.json"
+
+ request, err := http.NewRequest("GET", url, nil)
+ if err == nil {
+ request.Header.Add("Content-Type", "application/json")
+ //debug(httputil.DumpRequestOut(request, true))
+ response, err = (&http.Client{}).Do(request)
+ }
+
+ if err == nil {
+ defer response.Body.Close()
+ //debug(httputil.DumpResponse(response, true))
+ body, err = ioutil.ReadAll(response.Body)
+ //json.NewDecoder(response.Body).Decode(m)
+ }
+
+ if err == nil {
+ writeTokenToFile(body, "/tmp/wechat_hitxy_token")
+ //m.Time = time.Now()
+ } else {
+ log.Fatalf("ERROR: %s", err)
+ }
+}
diff --git a/debug b/debug
new file mode 100755
index 0000000..7f3426e
Binary files /dev/null and b/debug differ
diff --git a/listen.go b/listen.go
deleted file mode 100644
index 76919ad..0000000
--- a/listen.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package main
-
-import (
- "fmt"
- "net/http"
- "net/url"
-)
-
-func handler(w http.ResponseWriter, r *http.Request) {
- fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
- rq := r.URL.RawQuery
- m, _ := url.ParseQuery(rq)
- for index, element := range m {
- fmt.Fprintf(w, "
%s => %s", index, element)
- }
- // fmt.Fprintf(w, m["k"][0]);
-}
-
-func wechat_auth_setup_handler(w http.ResponseWriter, r *http.Request) {
- rq := r.URL.RawQuery
- m, _ := url.ParseQuery(rq)
- fmt.Fprintf(w, m["echostr"][0])
-}
-
-func main() {
- http.HandleFunc("/", handler)
- http.HandleFunc("/api", wechat_auth_setup_handler)
- //http.ListenAndServe("127.0.0.1:65500", nil)
- http.ListenAndServe(":65500", nil)
-}
diff --git a/main.go b/main.go
index a3ebeeb..7e1b2e6 100644
--- a/main.go
+++ b/main.go
@@ -1,109 +1,42 @@
-//
-// {"access_token":"s0wf65p-KMzvYtH8qPu2qSX_EXLE2NaBgFHl7MZwedc7Kv_hdO0FG1QeUmBYJAGmQqJinPwFr67MRZwJee4rDnGVwhbuIfKs29N4ZJSXFP8fbAheuas08UuRe13UsdCtWSMcAFAGCW","expires_in":7200}
-//
package main
import (
- "encoding/json"
"fmt"
- "io/ioutil"
"log"
"net/http"
"net/http/httputil"
- "time"
+ "net/url"
)
-//SaveToPath : where the authtoken json file is stored
-const SaveToPath = "/tmp/wechat_hitxy_token"
-
-type authToken struct {
- AccessToken string `json:"access_token"`
- ExpireIn int64 `json:"expires_in"`
- Time time.Time `json:"created_at"`
-}
-
-func main2() {
- e, _ := renewAuthtoken()
- t, _ := readTokenFromFile("/tmp/wechat_hitxy_token")
- fmt.Println(isAuthTokenExpired(t), e)
-}
-
-func debug(data []byte, err error) {
- if err == nil {
- fmt.Printf("%s\n\n", data)
- } else {
- log.Fatalf("%s\n\n", err)
+func handler(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
+ rq := r.URL.RawQuery
+ m, _ := url.ParseQuery(rq)
+ for index, element := range m {
+ fmt.Fprintf(w, "
%s => %s", index, element)
}
+ fmt.Fprintf(w, m["k"][0])
+ logRequestDebug(httputil.DumpRequest(r, true))
}
-func isAuthTokenExpired(t authToken) bool {
- seconds := fmt.Sprintf("%ds", t.ExpireIn) //7200s
- duration, _ := time.ParseDuration(seconds)
- expire := t.Time.Add(duration)
- return time.Now().After(expire)
-}
-
-func writeTokenToFile(body []byte, path string) {
- log.Printf("writing authtoke to %s\r\n", path)
- ioutil.WriteFile(path, body, 0600)
+func apiV1Main(w http.ResponseWriter, r *http.Request) {
+ logRequestDebug(httputil.DumpRequest(r, true))
+ rq := r.URL.RawQuery
+ m, _ := url.ParseQuery(rq)
+ fmt.Fprintf(w, m["echostr"][0])
}
-func readTokenFromFile(path string) (authToken, error) {
- var m authToken
- log.Printf("read authtoke from %s\r\n", path)
- body, err := ioutil.ReadFile(path)
- json.Unmarshal(body, &m)
- return m, err
+func main() {
+ http.HandleFunc("/", handler)
+ http.HandleFunc("/api", apiV1Main)
+ //http.ListenAndServe("127.0.0.1:65500", nil)
+ http.ListenAndServe(":65500", nil)
}
-func renewAuthtoken() (authToken, error) {
- //url := "http://vimeo.com/api/v2/brad/info.json"
- url := "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx876e233fde456b7b&secret=4a91aa328569b10a9fb97adeb8b0af58"
- var myClient = &http.Client{Timeout: 20 * time.Second}
- r, err := myClient.Get(url)
- if err != nil {
- return authToken{}, err
- }
- defer r.Body.Close()
-
- var t authToken
- err = json.NewDecoder(r.Body).Decode(&t)
-
- if err != nil {
- return authToken{}, err
- }
-
- t.Time = time.Now()
- b, _ := json.Marshal(&t)
- writeTokenToFile(b, SaveToPath)
- return t, nil
-}
-
-//debugged http response
-func dummy() {
- var body []byte
- var response *http.Response
- var request *http.Request
- url := "http://vimeo.com/api/v2/brad/info.json"
-
- request, err := http.NewRequest("GET", url, nil)
+func logRequestDebug(data []byte, err error) {
if err == nil {
- request.Header.Add("Content-Type", "application/json")
- debug(httputil.DumpRequestOut(request, true))
- response, err = (&http.Client{}).Do(request)
- }
-
- if err == nil {
- defer response.Body.Close()
- debug(httputil.DumpResponse(response, true))
- body, err = ioutil.ReadAll(response.Body)
- //json.NewDecoder(response.Body).Decode(m)
- }
-
- if err == nil {
- writeTokenToFile(body, "/tmp/wechat_hitxy_token")
- //m.Time = time.Now()
+ fmt.Printf("%s\n\n", data)
} else {
- log.Fatalf("ERROR: %s", err)
+ log.Fatalf("%s\n\n", err)
}
}