本文整理汇总了Golang中github.com/mclarkson/obdi/external/ant0ine/go-json-rest/rest.Request类的典型用法代码示例。如果您正苦于以下问题:Golang Request类的具体用法?Golang Request怎么用?Golang Request使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Request类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Logout
func (api *Api) Logout(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
session := Session{}
var errl error = nil
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 400)
return
}
mutex.Lock()
if err := api.db.Delete(&session).Error; err != nil {
rest.Error(w, err.Error(), 400)
mutex.Unlock()
return
}
mutex.Unlock()
logit("User '" + login + "' logged out")
api.LogActivity(session.Id, "User '"+login+"' logged out")
w.WriteJson("Success")
}
示例2: GetAllEnvCaps
func (api *Api) GetAllEnvCaps(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
//session := Session{}
var errl error = nil
//if session,errl = api.CheckLogin( login, guid ); errl != nil {
if _, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
qs := r.URL.Query() // Query string - map[string][]string
envcaps := []EnvCap{}
if len(qs["code"]) > 0 {
srch := qs["code"][0]
mutex.Lock()
api.db.Order("code").Find(&envcaps, "code = ?", srch)
mutex.Unlock()
} else {
mutex.Lock()
err := api.db.Order("Code").Find(&envcaps)
mutex.Unlock()
if err.Error != nil {
if !err.RecordNotFound() {
rest.Error(w, err.Error.Error(), 500)
return
}
}
}
// Create a slice of maps from users struct
// to selectively copy database fields for display
u := make([]map[string]interface{}, len(envcaps))
for i := range envcaps {
u[i] = make(map[string]interface{})
u[i]["Id"] = envcaps[i].Id
u[i]["Code"] = envcaps[i].Code
u[i]["Desc"] = envcaps[i].Desc
}
// Too much noise
//api.LogActivity( session.Id, "Sent list of users" )
w.WriteJson(&u)
}
示例3: AddJob
func (api *Api) AddJob(w rest.ResponseWriter, r *rest.Request) {
// Decode json post data into JobIn struct
logit(fmt.Sprintf("Connection from %s", r.RemoteAddr))
job := JobIn{}
if err := r.DecodeJsonPayload(&job); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if job.JobID == 0 {
rest.Error(w, "Incorrect data format received.", 400)
return
}
// Check the password matches
if job.Key != config.WorkerKey {
rest.Error(w, "Invalid key", 400)
return
}
// Add the job to the job list
api.AppendJob(job)
if api.Guid() == "" {
api.loginmutex.Lock()
if err := api.Login(); err != nil {
// Can't send this error to the Manager so must return it here
logit(fmt.Sprintf("Error: %s", err.Error()))
rest.Error(w, err.Error(), 400)
api.loginmutex.Unlock()
return
}
api.loginmutex.Unlock()
}
if err := api.sendStatus(job, JobOut{
Status: STATUS_NOTSTARTED,
StatusReason: "About to start job",
StatusPercent: 0,
Errors: 0,
}); err != nil {
logit(fmt.Sprintf("Error: %s", err.Error()))
}
w.WriteJson(job)
//a := fmt.Sprintf("%#v",job)
//logit(a)
go api.execCmd(job)
}
示例4: DeleteEnv
func (api *Api) DeleteEnv(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Delete
id := 0
if id, errl = strconv.Atoi(r.PathParam("id")); errl != nil {
rest.Error(w, "Invalid id.", 400)
return
}
env := Env{}
mutex.Lock()
if api.db.First(&env, id).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record not found.", 400)
return
}
mutex.Unlock()
mutex.Lock()
if err := api.db.Delete(&env).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
dc := Dc{}
mutex.Lock()
api.db.First(&dc, env.DcId)
mutex.Unlock()
text := fmt.Sprintf("Deleted environment '%s->%s'.",
dc.SysName, env.SysName)
api.LogActivity(session.Id, text)
w.WriteJson("Success")
}
示例5: DeleteJob
func (api *Api) DeleteJob(w rest.ResponseWriter, r *rest.Request) {
// Decode json post data into JobIn struct
logit(fmt.Sprintf("Connection from %s", r.RemoteAddr))
job := JobIn{}
if err := r.DecodeJsonPayload(&job); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if job.JobID == 0 {
rest.Error(w, "Incorrect data format received.", 400)
return
}
// Check the password matches
if job.Key != config.WorkerKey {
rest.Error(w, "Invalid key", 400)
return
}
oldjob, err := api.FindJob(job.JobID)
if err != nil {
rest.Error(w, "Job not found", 400)
return
}
// So status can be updated correctly
api.SetUserCancel(oldjob.JobID)
// Kill the whole process group (-pid)
syscall.Kill(int(oldjob.Pid)*-1, syscall.SIGKILL)
// RemoveJob is done if the Wait fails in execCmd (exec.go)
// And wait will fail 'cos we just killed it.
// //api.RemoveJob( oldjob.JobID )
w.WriteJson(job)
}
示例6: AddPerm
func (api *Api) AddPerm(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Can't add if it exists already
permData := Perm{}
if err := r.DecodeJsonPayload(&permData); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if permData.UserId == 0 {
rest.Error(w, "Incorrect data format received.", 400)
return
}
perm := Perm{}
mutex.Lock()
if !api.db.Find(&perm, "env_id = ? and user_id = ?", permData.EnvId,
permData.UserId).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record exists.", 400)
return
}
mutex.Unlock()
// Add perm
mutex.Lock()
if err := api.db.Save(&permData).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
text := fmt.Sprintf("Added new environment permission. PermID = '%d'.",
permData.Id)
api.LogActivity(session.Id, text)
w.WriteJson(permData)
}
示例7: AddEnvCap
func (api *Api) AddEnvCap(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Can't add if it exists already
EnvCapData := EnvCap{}
if err := r.DecodeJsonPayload(&EnvCapData); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if len(EnvCapData.Code) == 0 || len(EnvCapData.Desc) == 0 {
rest.Error(w, "A required field is empty.", 400)
return
}
EnvCap := EnvCap{}
mutex.Lock()
if !api.db.Find(&EnvCap, "code = ?", EnvCapData.Code).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record exists.", 400)
return
}
mutex.Unlock()
// Add EnvCap
mutex.Lock()
if err := api.db.Save(&EnvCapData).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
text := fmt.Sprintf("Added new EnvCap, '%s'.",
EnvCapData.Code)
api.LogActivity(session.Id, text)
w.WriteJson(EnvCapData)
}
示例8: DeletePlugin
func (api *Api) DeletePlugin(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Delete
id := 0
if id, errl = strconv.Atoi(r.PathParam("id")); errl != nil {
rest.Error(w, "Invalid id.", 400)
return
}
plugin := Plugin{}
mutex.Lock()
if api.db.First(&plugin, id).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record not found.", 400)
return
}
mutex.Unlock()
mutex.Lock()
if err := api.db.Delete(&plugin).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
if err := api.db.Where("plugin_id = ?", plugin.Id).
Delete(File{}).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
api.LogActivity(session.Id,
"Deleted plugin '"+plugin.Name+"'.")
w.WriteJson("Success")
}
示例9: AddRepo
func (api *Api) AddRepo(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Can't add if it exists already
repoData := Repo{}
if err := r.DecodeJsonPayload(&repoData); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if len(repoData.Url) == 0 {
rest.Error(w, "Incorrect data format received.", 400)
return
}
repo := Repo{}
mutex.Lock()
if !api.db.Find(&repo, "Url = ?", repoData.Url).
RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record exists.", 400)
return
}
mutex.Unlock()
// Add repo
mutex.Lock()
if err := api.db.Save(&repoData).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
api.LogActivity(session.Id, "Added new repo '"+repoData.Url+"'.")
w.WriteJson(repoData)
}
示例10: AddOutputLine
func (api *Api) AddOutputLine(w rest.ResponseWriter, r *rest.Request) {
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Admin is not allowed
if login == "admin" {
rest.Error(w, "Not allowed", 400)
return
}
// Check credentials
//session := Session{}
var errl error
if _, errl = api.CheckLoginNoExpiry(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
//defer api.TouchSession( guid )
outputLineData := OutputLine{}
if err := r.DecodeJsonPayload(&outputLineData); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if outputLineData.JobId == 0 {
rest.Error(w, "Incorrect data format received.", 400)
return
}
// Add OutputLine
mutex.Lock()
if err := api.db.Save(&outputLineData).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
//text := ""
//fmt.Sprintf( text,"%d",outputLineData.JobId )
//api.LogActivity( session.Id, "Started outputLine logging for job '"+
// text+"'." )
w.WriteJson("Success")
}
示例11: DeleteOutputLine
func (api *Api) DeleteOutputLine(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Admin is not allowed
if login == "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Delete
id := 0
if id, errl = strconv.Atoi(r.PathParam("id")); errl != nil {
rest.Error(w, "Invalid id.", 400)
return
}
outputline := OutputLine{}
mutex.Lock()
if err := api.db.Where("job_id = ?", id).Delete(&outputline).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
api.LogActivity(session.Id,
fmt.Sprintf("Deleted outputlines for job %d.", id))
w.WriteJson("Success")
}
示例12: KillJob
func (api *Api) KillJob(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login == "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Delete
id := 0
if id, errl = strconv.Atoi(r.PathParam("id")); errl != nil {
rest.Error(w, "Invalid id.", 400)
return
}
job := Job{}
mutex.Lock()
if api.db.First(&job, id).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record not found.", 400)
return
}
mutex.Unlock()
env := Env{}
mutex.Lock()
api.db.Model(&job).Related(&env)
mutex.Unlock()
if env.WorkerUrl == "" || env.WorkerKey == "" {
txt := "WorkerUrl or WorkerKey not set for the target environment"
rest.Error(w, txt, 400)
return
}
type Jobkill struct {
JobID int64
Key string
}
data := Jobkill{
JobID: job.Id,
Key: env.WorkerKey,
}
// Encode
jsondata, err := json.Marshal(data)
if err != nil {
txt := fmt.Sprintf(
"Error sending kill command to worker, JSON Encode:",
err.Error())
rest.Error(w, txt, 400)
return
}
// POST to worker
resp, err := DELETE(jsondata, env.WorkerUrl, "jobs")
if err != nil {
txt := "Could not send kill command to worker. ('" + err.Error() + "')"
rest.Error(w, txt, 400)
return
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
var body []byte
if b, err := ioutil.ReadAll(resp.Body); err != nil {
txt := fmt.Sprintf("Error reading Body ('%s').", err.Error())
rest.Error(w, txt, 400)
return
} else {
body = b
}
type myErr struct {
Error string
}
errstr := myErr{}
if err := json.Unmarshal(body, &errstr); err != nil {
txt := fmt.Sprintf("Error decoding JSON ('%s')"+
". Check the Worker URL.", err.Error())
rest.Error(w, txt, 400)
return
}
txt := "Sending Kill failed. Worker said: '" +
errstr.Error + "'"
rest.Error(w, txt, 400)
return
//.........这里部分代码省略.........
示例13: AddEnv
func (api *Api) AddEnv(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Can't add if it exists already
envData := Env{}
if err := r.DecodeJsonPayload(&envData); err != nil {
rest.Error(w, "Invalid data format received.", 400)
return
} else if len(envData.SysName) == 0 {
rest.Error(w, "Incorrect data format received.", 400)
return
}
env := Env{}
mutex.Lock()
if !api.db.Find(&env, "sys_name = ? and dc_id = ?",
envData.SysName, envData.DcId).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Record exists.", 400)
return
}
mutex.Unlock()
// Add env
mutex.Lock()
if err := api.db.Save(&envData).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
dc := Dc{}
mutex.Lock()
api.db.First(&dc, envData.DcId)
mutex.Unlock()
text := fmt.Sprintf("Added new environment '%s->%s'.",
dc.SysName, envData.SysName)
api.LogActivity(session.Id, text)
w.WriteJson(envData)
}
示例14: UpdateEnvCap
func (api *Api) UpdateEnvCap(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
session := Session{}
var errl error
if session, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
// Ensure user exists
id := r.PathParam("id")
// Check that the id string is a number
if _, err := strconv.Atoi(id); err != nil {
rest.Error(w, "Invalid id.", 400)
return
}
// Load data from db, then ...
EnvCap := EnvCap{}
mutex.Lock()
if api.db.Find(&EnvCap, id).RecordNotFound() {
mutex.Unlock()
//rest.Error(w, err.Error(), 400)
rest.Error(w, "Record not found.", 400)
return
}
mutex.Unlock()
// ... overwrite any sent fields
if err := r.DecodeJsonPayload(&EnvCap); err != nil {
//rest.Error(w, err.Error(), 400)
rest.Error(w, "Invalid data format received.", 400)
return
}
// Force the use of the path id over an id in the payload
Id, _ := strconv.Atoi(id)
EnvCap.Id = int64(Id)
mutex.Lock()
if err := api.db.Save(&EnvCap).Error; err != nil {
mutex.Unlock()
rest.Error(w, err.Error(), 400)
return
}
mutex.Unlock()
text := fmt.Sprintf("Updated EnvCap, '%s'.",
EnvCap.Code)
api.LogActivity(session.Id, text)
w.WriteJson("Success")
}
示例15: GetAllUsers
// GetAllUsers processes "GET /users" queries.
//
func (api *Api) GetAllUsers(w rest.ResponseWriter, r *rest.Request) {
// Check credentials
login := r.PathParam("login")
guid := r.PathParam("GUID")
// Only admin is allowed
if login != "admin" {
rest.Error(w, "Not allowed", 400)
return
}
//session := Session{}
var errl error = nil
//if session,errl = api.CheckLogin( login, guid ); errl != nil {
if _, errl = api.CheckLogin(login, guid); errl != nil {
rest.Error(w, errl.Error(), 401)
return
}
defer api.TouchSession(guid)
users := []User{}
qs := r.URL.Query() // map[string][]string
if len(qs["login"]) > 0 {
srch := qs["login"][0]
mutex.Lock()
if api.db.Order("login").
Find(&users, "login = ?", srch).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "No results.", 400)
return
}
mutex.Unlock()
} else {
mutex.Lock()
if api.db.Order("login").Find(&users).RecordNotFound() {
mutex.Unlock()
rest.Error(w, "Empty Table.", 400)
return
}
mutex.Unlock()
}
// Create a slice of maps from users struct
// to selectively copy database fields for display
u := make([]map[string]interface{}, len(users))
for i := range users {
u[i] = make(map[string]interface{})
u[i]["Id"] = users[i].Id
u[i]["Login"] = users[i].Login
u[i]["Forename"] = users[i].Forename
u[i]["Surname"] = users[i].Surname
u[i]["Enabled"] = users[i].Enabled
u[i]["CreatedAt"] = users[i].CreatedAt
u[i]["Email"] = users[i].Email
}
// Too much noise
//api.LogActivity( session.Id, "Sent list of users" )
w.WriteJson(&u)
}