Sha256: 0fd552529e22a35f5e078d3b1a56ce178bb25aa5c14b318f9dc9932fcef7cf87

Contents?: true

Size: 1.01 KB

Versions: 9

Compression:

Stored size: 1.01 KB

Contents

# encoding: utf-8

require 'net/http'
require 'json'

module Slideoff
  class FlickrAPIException < Exception
    def initialize(code, message)
      @code = code
      @message = message
    end

    def self.from_json(json)
      new(json['code'], json['message'])
    end

    def to_s
      "#{@message} [Code: #{@code}]"
    end
  end

  class FlickrAPI
    ENDPOINT = "https://api.flickr.com/services/rest/"

    DEFAULT_PARAMS = {
      :api_key => CONFIG.flickr_api_key,
      :format => :json,
      :nojsoncallback => 1
    }

    def initialize(params = {})
      raise "Please specify your Flickr API key in presentation.json" unless CONFIG.flickr_api_key
      @params = params
    end

    def uri
      _uri = URI(ENDPOINT)
      _uri.query = URI.encode_www_form(DEFAULT_PARAMS.merge(@params))
      _uri
    end

    def json
      @json ||= begin
        _json = JSON.parse(Net::HTTP.get(uri))
        raise FlickrAPIException.from_json(_json) unless _json['stat'] == 'ok'
        _json
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
slideoff-0.4.0 lib/slideoff/flickr_api.rb
slideoff-0.3.5 lib/slideoff/flickr_api.rb
slideoff-0.3.4 lib/slideoff/flickr_api.rb
slideoff-0.3.3 lib/slideoff/flickr_api.rb
slideoff-0.3.2 lib/slideoff/flickr_api.rb
slideoff-0.3.1 lib/slideoff/flickr_api.rb
slideoff-0.3 lib/slideoff/flickr_api.rb
slideoff-0.2 lib/slideoff/flickr_api.rb
slideoff-0.1 lib/slideoff/flickr_api.rb