| package handlers |
| |
| import ( |
| "fmt" |
| "math/rand" |
| "net/http" |
| "time" |
| |
| "veyron/services/identity/util" |
| "veyron2" |
| ) |
| |
| // Random is an http.Handler implementation that mints a new Veyron PrivateID |
| // with a random name. |
| type Random struct{ Runtime veyron2.Runtime } |
| |
| func (h Random) ServeHTTP(w http.ResponseWriter, r *http.Request) { |
| name := fmt.Sprintf("random:%d", rand.Intn(1000)) |
| id, err := h.Runtime.NewIdentity(name) |
| if err != nil { |
| util.HTTPServerError(w, err) |
| return |
| } |
| // Bless this with the identity of the runtime, valid for 1 hour. |
| blessing, err := h.Runtime.Identity().Bless(id.PublicID(), name, 1*time.Hour, nil) |
| if err != nil { |
| util.HTTPServerError(w, err) |
| return |
| } |
| id, err = id.Derive(blessing) |
| if err != nil { |
| util.HTTPServerError(w, err) |
| return |
| } |
| util.HTTPSend(w, id) |
| } |