diff --git a/README.md b/README.md
index fda911d..34b9707 100644
--- a/README.md
+++ b/README.md
@@ -148,6 +148,7 @@ These are methods that are not actually part of the Flickr API
### people
* flickr.people.getPhotos
+ * flickr.people.findByUsername
### Groups
* flickr.groups.pools.add
diff --git a/people/people.go b/people/people.go
index bd880f6..c464836 100644
--- a/people/people.go
+++ b/people/people.go
@@ -49,11 +49,22 @@ type Photos struct {
Photos []Photo `xml:"photo"`
}
+type User struct {
+ Id string `xml:"id,attr"`
+ Nsid string `xml:"nsid,attr"`
+ Usernames []string `xml:"username"`
+}
+
type GetPhotosResponse struct {
flickr.BasicResponse
Photos Photos `xml:"photos"`
}
+type FindByUsernameResponse struct {
+ flickr.BasicResponse
+ User User `xml:"user"`
+}
+
type SafetyLevel int
const (
@@ -140,10 +151,17 @@ func GetPhotos(client *flickr.FlickrClient,
response := &GetPhotosResponse{}
err := flickr.DoGet(client, response)
- // if err == nil {
- // fmt.Println("API response:", response.Extra)
- // } else {
- // fmt.Println("API error:", err)
- // }
+ return response, err
+}
+
+func FindByUsername(client *flickr.FlickrClient, username string) (*FindByUsernameResponse, error) {
+ client.Init()
+ client.EndpointUrl = flickr.API_ENDPOINT
+ client.Args.Set("method", "flickr.people.findByUsername")
+ client.Args.Set("username", username)
+ client.OAuthSign()
+
+ response := &FindByUsernameResponse{}
+ err := flickr.DoGet(client, response)
return response, err
}
diff --git a/people/people_test.go b/people/people_test.go
index cac228e..ca8addd 100644
--- a/people/people_test.go
+++ b/people/people_test.go
@@ -7,7 +7,7 @@ import (
)
var (
- body = `
+ bodyGetPhotos = `
`
+
+ bodyFindByUsername = `
+
+
+ Klaus Ressmann
+
+ `
)
func TestGetPhotos(t *testing.T) {
fclient := flickr.GetTestClient()
- server, client := flickr.FlickrMock(200, body, "text/xml")
+ server, client := flickr.FlickrMock(200, bodyGetPhotos, "text/xml")
defer server.Close()
fclient.HTTPClient = client
@@ -61,6 +68,19 @@ func TestGetPhotos(t *testing.T) {
})
}
+func TestFindByUsername(t *testing.T) {
+ fclient := flickr.GetTestClient()
+ server, client := flickr.FlickrMock(200, bodyFindByUsername, "text/xml")
+ defer server.Close()
+ fclient.HTTPClient = client
+
+ resp, err := FindByUsername(fclient, "Klaus Ressmann")
+ flickr.Expect(t, err, nil)
+ flickr.Expect(t, resp.User.Id, "124533363@N04")
+ flickr.Expect(t, resp.User.Nsid, "124533363@N04")
+ flickr.Expect(t, resp.User.Usernames[0], "Klaus Ressmann")
+}
+
func TestGetPhotosExtras(t *testing.T) {
body := `