| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "go/build" |
| "net/http" |
| "runtime" |
| ) |
| |
| func (s *server) handleVersion(w http.ResponseWriter, req *http.Request) { |
| w.Header().Set("Access-Control-Allow-Origin", "*") |
| |
| tag := build.Default.ReleaseTags[len(build.Default.ReleaseTags)-1] |
| var maj, min int |
| if _, err := fmt.Sscanf(tag, "go%d.%d", &maj, &min); err != nil { |
| code := http.StatusInternalServerError |
| http.Error(w, http.StatusText(code), code) |
| return |
| } |
| |
| version := struct { |
| Version, Release, Name string |
| }{ |
| Version: runtime.Version(), |
| Release: tag, |
| } |
| |
| if s.gotip { |
| version.Name = "Go dev branch" |
| } else { |
| version.Name = fmt.Sprintf("Go %d.%d", maj, min) |
| } |
| |
| s.writeJSONResponse(w, version, http.StatusOK) |
| } |