github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/usersserver/get_since.go (about) 1 package usersserver 2 3 import ( 4 "encoding/json" 5 "net/http" 6 "time" 7 8 "github.com/pf-qiu/concourse/v6/atc" 9 "github.com/pf-qiu/concourse/v6/atc/api/present" 10 "github.com/pf-qiu/concourse/v6/atc/db" 11 ) 12 13 const since = "since" 14 const dateLayout = "2006-01-02" 15 16 func (s *Server) GetUsersSince(w http.ResponseWriter, r *http.Request) { 17 hLog := s.logger.Session("list-users") 18 w.Header().Set("Content-Type", "application/json") 19 20 var ( 21 users []db.User 22 err error 23 ) 24 25 err = r.ParseForm() 26 if err != nil { 27 hLog.Error("failed-to-parse-form-data", err) 28 w.WriteHeader(http.StatusBadRequest) 29 return 30 } 31 32 if isSinceSet(r) { 33 tmSince, err := time.Parse(dateLayout, r.FormValue(since)) 34 if err != nil { 35 hLog.Error("failed-to-parse-time", err) 36 w.WriteHeader(http.StatusBadRequest) 37 if err = json.NewEncoder(w).Encode(map[string]string{"error": "wrong date format (yyyy-mm-dd)"}); err != nil { 38 hLog.Error("failed-to-encode-date-parsing-error", err) 39 w.WriteHeader(http.StatusInternalServerError) 40 } 41 return 42 } 43 users, err = s.userFactory.GetAllUsersByLoginDate(tmSince) 44 if err != nil { 45 hLog.Error("failed-to-get-users-since", err) 46 w.WriteHeader(http.StatusInternalServerError) 47 return 48 } 49 } else { 50 users, err = s.userFactory.GetAllUsers() 51 if err != nil { 52 hLog.Error("failed-to-get-users", err) 53 w.WriteHeader(http.StatusInternalServerError) 54 return 55 } 56 } 57 58 presentedUsers := make([]atc.User, len(users)) 59 for idx, user := range users { 60 presentedUsers[idx] = present.User(user) 61 } 62 63 err = json.NewEncoder(w).Encode(presentedUsers) 64 if err != nil { 65 hLog.Error("failed-to-encode-users", err) 66 w.WriteHeader(http.StatusInternalServerError) 67 } 68 return 69 } 70 71 func isSinceSet(r *http.Request) bool { 72 if len(r.FormValue(since)) > 0 { 73 return true 74 } 75 return false 76 }