Parcourir la source

Loan Single edit service backend

master
sp il y a 4 ans
Parent
révision
9cd7c91693
2 fichiers modifiés avec 92 ajouts et 0 suppressions
  1. +60
    -0
      apiV1LoanSingle.go
  2. +32
    -0
      apiv1.go

+ 60
- 0
apiV1LoanSingle.go Voir le fichier

package main

import (
"biukop.com/sfm/loan"
"encoding/json"
log "github.com/sirupsen/logrus"
"net/http"
)

func apiV1LoanSingleGet(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
l := loan.Loan{}

loanId := r.URL.Path[len(apiV1Prefix+"loan/"):] //remove prefix
e := l.Read(loanId)
if e != nil {
log.Error("cannot read loan by id ", loanId)
apiV1Client404Error(w, r, ss)
return
}

apiV1SendJson(l, w, r, ss)

}

func decodeJsonLoanEdit(r *http.Request) (ret loan.Loan, e error) {
decoder := json.NewDecoder(r.Body)
//decoder.DisallowUnknownFields()
e = decoder.Decode(&ret)
if e != nil {
log.Error("failed decoding json for Filtering full_loan_summary ", e.Error())
return
}
return
}
func apiV1LoanSinglePostBasic(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
l := loan.Loan{}

input, e := decodeJsonLoanEdit(r)

log.Println(input)
if e != nil {
apiV1Client404Error(w, r, ss)
return
} else {
l.Id = input.Id
l.Status = input.Status
l.Amount = input.Amount
l.Item = input.Item
l.Rating = input.Rating
l.Description = input.Description
e = l.WriteBasic()
if e != nil {
apiV1Client404Error(w, r, ss)
} else {
apiV1SendJson(l, w, r, ss)
}

}

}

+ 32
- 0
apiv1.go Voir le fichier

{"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans}, {"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans},
{"GET", "chart/top-broker", apiV1ChartTopBroker}, {"GET", "chart/top-broker", apiV1ChartTopBroker},
{"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview}, {"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview},
{"GET", "loan/", apiV1LoanSingleGet},
{"POST", "loan/basic/", apiV1LoanSinglePostBasic},
{"GET", "avatar/", apiV1Avatar}, {"GET", "avatar/", apiV1Avatar},
{"GET", "login", apiV1DumpRequest}, {"GET", "login", apiV1DumpRequest},
} }
{"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans}, {"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans},
{"GET", "chart/top-broker", apiV1ChartTopBroker}, {"GET", "chart/top-broker", apiV1ChartTopBroker},
{"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview}, {"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview},
{"GET", "loan/", apiV1LoanSingleGet},
{"POST", "loan/basic/", apiV1LoanSinglePostBasic},
{"GET", "avatar/", apiV1Avatar}, {"GET", "avatar/", apiV1Avatar},
{"GET", "login", apiV1EmptyResponse}, {"GET", "login", apiV1EmptyResponse},
} }
} }


func apiV1AddTrackingCookie(w http.ResponseWriter, r *http.Request, session *loan.Session) { func apiV1AddTrackingCookie(w http.ResponseWriter, r *http.Request, session *loan.Session) {
//set session header too.
w.Header().Add("Access-Control-Expose-Headers", "Biukop-Session")
if session == nil {
w.Header().Add("Biukop-Session", "")
} else {
w.Header().Add("Biukop-Session", session.Id)
}

//add tracking cookie //add tracking cookie
expiration := time.Now().Add(365 * 24 * time.Hour) expiration := time.Now().Add(365 * 24 * time.Hour)
mid := apiV1GetMachineId(r) mid := apiV1GetMachineId(r)
e = errors.New("session not found: " + sid) e = errors.New("session not found: " + sid)
} }
return return
return
} }


func apiV1ErrorCheck(e error) { func apiV1ErrorCheck(e error) {
log.Warnf("Not authorized http(%s) path= %s, %s", r.Method, r.URL.Path, dump) log.Warnf("Not authorized http(%s) path= %s, %s", r.Method, r.URL.Path, dump)
} }


func apiV1Client404Error(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
w.WriteHeader(404)
type struct404 struct {
Error int
ErrorMsg string
}
e404 := struct404{Error: 404, ErrorMsg: "Not Found " + time.Now().Format(time.RFC1123)}
msg404, _ := json.Marshal(e404)

//before send out
apiV1AddTrackingCookie(w, r, ss) //always the last one to set cookies
fmt.Fprintln(w, string(msg404))

//write log
dump := logRequestDebug(httputil.DumpRequest(r, true))
dump = strings.TrimSpace(dump)
log.Warnf("Not found http(%s) path= %s, %s", r.Method, r.URL.Path, dump)
}

func apiV1DumpRequest(w http.ResponseWriter, r *http.Request, ss *loan.Session) { func apiV1DumpRequest(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
dump := logRequestDebug(httputil.DumpRequest(r, true)) dump := logRequestDebug(httputil.DumpRequest(r, true))
dump = strings.TrimSpace(dump) dump = strings.TrimSpace(dump)

Chargement…
Annuler
Enregistrer