flickr-sdk
Version:
Almost certainly the best Flickr API client in the world for node and the browser
138 lines (97 loc) • 3.14 kB
Markdown
# flickr-sdk
Almost certainly the best Flickr API client in the world for node and the browser
This SDK provides methods and type definitions for all methods listed on https://www.flickr.com/services/api/
To use this SDK, sign up for an API key [here][api key]
## install
```
$ npm install flickr-sdk
```
## quickstart
#### Make a Flickr API call
```js
import { createFlickr } from "flickr-sdk"
const { flickr } = createFlickr("<your Flickr API key>")
const res = await flickr("flickr.photos.getInfo", {
photo_id: '12345',
})
```
#### Upload a photo
```js
import { createFlickr } from "flickr-sdk"
import { resolve } from "node:path"
const { upload } = createFlickr({
consumerKey: "<your API key>",
consumerSecret: "<your API secret>",
oauthToken: "<the oauth token>",
oauthTokenSecret: "<the oauth token secret>",
})
const id = await upload(resolve("example.png"), {
title: "Works on MY machine!",
})
```
## auth
The Flickr SDK currently supports the following auth methods:
#### API Key
This is the simplest way to use the SDK. Just provide your API key as a string:
```js
const { flickr } = createFlickr("<your API key>")
```
#### OAuth 1.0
OAuth lets users grant your application access and then you may act on their
behalf. The OAuth flow is described [here][oauth].
```js
const { upload } = createFlickr({
consumerKey: "<your API key>",
consumerSecret: "<your API secret>",
oauthToken: "<the oauth token>",
oauthTokenSecret: "<the oauth token secret>",
})
```
> 💡 Use `examples/oauth.mjs` to quickly set up an OAuth flow and obtain a
> set of credentials
## migrating from previous versions
Previous versions of this SDK depended on [superagent][superagent] for http
requests. This version of the SDK uses node's native `fetch` instead, so you now
only receive the response body back from an API call. This means **the return
value of an API call will only be the response body, not a superagent Request**
Migrating existing code looks like this:
```js
// old
const res = await flickr.test.login()
console.log(res.body)
// new
const body = await flickr('flickr.test.login', {})
console.log(body)
```
## advanced
#### configuring fetch
```js
import { createFlickr, FetchTransport } from 'flickr-sdk'
const transport = new FetchTransport({
headers: {
'user-agent': 'foo',
}
})
const { flickr } = createFlickr('<your API key>', transport)
```
#### testing
```js
import { createFlickr, MockTransport, NullAuth } from 'flickr-sdk'
import * as assert from 'node:assert'
// mock transport returns the response you pass in the constructor
const transport = new MockTransport({
stat: 'ok',
foo: 'bar'
})
// null auth does nothing
const auth = NullAuth()
const { flickr } = createFlickr(auth, transport)
// makes no network request
const res = await flickr('flickr.photos.getInfo', {
photo_id: '12345',
})
assert.deepStrictEqual(res, { stat: 'ok', foo: 'bar' })
```
[api key]: https://www.flickr.com/services/apps/create/
[oauth]: https://www.flickr.com/services/api/auth.oauth.html
[superagent]: https://github.com/ladjs/superagent/