예제 #1
0
파일: contest.go 프로젝트: rakeen/cactus
func ServeContest(w http.ResponseWriter, r *http.Request) {
	cnt, err := data.GetContest()
	catch(err)

	err = json.NewEncoder(w).Encode(cnt)
	catch(err)
}
예제 #2
0
파일: problem.go 프로젝트: rakeen/cactus
func ServeProblemBySlug(w http.ResponseWriter, r *http.Request) {
	cnt, err := data.GetContest()
	catch(err)

	me, _ := context.Get(r, "me").(*data.Account)
	if !cnt.Started() && (me == nil || (me.Level != data.Judge && me.Level != data.Administrator)) {
		http.Error(w, "", http.StatusNotFound)
		return
	}

	prob, err := data.GetProblemBySlug(r.FormValue("slug"))
	catch(err)

	err = json.NewEncoder(w).Encode(prob)
	catch(err)
}
예제 #3
0
파일: problem.go 프로젝트: rakeen/cactus
func ServeProblemList(w http.ResponseWriter, r *http.Request) {
	cnt, err := data.GetContest()
	catch(err)

	me, _ := context.Get(r, "me").(*data.Account)
	if !cnt.Started() && (me == nil || (me.Level != data.Judge && me.Level != data.Administrator)) {
		err = json.NewEncoder(w).Encode([]*data.Problem{})
		catch(err)
		return
	}

	probs, err := data.ListProblems()
	catch(err)
	err = json.NewEncoder(w).Encode(probs)
	catch(err)
}
예제 #4
0
파일: problem.go 프로젝트: rakeen/cactus
func ServeProblem(w http.ResponseWriter, r *http.Request) {
	cnt, err := data.GetContest()
	catch(err)

	me, _ := context.Get(r, "me").(*data.Account)
	if !cnt.Started() && (me == nil || (me.Level != data.Judge && me.Level != data.Administrator)) {
		http.Error(w, "", http.StatusNotFound)
		return
	}

	vars := mux.Vars(r)

	id, err := strconv.ParseInt(vars["id"], 10, 64)
	catch(err)
	prob, err := data.GetProblem(id)
	catch(err)

	err = json.NewEncoder(w).Encode(prob)
	catch(err)
}
예제 #5
0
파일: contest.go 프로젝트: rakeen/cactus
func UpdateContest(w http.ResponseWriter, r *http.Request) {
	me, _ := context.Get(r, "me").(*data.Account)
	if me == nil || me.Level != data.Administrator {
		http.Error(w, "", http.StatusForbidden)
		return
	}

	cnt, err := data.GetContest()
	catch(err)

	err = json.NewDecoder(r.Body).Decode(cnt)
	catch(err)

	err = cnt.Put()
	catch(err)

	err = json.NewEncoder(w).Encode(cnt)
	catch(err)
	hub.Send([]interface{}{"SYNC", "contest"})

	err = data.NewActivity(me, fmt.Sprintf("updated contest %d", cnt.Id)).Put()
	catch(err)
	hub.Send([]interface{}{"SYNC", "activities"})
}
예제 #6
0
파일: session.go 프로젝트: rakeen/cactus
func init() {
	cnt, err := data.GetContest()
	catch(err)
	Store = sessions.NewCookieStore(cnt.Salt, cnt.Salt)
}