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 := `