Sha256: 66ef9573a29afb4d0a4b3b9e4ed0c3cd529e7072979737ea5f19e56ef589d7e2

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

module LinkShrink
  module Shrinkers
    # @author Jonah Ruiz <jonah@pixelhipsters.com>
    # Implements Karmacracy's URL Shortener API
    class Karmacracy < Base
      # Defines response structure to be parsed
      response_options do
        collection 'data'
        short_url  'url'
      end

      # Returns URL base for API
      # @return [String] api base url
      def base_url
        'http://kcy.me/api/'
      end

      # Returns URL query parameters
      # @return [String] query parameters to be used in request
      def api_query_parameter
        "?u=#{api_username}&key=#{api_key}&format=json&url=#{url}"
      end

      # Returns full api url
      # @return [String] full api url with query parameters
      def api_url
        base_url.concat api_query_parameter
      end

      # Predicate method for checking if the API key exists
      # @return [TrueClass, FalseClass]
      def api_username?
        ENV.has_key?("#{sub_klass.upcase}_USERNAME")
      end

      # Returns API Key
      # @return [String] API key or nil
      def api_username
        api_username? ? ENV["#{sub_klass.upcase}_USERNAME"] : nil
      end

      def sanitize_url(new_url)
        URI::encode(new_url)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
link_shrink-0.0.8 lib/link_shrink/shrinkers/karmacracy.rb