Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/flickr/flickr-sdk

Almost certainly the best Flickr API client in the world for node and the browser
https://github.com/flickr/flickr-sdk

api client flickr flickr-api flickr-sdk javascript json oauth photos rest sdk

Last synced: 5 days ago
JSON representation

Almost certainly the best Flickr API client in the world for node and the browser

Awesome Lists containing this project

README

        

# 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("")

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: "",
consumerSecret: "",
oauthToken: "",
oauthTokenSecret: "",
})

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("")
```
#### 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: "",
consumerSecret: "",
oauthToken: "",
oauthTokenSecret: "",
})
```

> 💡 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('', 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/