Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 23 additions & 5 deletions people/people.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down Expand Up @@ -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
}
24 changes: 22 additions & 2 deletions people/people_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

var (
body = `<?xml version="1.0" encoding="utf-8" ?>
bodyGetPhotos = `<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
<photos page="2" pages="89" perpage="10" total="881">
<photo id="2636" owner="47058503995@N01"
Expand All @@ -24,11 +24,18 @@ var (
ispublic="1" isfriend="0" isfamily="0" />
</photos>
</rsp>`

bodyFindByUsername = `<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
<user id="124533363@N04" nsid="124533363@N04">
<username>Klaus Ressmann</username>
</user>
</rsp>`
)

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

Expand Down Expand Up @@ -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 := `<?xml version="1.0" encoding="utf-8"?>
<rsp stat="ok">
Expand Down
Loading