func NewStation(userid string) (*pb.Station, error) { var s pb.Station s.Userid = proto.String(userid) id, err := CryptoRandId() if err != nil { return nil, err } s.Id = proto.String(id) secret := make([]byte, 20) _, err = io.ReadFull(crand.Reader, secret) if err != nil { return nil, err } s.Secret = proto.String(base64.StdEncoding.EncodeToString(secret)) now := time.Now().Unix() s.Created = &now s.Name = proto.String("Unnamed Station") return &s, nil }
func editStationPOST(sdb *db.StationDB, s *pb.Station, w http.ResponseWriter, r *http.Request, user userView) { if err := r.ParseForm(); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } log.Print(r.Form) s.Name = proto.String(r.Form.Get("name")) s.Notes = proto.String(r.Form.Get("notes")) setOptionalFloat(r.Form.Get("latitude"), &s.Lat) setOptionalFloat(r.Form.Get("longitude"), &s.Lng) setOptionalFloat(r.Form.Get("elevation"), &s.Elevation) if r.Form["has_vhf"] == nil { s.Capabilities.VhfLimits = nil } else { vhf := &pb.AzElLimits{} s.Capabilities.VhfLimits = vhf setOptionalFloat(r.Form.Get("vhf_min_azimuth"), &vhf.MinAzimuthDegrees) setOptionalFloat(r.Form.Get("vhf_max_azimuth"), &vhf.MaxAzimuthDegrees) setOptionalFloat(r.Form.Get("vhf_min_elevation"), &vhf.MinElevationDegrees) setOptionalFloat(r.Form.Get("vhf_max_elevation"), &vhf.MaxElevationDegrees) } if r.Form["has_uhf"] == nil { s.Capabilities.UhfLimits = nil } else { uhf := &pb.AzElLimits{} s.Capabilities.UhfLimits = uhf setOptionalFloat(r.Form.Get("uhf_min_azimuth"), &uhf.MinAzimuthDegrees) setOptionalFloat(r.Form.Get("uhf_max_azimuth"), &uhf.MaxAzimuthDegrees) setOptionalFloat(r.Form.Get("uhf_min_elevation"), &uhf.MinElevationDegrees) setOptionalFloat(r.Form.Get("uhf_max_elevation"), &uhf.MaxElevationDegrees) } if r.Form["scheduler_enabled"] == nil { s.SchedulerEnabled = nil } else { s.SchedulerEnabled = proto.Bool(true) } err := sdb.Store(s) if err != nil { log.Printf("Station DB store error: %s", err.Error()) http.Error(w, "", http.StatusInternalServerError) return } redirect := stationUrl("/station", *s.Id) http.Redirect(w, r, redirect, http.StatusFound) }