Sha256: cd2c0010468c6e6cfdff6cc6310048bb26ba00c7cb4f97ab421069d493af2127

Contents?: true

Size: 972 Bytes

Versions: 1

Compression:

Stored size: 972 Bytes

Contents

require 'json'
require 'uri'
require 'net/http'
require 'net/https' # ruby 1.8.7 requires explicitly require net/https

module Jekyll
  module Drivers
    class JsonDriver
      def initialize(options)
        @url = options['url']

        if !@url
          raise FatalException.new "'url' must be specified for json data source: #{options['name']}."
        end

        if @url !~ URI::regexp || URI(@url).scheme !~ /^http|https$/
          raise FatalException.new "incorrect json data source url: #{@url}"
        end
      end

      def load
        uri = URI(@url)

        if uri.scheme == 'https'
          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE

          request = Net::HTTP::Get.new(uri.request_uri)
          response = http.request(request).body
        else
          response = Net::HTTP.get(uri)
        end

        JSON.parse(response)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
monad-0.0.3 lib/jekyll/drivers/json_driver.rb