// Renew will handle renewing (or updating) a name that is already // owned by acc on the Zooko server. func (c *Client) Renew(name string, reg *Registration, acc *account.Account) error { jsonRegistration, err := json.Marshal(reg) if err != nil { return err } if err := c.checkAccountBalance(acc, false); err != nil { return err } nameUpdate, err := acc.CreateNameUpdate(name, string(jsonRegistration)) if err != nil { return err } nameUpdateBytes := &bytes.Buffer{} if err := nameUpdate.Serialize(nameUpdateBytes); err != nil { return err } updateMsg, err := message.CreateMessage(&message.RenewName{ Name: &name, Value: jsonRegistration, NameUpdate: nameUpdateBytes.Bytes(), }, c.Origin, config.ServerAddress()) if err != nil { return err } if err := c.getRegistrationResponse(updateMsg); err != nil { return err } // Commit to the transaction since the server accepted it. acc.Commit(nameUpdate) return nil }