require 'net/http'
require 'uri'

module Jekyll

  class RemoteFileContent < Liquid::Tag

    def initialize(tag_name, markup, tokens)
      url = markup

      puts 'Fetching content of url: ' + url

      if url =~ URI::regexp
        @content = fetchContent(url)
      else
        raise 'Invalid URL passed to RemoteFileContent'
      end

      super
    end

    def render(context)
      if @content
        @content
      else
        raise 'Something went wrong in RemoteFileContent'
      end
    end

    def fetchContent(url)
      Net::HTTP.get(URI.parse(url.strip))
    end
  end
end

Liquid::Template.register_tag('remote_file_content', Jekyll::RemoteFileContent)
