// SessionRenew is used to renew the TTL on an existing TTL session func (s *HTTPServer) SessionRenew(resp http.ResponseWriter, req *http.Request) (interface{}, error) { // Mandate a PUT request if req.Method != "PUT" { resp.WriteHeader(405) return nil, nil } args := structs.SessionSpecificRequest{} if done := s.parse(resp, req, &args.Datacenter, &args.QueryOptions); done { return nil, nil } // Pull out the session id args.Session = strings.TrimPrefix(req.URL.Path, "/v1/session/renew/") if args.Session == "" { resp.WriteHeader(400) resp.Write([]byte("Missing session")) return nil, nil } var out structs.IndexedSessions if err := s.agent.RPC("Session.Renew", &args, &out); err != nil { return nil, err } else if out.Sessions == nil { resp.WriteHeader(404) resp.Write([]byte(fmt.Sprintf("Session id '%s' not found", args.Session))) return nil, nil } return out.Sessions, nil }
// SessionGet is used to get info for a particular session func (s *HTTPServer) SessionGet(resp http.ResponseWriter, req *http.Request) (interface{}, error) { args := structs.SessionSpecificRequest{} if done := s.parse(resp, req, &args.Datacenter, &args.QueryOptions); done { return nil, nil } // Pull out the session id args.Session = strings.TrimPrefix(req.URL.Path, "/v1/session/info/") if args.Session == "" { resp.WriteHeader(400) resp.Write([]byte("Missing session")) return nil, nil } var out structs.IndexedSessions defer setMeta(resp, &out.QueryMeta) if err := s.agent.RPC("Session.Get", &args, &out); err != nil { return nil, err } return out.Sessions, nil }