Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/masci/flickr
Go client for Flickr API https://www.flickr.com/services/api/
https://github.com/masci/flickr
Last synced: about 2 months ago
JSON representation
Go client for Flickr API https://www.flickr.com/services/api/
- Host: GitHub
- URL: https://github.com/masci/flickr
- Owner: masci
- License: mit
- Created: 2015-06-28T09:03:09.000Z (over 9 years ago)
- Default Branch: v3
- Last Pushed: 2023-04-28T07:16:20.000Z (over 1 year ago)
- Last Synced: 2024-10-29T21:05:03.018Z (about 2 months ago)
- Language: Go
- Homepage:
- Size: 2.6 MB
- Stars: 32
- Watchers: 10
- Forks: 25
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# flickr
A go library to easily consume Flickr API.
The project is currently under heavy development, so it hasn't a version number yet.[![GoDoc](https://godoc.org/gopkg.in/masci/flickr.v3?status.svg)](https://godoc.org/gopkg.in/masci/flickr.v3)
[![build-test](https://github.com/masci/flickr/actions/workflows/test.yml/badge.svg)](https://github.com/masci/flickr/actions/workflows/test.yml)
[![Coverage Status](https://coveralls.io/repos/masci/flickr/badge.svg)](https://coveralls.io/r/masci/flickr)## Usage
`flickr` aims to expose a Go Api matching Flickr REST Api, so that you don't need
to build HTTP requests and parse HTTP response manually. For example, the Flickr
method `flickr.photosets.create` is implemented with the `Create` function in the `flickr/photosets`
package:```go
import "fmt"
import "gopkg.in/masci/flickr.v3"
import "gopkg.in/masci/flickr.v3/photosets"// create an API client with credentials
client := flickr.NewFlickrClient("your_apikey", "your_apisecret")
client.OAuthToken = "your_token"
client.OAuthTokenSecret = "your_tokenSecret"response, _ := photosets.Create(client, "My Set", "Description", "primary_photo_id")
fmt.Println("New photoset created:", response.Photoset.Id)
````flickr` responses implement `flickr.FlickrResponse` interface. A response contains error codes
and error messages (if any) produced by Flickr or the specific data returned by the api call.
Different methods may return different kind of responses.### Upload a photo
There are a number of functions that don't map any actual Flickr Api method
(see below for the detailed list). For example, to upload a photo, you call the
`UploadFile` or `UploadReader` functions in the `flickr` package:```go
import "gopkg.in/masci/flickr.v3"// upload the image file with default (nil) options
resp, err := flickr.UploadFile(client, "/path/to/image", nil)
```
Files are uploaded through an io.Pipe fueled in a separate goroutine, so the process is pretty efficient.### Authentication (or how to retrieve OAuth credentials)
Several api calls must be authenticated and authorized: `flickr` only supports
OAuth since the original token-based method has been deprecated by Flickr. This
is an example describing the OAuth worflow from a command line application:```go
import "gopkg.in/masci/flickr.v3"client := flickr.NewFlickrClient("your_apikey", "your_apisecret")
// first, get a request token
requestTok, _ := flickr.GetRequestToken(client)// build the authorizatin URL
url, _ := flickr.GetAuthorizeUrl(client, requestTok)// ask user to hit the authorization url with
// their browser, authorize this application and coming
// back with the confirmation token// finally, get the access token, setup the client and start making requests
accessTok, err := flickr.GetAccessToken(client, requestTok, "oauth_confirmation_code")
client.OAuthToken = accessTok.OAuthToken
client.OAuthTokenSecret = accessTok.OAuthTokenSecret
```### Api coverage
Only a small part of the Flickr Api is implemented as Go functions: even if it's quite
simple to write the code for the mapping, I only did it for methods I actually need in my projects
(contributions well accepted). Anyway, if you need to call a Flickr Api method that wasn't
already mapped, you can do it manually:```go
import "fmt"
import "gopkg.in/masci/flickr.v3"client := flickr.NewFlickrClient("your_apikey", "your_apisecret")
client.Init()
client.Args.Set("method", "flickr.cameras.getBrandModels")
client.Args.Set("brand", "nikon")client.OAuthSign()
response := &flickr.BasicResponse{}
err := flickr.DoGet(client, response)if err != nil {
fmt.Printf("Error: %s", err)
} else {
fmt.Println("Api response:", response.Extra)
}
```Checkout the `example` folder and the docs pages for more details.
## Note on Go versions
The latest version `v2` only supports go `1.6` and above, for Go `< 1.6` use the `v1` package:
```
go get gopkg.in/masci/flickr.v1
```## API Methods
### Extra-API Methods
These are methods that are not actually part of the Flickr API* Get OAuth request token
* Get OAuth authorize URL
* Get OAuth access token
* Upload photo### auth.oauth
* flickr.auth.oauth.checkToken### photos
* flickr.photos.delete
* flickr.photos.getInfo
* flickr.photos.setDates
* flickr.photos.setPerms
* flickr.photos.addTags
* flickr.photos.getSizes### photosets
* flickr.photosets.addPhoto
* flickr.photosets.create
* flickr.photosets.delete
* flickr.photosets.editMeta
* flickr.photosets.editPhotos
* flickr.photosets.getInfo
* flickr.photosets.getList
* flickr.photosets.getPhotos
* flickr.photosets.orderSets
* flickr.photosets.removePhoto
* flickr.photosets.removePhotos
* flickr.photosets.reorderPhotos
* flickr.photosets.setPrimaryPhoto### people
* flickr.people.getPhotos### Groups
* flickr.groups.pools.add
* flickr.groups.pools.getGroups
* flickr.groups.getInfo### test
* flickr.test.echo
* flickr.test.login
* flickr.test.null