Sha256: eab35dc1e7148623626f506ebc1c7e8f2ad10049c5e50aa58d0405ee686e12c4

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

module Wordnik
  class Wordnik
    include Singleton
    include HTTParty

    attr_reader :api_key

    base_uri 'http://api.wordnik.com/api'

    def initialize(api_key = nil)
      @api_key = (api_key || File.read('.api-key').strip || '').dup
      self.class.default_params :api_key => @api_key
    end

    def api_key=(api_key)
      @api_key = api_key.dup
    end

    def lookup(word)
      do_request("word.json/#{word.downcase}")
    end

    def define(word, count = 100)
      do_request("word.json/#{word.downcase}/definitions", :count => count)
    end

    def frequency(word)
      do_request("word.json/#{word.downcase}/frequency")
    end

    def examples(word)
      do_request("word.json/#{word.downcase}/examples")
    end

    def autocomplete(word_fragment, count = 100)
      do_request("suggest.json/#{word_fragment.downcase}", :count => count)
    end

    def word_of_the_day
      do_request("wordoftheday.json")
    end

    def random(has_definition = true)
      do_request("words.json/randomWord", :hasDictionaryDef => has_definition)
    end

    protected

    def do_request(request, options = {})
      handle_result(self.class.get("/#{request}", options))
    end

    def handle_result(result)
      if result.is_a?(String)
        raise 'Error in result.'
      else
        result
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wordnik-0.1.0 lib/wordnik/wordnik.rb