require_dependency 'oneboxer/handlebars_onebox'

module Oneboxer
  class GistOnebox < HandlebarsOnebox

    matcher /^https?:\/\/gist\.github\.com/
    favicon 'github.png'

    def translate_url
      m = @url.match(/gist\.github\.com\/([^\/]+\/)?(?<id>[0-9a-f]+)/mi)
      return "https://api.github.com/gists/#{m[:id]}" if m
    end

    def parse(data)
      parsed = JSON.parse(data)
      desc = parsed['description']
      if desc.length > 120
        desc = desc[0..120]
        desc << "..."
      end
      result = {files: [], title: desc}
      parsed['files'].each do |filename, attrs|
        result[:files] << {filename: filename}.merge!(attrs)
      end
      result
    end

  end
end