Sha256: f46f0818e2aa37fb6292c087e340a5b08d6bda371050030269223708c08de059

Contents?: true

Size: 1.98 KB

Versions: 7

Compression:

Stored size: 1.98 KB

Contents

module Onebox
  module Engine
    class GithubIssueOnebox
      #Author Lidlanca 2014
      include Engine
      include LayoutSupport
      include JSON
      matches_regexp Regexp.new("^http(?:s)?:\/\/(?:www\.)?(?:(?:\w)+\.)?github\.com\/(?<org>.+)\/(?<repo>.+)\/issues\/([[:digit:]]+)")

      def url
        m = match
        "https://api.github.com/repos/#{m["org"]}/#{m["repo"]}/issues/#{m["item_id"]}"
      end

      private

      def match
         @match ||= @url.match(/^http(?:s)?:\/\/(?:www\.)?(?:(?:\w)+\.)?github\.com\/(?<org>.+)\/(?<repo>.+)\/(?<type>issues)\/(?<item_id>[\d]+)/)
      end

      def data

        @raw ||= ::MultiJson.load(open(url,"Accept"=>"application/vnd.github.v3.text+json",:read_timeout=>timeout )) #custom Accept header so we can get body as text.
        body_text=  @raw["body_text"]


        content_words = body_text.gsub("\n\n","\n").gsub("\n","<br>").split(" ") #one pass of removing double newline, then we change \n to <br> and later on we revert it back to \n this is a workaround to avoid losing newlines after we join it back.
        max_words = 20
        short_content =  content_words[0..max_words].join(" ")
        short_content << "..." if content_words.length > max_words

        status_color = {"open"=>"#6cc644","closed"=>"#bd2c00","merged"=>"#6e5494"}
        result = { link: @url,
                   title: "Issue: " + @raw["title"],
                   content:short_content.gsub("<br>","\n"),
                   labels: @raw["labels"],
                   user: @raw['user'],
                   created_at: @raw['created_at'].split("T")[0], #get only date for now
                   closed_at: (@raw['closed_at'].nil? ? "" : @raw['closed_at'].split("T")[0] ) ,
                   closed_by: @raw['closed_by'],
                   # avatar: "https://www.gravatar.com/avatar/#{@raw['user']['gravatar_id']}?s=128",
                   avatar:"https://avatars1.githubusercontent.com/u/#{@raw['user']['id']}?v=2&s=96"
                  }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
onebox-1.5.13 lib/onebox/engine/github_issue_onebox.rb
onebox-1.5.12 lib/onebox/engine/github_issue_onebox.rb
onebox-1.5.11 lib/onebox/engine/github_issue_onebox.rb
onebox-1.5.10 lib/onebox/engine/github_issue_onebox.rb
onebox-1.5.9 lib/onebox/engine/github_issue_onebox.rb
onebox-1.5.8 lib/onebox/engine/github_issue_onebox.rb
onebox-1.5.7 lib/onebox/engine/github_issue_onebox.rb