浏览代码

get lead from cookie

using variable to idenfity cookie name.

create cookie based on lead id.
master
Patrick Peng Sun 8 年前
父节点
当前提交
91d80cb2a0
共有 1 个文件被更改,包括 44 次插入7 次删除
  1. +44
    -7
      crmpixel.go

+ 44
- 7
crmpixel.go 查看文件

@@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"math/rand"
"net/http"
"net/url"
@@ -13,6 +14,8 @@ import (
"time"
)

var cookLeadID = "biukop_cl"

func crmpixelImage() (pixel []byte, err error) {
b64pixel := "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QcIBzEJ3JY/6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAADUlEQVQI12NgYGBgAAAABQABXvMqOgAAAABJRU5ErkJggg=="
pixel, err = base64.StdEncoding.DecodeString(b64pixel)
@@ -33,7 +36,7 @@ func crmpixel(w http.ResponseWriter, r *http.Request) {
}

func crmpixelCookie(r *http.Request) (ret http.Cookie) {
cookie, leadok := r.Cookie("biukop_cl") //crm lead
cookie, leadok := r.Cookie(cookLeadID) //crm lead

if leadok != nil {
ret, _ = createNewCookie(r)
@@ -53,11 +56,37 @@ func crmpixelCookie(r *http.Request) (ret http.Cookie) {
return
}

func getLeadIDFromCookie(r *http.Request) (leadID string, ok bool) {
ok = false
cookie, leadok := r.Cookie(cookLeadID) //crm lead
if leadok != nil {
return
}
valid := isValidCookieBiukopCL(cookie.Value)
if !valid {
return
}

//correctly split string
s := strings.Split(cookie.Value, "|")
if len(s) != 4 || s[0] == "" {
return
}
ok = true
leadID = s[0]
return
}

func createNewCookie(r *http.Request) (ret http.Cookie, info crmdLead) {
expiration := time.Now().Add(10 * 365 * 24 * time.Hour)
info = crmCreateNewAnonymousLeadByHTTPRequest(r)
cookieValue := buildBiukopCLValue(info.ID)
ret = http.Cookie{Name: "biukop_cl", Value: cookieValue, Expires: expiration}
ret = createNewCookieByLeadID(info.ID)
return
}

func createNewCookieByLeadID(leadID string) (ret http.Cookie) {
expiration := time.Now().Add(10 * 365 * 24 * time.Hour)
cookieValue := buildBiukopCLValue(leadID)
ret = http.Cookie{Name: cookLeadID, Value: cookieValue, Expires: expiration}
return
}

@@ -155,12 +184,20 @@ func crmpixelLead(id string) (info crmdLead, err error) {
//
func setTrackingCookieAndRecirect(w http.ResponseWriter, r *http.Request) {

cookie := crmpixelCookie(r)
http.SetCookie(w, &cookie)

rq := r.URL.RawQuery
m, _ := url.ParseQuery(rq)

//set cookie if any
leadID, ok := m["lid"]
if ok {
log.Println("setlead cookie :" + leadID[0])
cookie := createNewCookieByLeadID(leadID[0])
http.SetCookie(w, &cookie)
} else {
cookie := crmpixelCookie(r)
http.SetCookie(w, &cookie)
}

url, ok := m["url"]
if ok {
http.Redirect(w, r, url[0], 307) //302 temp redirect

正在加载...
取消
保存