Skip to content

Commit 94fe1f3

Browse files
committed
renameAll method and refactor
1 parent 91400a0 commit 94fe1f3

File tree

4 files changed

+137
-58
lines changed

4 files changed

+137
-58
lines changed

facebox/facebox_rename.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package facebox
2+
3+
import (
4+
"net/http"
5+
"net/url"
6+
"strings"
7+
8+
"github.com/pkg/errors"
9+
)
10+
11+
// Rename allows to change the name for a given face
12+
func (c *Client) Rename(id, name string) error {
13+
if id == "" {
14+
return errors.New("id can not be empty")
15+
}
16+
if name == "" {
17+
return errors.New("name can not be empty")
18+
}
19+
u, err := url.Parse(c.addr + "/facebox/teach")
20+
if err != nil {
21+
return err
22+
}
23+
if !u.IsAbs() {
24+
return errors.New("box address must be absolute")
25+
}
26+
form := url.Values{}
27+
form.Set("name", name)
28+
29+
q := u.Query()
30+
u.Path = u.Path + "/" + id
31+
u.RawQuery = q.Encode()
32+
req, err := http.NewRequest("PATCH", u.String(), strings.NewReader(form.Encode()))
33+
if err != nil {
34+
return err
35+
}
36+
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
37+
req.Header.Set("Accept", "application/json; charset=utf-8")
38+
resp, err := c.HTTPClient.Do(req)
39+
if err != nil {
40+
return err
41+
}
42+
defer resp.Body.Close()
43+
err = c.parseResponse(resp.Body)
44+
if err != nil {
45+
return err
46+
}
47+
return nil
48+
}
49+
50+
// RenameAll changes the name for all the faces that match a given name
51+
func (c *Client) RenameAll(oldName, newName string) error {
52+
if oldName == "" {
53+
return errors.New("oldName can not be empty")
54+
}
55+
if newName == "" {
56+
return errors.New("newName can not be empty")
57+
}
58+
u, err := url.Parse(c.addr + "/facebox/rename")
59+
if err != nil {
60+
return err
61+
}
62+
if !u.IsAbs() {
63+
return errors.New("box address must be absolute")
64+
}
65+
form := url.Values{}
66+
form.Set("from", oldName)
67+
form.Set("to", newName)
68+
69+
q := u.Query()
70+
u.RawQuery = q.Encode()
71+
req, err := http.NewRequest("POST", u.String(), strings.NewReader(form.Encode()))
72+
if err != nil {
73+
return err
74+
}
75+
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
76+
req.Header.Set("Accept", "application/json; charset=utf-8")
77+
resp, err := c.HTTPClient.Do(req)
78+
if err != nil {
79+
return err
80+
}
81+
defer resp.Body.Close()
82+
err = c.parseResponse(resp.Body)
83+
if err != nil {
84+
return err
85+
}
86+
return nil
87+
}

facebox/facebox_rename_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package facebox_test
2+
3+
import (
4+
"io"
5+
"net/http"
6+
"net/http/httptest"
7+
"testing"
8+
9+
"github.com/machinebox/sdk-go/facebox"
10+
"github.com/matryer/is"
11+
)
12+
13+
func TestRename(t *testing.T) {
14+
is := is.New(t)
15+
16+
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
17+
is.Equal(r.URL.Path, "/facebox/teach/john1.jpg")
18+
is.Equal(r.Header.Get("Accept"), "application/json; charset=utf-8")
19+
is.Equal(r.Method, "PATCH")
20+
is.Equal(r.FormValue("name"), "Sir John L")
21+
io.WriteString(w, `{
22+
"success": true
23+
}`)
24+
}))
25+
defer srv.Close()
26+
27+
fb := facebox.New(srv.URL)
28+
err := fb.Rename("john1.jpg", "Sir John L")
29+
is.NoErr(err)
30+
}
31+
32+
func TestRenameAll(t *testing.T) {
33+
is := is.New(t)
34+
35+
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
36+
is.Equal(r.URL.Path, "/facebox/rename")
37+
is.Equal(r.Header.Get("Accept"), "application/json; charset=utf-8")
38+
is.Equal(r.Method, "POST")
39+
is.Equal(r.FormValue("from"), "John Lennon")
40+
is.Equal(r.FormValue("to"), "Sir John Lennon")
41+
io.WriteString(w, `{
42+
"success": true
43+
}`)
44+
}))
45+
defer srv.Close()
46+
47+
fb := facebox.New(srv.URL)
48+
err := fb.RenameAll("John Lennon", "Sir John Lennon")
49+
is.NoErr(err)
50+
}

facebox/facebox_teach.go

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -128,45 +128,6 @@ func (c *Client) Remove(id string) error {
128128
return nil
129129
}
130130

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-
170131
func (c *Client) parseResponse(r io.Reader) error {
171132
var response struct {
172133
Success bool

facebox/facebox_teach_test.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -126,22 +126,3 @@ func TestRemove(t *testing.T) {
126126
err := fb.Remove("john1.jpg")
127127
is.NoErr(err)
128128
}
129-
130-
func TestRename(t *testing.T) {
131-
is := is.New(t)
132-
133-
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
134-
is.Equal(r.URL.Path, "/facebox/teach/john1.jpg")
135-
is.Equal(r.Header.Get("Accept"), "application/json; charset=utf-8")
136-
is.Equal(r.Method, "PATCH")
137-
is.Equal(r.FormValue("name"), "Sir John L")
138-
io.WriteString(w, `{
139-
"success": true
140-
}`)
141-
}))
142-
defer srv.Close()
143-
144-
fb := facebox.New(srv.URL)
145-
err := fb.Rename("john1.jpg", "Sir John L")
146-
is.NoErr(err)
147-
}

0 commit comments

Comments
 (0)