simplify http request route
This commit is contained in:
parent
b90685e2f8
commit
901b09e8f1
BIN
APIServer.exe
BIN
APIServer.exe
Binary file not shown.
93
APIServer.go
93
APIServer.go
@ -182,8 +182,6 @@ func startSvc() {
|
||||
http.HandleFunc("/fileinfo/", handleFileInfo)
|
||||
http.HandleFunc("/setuutinfo/", handleSetUutInfo)
|
||||
http.HandleFunc("/getuutinfo/", handleGetUutInfo)
|
||||
http.HandleFunc("/getdefectinfo/", handleGetDefectInfo)
|
||||
http.HandleFunc("/getofflineinfo/", handleGetOfflineInfo)
|
||||
logger.Printf("[MSG] Starting HTTP Server On Port: %s\r\n", cfg.Settings.ListenPort)
|
||||
err := http.ListenAndServe(":"+cfg.Settings.ListenPort, nil)
|
||||
if err != nil {
|
||||
@ -399,84 +397,29 @@ func handleGetUutInfo(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
params := make(map[string]string, 0)
|
||||
if len(r.Form) > 0 {
|
||||
for k, v := range r.Form {
|
||||
params[strings.ToUpper(strings.TrimSpace(k))] = strings.TrimSpace(v[0])
|
||||
}
|
||||
params, err := parseReqParams(r)
|
||||
if err != nil {
|
||||
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", r.RemoteAddr, r.RequestURI, params, rst["ErrMsg"])
|
||||
rst["RESULT"] = "NG"
|
||||
rst["ErrMsg"] = err.Error()
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Fprintf(w, "%v", strings.ReplaceAll(fmt.Sprintf("%#v", rst), "map[string]string", ""))
|
||||
return
|
||||
}
|
||||
|
||||
ews := new(ews.EWS)
|
||||
|
||||
switch params["ACTION"] {
|
||||
case "QueryByFilter":
|
||||
rst = ews.GetUutInfo(cfg, logger, host, addr, uri, params)
|
||||
case "GetDefectReport":
|
||||
rst = ews.GetDefectReport(cfg, logger, host, addr, uri, params)
|
||||
case "GetOfflineReport":
|
||||
rst = ews.GetOfflineReport(cfg, logger, host, addr, uri, params)
|
||||
default:
|
||||
rst = ews.GetUutInfo(cfg, logger, host, addr, uri, params)
|
||||
if rst["RESULT"] != "OK" {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
} else {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
fmt.Fprintf(w, "%v", rst["ErrMsg"])
|
||||
}
|
||||
|
||||
func handleGetDefectInfo(w http.ResponseWriter, r *http.Request) {
|
||||
defer r.Body.Close()
|
||||
if r.RequestURI == "/favicon.ico" {
|
||||
return
|
||||
}
|
||||
host := strings.Split(r.Host, ":")[0]
|
||||
addr := strings.Split(r.RemoteAddr, ":")[0]
|
||||
uri := r.RequestURI
|
||||
rst := map[string]string{"RESULT": ""}
|
||||
|
||||
if err := r.ParseForm(); err != nil {
|
||||
logger.Printf("[ERR] %s; %s; %s\r\n", r.RemoteAddr, r.RequestURI, err.Error())
|
||||
rst["RESULT"] = "NG"
|
||||
rst["ErrMsg"] = err.Error()
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintf(w, "%v", strings.ReplaceAll(fmt.Sprintf("%#v", rst), "map[string]string", ""))
|
||||
return
|
||||
}
|
||||
|
||||
params := make(map[string]string, 0)
|
||||
if len(r.Form) > 0 {
|
||||
for k, v := range r.Form {
|
||||
params[strings.ToUpper(strings.TrimSpace(k))] = strings.TrimSpace(v[0])
|
||||
}
|
||||
}
|
||||
ews := new(ews.EWS)
|
||||
rst = ews.GetDefectUuts(cfg, logger, host, addr, uri, params)
|
||||
if rst["RESULT"] != "OK" {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
} else {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
fmt.Fprintf(w, "%v", rst["ErrMsg"])
|
||||
}
|
||||
|
||||
func handleGetOfflineInfo(w http.ResponseWriter, r *http.Request) {
|
||||
defer r.Body.Close()
|
||||
if r.RequestURI == "/favicon.ico" {
|
||||
return
|
||||
}
|
||||
host := strings.Split(r.Host, ":")[0]
|
||||
addr := strings.Split(r.RemoteAddr, ":")[0]
|
||||
uri := r.RequestURI
|
||||
rst := map[string]string{"RESULT": ""}
|
||||
|
||||
if err := r.ParseForm(); err != nil {
|
||||
logger.Printf("[ERR] %s; %s; %s\r\n", r.RemoteAddr, r.RequestURI, err.Error())
|
||||
rst["RESULT"] = "NG"
|
||||
rst["ErrMsg"] = err.Error()
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintf(w, "%v", strings.ReplaceAll(fmt.Sprintf("%#v", rst), "map[string]string", ""))
|
||||
return
|
||||
}
|
||||
|
||||
params := make(map[string]string, 0)
|
||||
if len(r.Form) > 0 {
|
||||
for k, v := range r.Form {
|
||||
params[strings.ToUpper(strings.TrimSpace(k))] = strings.TrimSpace(v[0])
|
||||
}
|
||||
}
|
||||
ews := new(ews.EWS)
|
||||
rst = ews.GetOfflineUuts(cfg, logger, host, addr, uri, params)
|
||||
if rst["RESULT"] != "OK" {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
} else {
|
||||
|
39
Index.html
39
Index.html
@ -6,7 +6,7 @@
|
||||
<title>API Server</title>
|
||||
<style type="text/css">
|
||||
form {margin: 0px; display: inline;}
|
||||
ul,li {margin: 0px; padding: 0px; list-style-type: none;}
|
||||
ul,li {margin: 0px; padding: 0px; list-style-type: none;display: inline;}
|
||||
label {font-family: Consolas; font-size: 16px;}
|
||||
input {width: 200px; height: 20px; font-family: monospace; font-size: 14px;}
|
||||
select {width: 150px; height: 25px; font-size: 14px;}
|
||||
@ -22,24 +22,31 @@
|
||||
</head>
|
||||
<body leftmargin="10px" >
|
||||
<h4>机台测试记录查询</h4>
|
||||
|
||||
<form name="getdefectinfo" action="/getdefectinfo/" method="POST" target="result">
|
||||
<input type="submit" name="Query" value="实时异常报表" style="width:120px; height:25px;">
|
||||
</form>
|
||||
|
||||
<form name="getofflineinfo" action="/getofflineinfo/" method="POST" target="result">
|
||||
<input type="submit" name="Query" value="实时离线报表" style="width:120px; height:25px;">
|
||||
</form>
|
||||
<br/><br/>
|
||||
|
||||
<form name="getuutinfo" action="/getuutinfo/" method="POST" target="result">
|
||||
<ul>
|
||||
<li>
|
||||
<label>USN: </label>
|
||||
<input type="text" name="USN" id="USN" />
|
||||
|
||||
<input type="submit" name="Query" value="Query" style="width:75px; height:25px;" />
|
||||
<!--input type="submit" style="width:75px; height:25px;" /-->
|
||||
<!--label for="ACTION">查询类型: </label> -->
|
||||
<select name="ACTION" id="ACTION">
|
||||
<!--option value="" selected="true">* 选择查询类型 *</option-->
|
||||
<option value="QueryByFilter" selected="true">条件查询</option>
|
||||
<option value="GetDefectReport">实时异常报表</option>
|
||||
<option value="GetOfflineReport">实时离线报表</option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<!--label for="KEY">查询条件: </label> -->
|
||||
<select name="KEY" id="KEY">
|
||||
<!--option value="" selected="true">* 选择查询条件 *</option-->
|
||||
<option value="USN" selected="true">By SN</option>
|
||||
<option value="MO">By MO</option>
|
||||
<option value="SKU">By SKU</option>
|
||||
<option value="LINE">By Line</option>
|
||||
</select>
|
||||
<input type="text" name="VALUE" id="VALUE" />
|
||||
</li>
|
||||
<li>
|
||||
<input type="reset" value="Reset" style="width:100px; height:25px;" />
|
||||
<input type="submit" value="Query" style="width:100px; height:25px;" />
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
|
186
ews/ews.go
186
ews/ews.go
@ -275,7 +275,7 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
|
||||
}
|
||||
|
||||
rst := map[string]string{"RESULT": ""}
|
||||
if params["USN"] == "" {
|
||||
if params["KEY"] == "" || params["VALUE"] == "" {
|
||||
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, "Invalid Parameters !")
|
||||
rst["RESULT"] = "NG"
|
||||
rst["ErrMsg"] = e.SimpleMsgHTML("red", "Invalid Parameters !")
|
||||
@ -305,7 +305,7 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
|
||||
return rst
|
||||
}
|
||||
|
||||
ui := new(UutInfo)
|
||||
ul := new(UutInfo)
|
||||
partNO := ""
|
||||
mfgMO := ""
|
||||
mfgSKU := ""
|
||||
@ -314,107 +314,135 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
|
||||
|
||||
//Get Last Record
|
||||
last := ""
|
||||
row := dbo.QueryRow(
|
||||
curr, err := dbo.Query(
|
||||
fmt.Sprintf(`SELECT usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change,last_transfer
|
||||
FROM uutinfo
|
||||
WHERE usn='%s';`, params["USN"]))
|
||||
WHERE %s='%s'
|
||||
ORDER BY usn ASC, seqid ASC;`, params["KEY"], params["VALUE"]))
|
||||
|
||||
err = row.Scan(
|
||||
&ui.USN,
|
||||
&ui.MAC,
|
||||
&ui.IPAddr,
|
||||
&ui.Relay,
|
||||
&ui.Item,
|
||||
&ui.Status,
|
||||
&ui.Message,
|
||||
&ui.PartNO,
|
||||
&ui.MfgMO,
|
||||
&ui.MfgSKU,
|
||||
&ui.MfgLine,
|
||||
&ui.MfgStage,
|
||||
&ui.FirstAck,
|
||||
&ui.LastAck,
|
||||
&ui.LastChg,
|
||||
&ui.LastTrn,
|
||||
if err != nil {
|
||||
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error())
|
||||
rst["RESULT"] = "NG"
|
||||
rst["ErrMsg"] = e.SimpleMsgHTML("red", err.Error())
|
||||
return rst
|
||||
}
|
||||
defer curr.Close()
|
||||
|
||||
for curr.Next() {
|
||||
err := curr.Scan(
|
||||
&ul.USN,
|
||||
&ul.MAC,
|
||||
&ul.IPAddr,
|
||||
&ul.Relay,
|
||||
&ul.Item,
|
||||
&ul.Status,
|
||||
&ul.Message,
|
||||
&ul.PartNO,
|
||||
&ul.MfgMO,
|
||||
&ul.MfgSKU,
|
||||
&ul.MfgLine,
|
||||
&ul.MfgStage,
|
||||
&ul.FirstAck,
|
||||
&ul.LastAck,
|
||||
&ul.LastChg,
|
||||
&ul.LastTrn,
|
||||
)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
last = last + fmt.Sprintf(`<tr>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
</tr>%s`, ul.USN, ul.MAC, ul.IPAddr, ul.Relay, ul.Item, ul.Status, ul.Message, ul.LastChg, "\r\n")
|
||||
|
||||
if err == nil {
|
||||
last = fmt.Sprintf(`<tr>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
<td style="color: blue;">%s</td>
|
||||
</tr>`,
|
||||
ui.USN, ui.MAC, ui.IPAddr, ui.Relay, ui.Item, ui.Status, ui.Message, ui.LastChg)
|
||||
partNO = ui.PartNO
|
||||
mfgMO = ui.MfgMO
|
||||
mfgSKU = ui.MfgSKU
|
||||
fstAck = ui.FirstAck
|
||||
lstAck = ui.LastAck
|
||||
if ul.PartNO != "" {
|
||||
partNO = ul.PartNO
|
||||
}
|
||||
if ul.MfgMO != "" {
|
||||
mfgMO = ul.MfgMO
|
||||
}
|
||||
if ul.MfgSKU != "" {
|
||||
mfgSKU = ul.MfgSKU
|
||||
}
|
||||
if ul.FirstAck != "" {
|
||||
fstAck = ul.FirstAck
|
||||
}
|
||||
if ul.LastAck != "" {
|
||||
lstAck = ul.LastAck
|
||||
}
|
||||
}
|
||||
|
||||
//Get Location Information
|
||||
loc, locTime := "", ""
|
||||
if last != "" {
|
||||
qry := dbo.QueryRow(fmt.Sprintf(`SELECT CONCAT_WS('-',line,col,row,num) AS loc, update_time FROM locinfo WHERE mac='%s'`, ui.MAC))
|
||||
qry := dbo.QueryRow(fmt.Sprintf(`SELECT CONCAT_WS('-',line,col,row,num) AS loc, update_time FROM locinfo WHERE mac='%s'`, ul.MAC))
|
||||
qry.Scan(&loc, &locTime)
|
||||
}
|
||||
|
||||
//Get History Records
|
||||
uh := new(UutInfo)
|
||||
bkup := ""
|
||||
rows, err := dbo.Query(
|
||||
prev, err := dbo.Query(
|
||||
fmt.Sprintf(`SELECT usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change,last_transfer
|
||||
FROM uutinfobkup
|
||||
WHERE usn='%s' ORDER BY seqid ASC;`, params["USN"]))
|
||||
if err == nil {
|
||||
for rows.Next() {
|
||||
err := rows.Scan(
|
||||
&ui.USN,
|
||||
&ui.MAC,
|
||||
&ui.IPAddr,
|
||||
&ui.Relay,
|
||||
&ui.Item,
|
||||
&ui.Status,
|
||||
&ui.Message,
|
||||
&ui.PartNO,
|
||||
&ui.MfgMO,
|
||||
&ui.MfgSKU,
|
||||
&ui.MfgLine,
|
||||
&ui.MfgStage,
|
||||
&ui.FirstAck,
|
||||
&ui.LastAck,
|
||||
&ui.LastChg,
|
||||
&ui.LastTrn,
|
||||
WHERE %s='%s'
|
||||
ORDER BY usn ASC, seqid ASC;`, params["KEY"], params["VALUE"]))
|
||||
|
||||
if err != nil {
|
||||
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error())
|
||||
rst["RESULT"] = "NG"
|
||||
rst["ErrMsg"] = e.SimpleMsgHTML("red", err.Error())
|
||||
return rst
|
||||
}
|
||||
defer prev.Close()
|
||||
|
||||
for prev.Next() {
|
||||
err := prev.Scan(
|
||||
&uh.USN,
|
||||
&uh.MAC,
|
||||
&uh.IPAddr,
|
||||
&uh.Relay,
|
||||
&uh.Item,
|
||||
&uh.Status,
|
||||
&uh.Message,
|
||||
&uh.PartNO,
|
||||
&uh.MfgMO,
|
||||
&uh.MfgSKU,
|
||||
&uh.MfgLine,
|
||||
&uh.MfgStage,
|
||||
&uh.FirstAck,
|
||||
&uh.LastAck,
|
||||
&uh.LastChg,
|
||||
&uh.LastTrn,
|
||||
)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
temp := fmt.Sprintf(`<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`,
|
||||
ui.USN, ui.MAC, ui.IPAddr, ui.Relay, ui.Item, ui.Status, ui.Message, ui.LastChg, "\r\n")
|
||||
bkup = bkup + temp
|
||||
bkup = bkup + fmt.Sprintf(`<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`,
|
||||
uh.USN, uh.MAC, uh.IPAddr, uh.Relay, uh.Item, uh.Status, uh.Message, uh.LastChg, "\r\n")
|
||||
}
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
//Get Misc. Info
|
||||
if partNO == "" {
|
||||
partNO = ui.PartNO
|
||||
partNO = uh.PartNO
|
||||
}
|
||||
if mfgMO == "" {
|
||||
mfgMO = ui.MfgMO
|
||||
mfgMO = uh.MfgMO
|
||||
}
|
||||
if mfgSKU == "" {
|
||||
mfgSKU = ui.MfgSKU
|
||||
mfgSKU = uh.MfgSKU
|
||||
}
|
||||
if fstAck == "" {
|
||||
fstAck = ui.FirstAck
|
||||
fstAck = uh.FirstAck
|
||||
}
|
||||
if lstAck == "" {
|
||||
lstAck = ui.LastAck
|
||||
lstAck = uh.LastAck
|
||||
}
|
||||
|
||||
misc := ""
|
||||
@ -429,7 +457,7 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
|
||||
return rst
|
||||
}
|
||||
|
||||
func (e *EWS) GetDefectUuts(cfg cnf.Cfg, logger *log.Logger, host string, addr string, uri string, params map[string]string) map[string]string {
|
||||
func (e *EWS) GetDefectReport(cfg cnf.Cfg, logger *log.Logger, host string, addr string, uri string, params map[string]string) map[string]string {
|
||||
if cfg.Settings.LogRequest {
|
||||
logger.Printf("[MSG] %s; %s; Request: %#v\r\n", addr, uri, params)
|
||||
}
|
||||
@ -505,7 +533,7 @@ func (e *EWS) GetDefectUuts(cfg cnf.Cfg, logger *log.Logger, host string, addr s
|
||||
return rst
|
||||
}
|
||||
|
||||
func (e *EWS) GetOfflineUuts(cfg cnf.Cfg, logger *log.Logger, host string, addr string, uri string, params map[string]string) map[string]string {
|
||||
func (e *EWS) GetOfflineReport(cfg cnf.Cfg, logger *log.Logger, host string, addr string, uri string, params map[string]string) map[string]string {
|
||||
if cfg.Settings.LogRequest {
|
||||
logger.Printf("[MSG] %s; %s; Request: %#v\r\n", addr, uri, params)
|
||||
}
|
||||
@ -601,13 +629,13 @@ func (e *EWS) TemplateUutInfo(loc, locTime, misc, last, bkup string) string {
|
||||
loc = `<span style="color: red; font-size: 14px; font-family: Consolas;">Unknown</span>`
|
||||
}
|
||||
|
||||
if misc == "" {
|
||||
misc = `<span style="color: red;">NO Records !</span>`
|
||||
}
|
||||
// if misc == "" {
|
||||
// misc = `<span style="color: red;">NO Records !</span>`
|
||||
// }
|
||||
|
||||
if bkup == "" {
|
||||
bkup = `<span style="color: red;">NO Records !</span>`
|
||||
}
|
||||
// if bkup == "" {
|
||||
// bkup = `<span style="color: red;">NO Records !</span>`
|
||||
// }
|
||||
|
||||
resp := fmt.Sprintf(`<!DOCTYPE html>
|
||||
<html>
|
||||
@ -688,7 +716,7 @@ func (e *EWS) TemplateUutInfo(loc, locTime, misc, last, bkup string) string {
|
||||
%s
|
||||
</table>
|
||||
</body>
|
||||
</html>`, loc, locTime, misc, bkup, last)
|
||||
</html>`, loc, locTime, misc, last, bkup)
|
||||
return resp
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user