Sha256: 024923181f559951b4bcfa0fc234119ba5acdb74c6312494987e2162d8a6117e

Contents?: true

Size: 1.86 KB

Versions: 65

Compression:

Stored size: 1.86 KB

Contents

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

      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

        ulink = URI(link)
        {
          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://avatars1.githubusercontent.com/u/#{@raw['user']['id']}?v=2&s=96",
          domain: "#{ulink.host}/#{ulink.path.split('/')[1]}/#{ulink.path.split('/')[2]}",
        }
      end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
onebox-1.8.89 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.88 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.87 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.86 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.85 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.84 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.83 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.82 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.81 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.80 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.79 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.78 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.77 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.76 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.75 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.74 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.73 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.72 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.71 lib/onebox/engine/github_issue_onebox.rb
onebox-1.8.70 lib/onebox/engine/github_issue_onebox.rb