@@ -95,6 +95,78 @@ func (c *Client) TeachURL(imageURL *url.URL, id, name string) error {
9595 return nil
9696}
9797
98+ // Remove makes facebox to forget a face
99+ func (c * Client ) Remove (id string ) error {
100+ if id == "" {
101+ return errors .New ("id can not be empty" )
102+ }
103+ u , err := url .Parse (c .addr + "/facebox/teach" )
104+ if err != nil {
105+ return err
106+ }
107+ if ! u .IsAbs () {
108+ return errors .New ("box address must be absolute" )
109+ }
110+
111+ q := u .Query ()
112+ u .Path = u .Path + "/" + id
113+ u .RawQuery = q .Encode ()
114+ req , err := http .NewRequest ("DELETE" , u .String (), nil )
115+ if err != nil {
116+ return err
117+ }
118+ req .Header .Set ("Accept" , "application/json; charset=utf-8" )
119+ resp , err := c .HTTPClient .Do (req )
120+ if err != nil {
121+ return err
122+ }
123+ defer resp .Body .Close ()
124+ err = c .parseResponse (resp .Body )
125+ if err != nil {
126+ return err
127+ }
128+ return nil
129+ }
130+
131+ // Rename allows to change the name for a given face
132+ func (c * Client ) Rename (id , name string ) error {
133+ if id == "" {
134+ return errors .New ("id can not be empty" )
135+ }
136+ if name == "" {
137+ return errors .New ("name can not be empty" )
138+ }
139+ u , err := url .Parse (c .addr + "/facebox/teach" )
140+ if err != nil {
141+ return err
142+ }
143+ if ! u .IsAbs () {
144+ return errors .New ("box address must be absolute" )
145+ }
146+ form := url.Values {}
147+ form .Set ("name" , name )
148+
149+ q := u .Query ()
150+ u .Path = u .Path + "/" + id
151+ u .RawQuery = q .Encode ()
152+ req , err := http .NewRequest ("PATCH" , u .String (), strings .NewReader (form .Encode ()))
153+ if err != nil {
154+ return err
155+ }
156+ req .Header .Set ("Content-Type" , "application/x-www-form-urlencoded" )
157+ req .Header .Set ("Accept" , "application/json; charset=utf-8" )
158+ resp , err := c .HTTPClient .Do (req )
159+ if err != nil {
160+ return err
161+ }
162+ defer resp .Body .Close ()
163+ err = c .parseResponse (resp .Body )
164+ if err != nil {
165+ return err
166+ }
167+ return nil
168+ }
169+
98170func (c * Client ) parseResponse (r io.Reader ) error {
99171 var response struct {
100172 Success bool
0 commit comments