Skip to content
This repository has been archived by the owner on Feb 27, 2020. It is now read-only.
/ Flickr-Wormhole Public archive

A Serverless GraphQL to REST Gateway Wrapper for the Flickr API

License

Notifications You must be signed in to change notification settings

Saeris/Flickr-Wormhole

Repository files navigation

Flickr-Wormhole

A Serverless GraphQL to REST Gateway Wrapper for the Flickr API

Greenkeeper badge Build Status codecov Known Vulnerabilities

Table of Contents

Installation

Dependencies

Before you start, make sure you have a working NodeJS environment, with NPM 3. Preferably use Yarn instead of NPM for installation of packages to ensure that you'll use exactly the same dependencies as the project.

From the project folder, execute the following command:

npm install

Or if you are using Yarn, execute this command instead:

yarn

Serverless

Once installation of project dependencies completes, if you haven't done so already, you will need to install Serverless globally:

NPM

npm install -g serverless

Yarn

yarn global add serverless

Please refer to the Serverless documentation for more information on how to set up your AWS credentials.

Environment Variables

Finally you will have to setup your Node environment variables. This project uses the dotenv package to manage these, so please use the template .env.default to create a .env file in the project's root directory. The only required key you'll need for now is your Flickr API Key. Please refer to the Flickr API Documentation for information how to generate a Key.

After that, your development environment is now ready to go!

Back to Top

Running the Gateway Locally

To start the server, simply run the following command:

npm start

The server should now be listening on port 1337. To access the Graphql Playground and begin exploring the API documentation, navigate to http://127.0.0.1:1337/playground in your browser of choice.

Example Queries

For now only a few Queries will work! Here are a few you can try to demo the functionality of the gateway:

Get all Camera Brands:

query Brands {
  brands {
    id
    name
  }
}

Get all Sony Cameras:

query SonyCameras {
  cameras(brand: "sony") {
    id
    name
  }
}

Get the EXIF data for a single photo:

query Exif {
  exif(photo: "34701580850") {
    camera
    make {
      name
    }
    model {
      name
    }
    software
    shootingMode
    exposure
    aperture
    iso
    lensInfo
    lensModel
    focalLength
    maxAperture
  }
}

Get a User, all of their Albums, all the Photos in that Album, the EXIF data for each Photo, and all the Image URLs in one query!:

Warning, this will take a long time to load depending on how many photos the user has!

query User {
  user(id: "146688070@N05") {
    fullname
    username
    bio
    location
    profile
    albums {
      title
      description
      photos {
        title
        exif {
          camera
          make {
            name
          }
          model {
            name
          }
          software
          shootingMode
          exposure
          aperture
          iso
          lensInfo
          lensModel
          focalLength
          maxAperture
        }
        images {
          width
          height
          source
        }
      }
    }
  }
}

Back to Top