Sha256: 8eac37b978c32633e7aafef1d9d865981dab55370073623b298b6f074ea457fa

Contents?: true

Size: 1.68 KB

Versions: 7

Compression:

Stored size: 1.68 KB

Contents

# frozen_string_literal: true

require_relative '../mixins/github_body'

module Onebox
  module Engine
    class GithubIssueOnebox
      #Author Lidlanca 2014
      include Engine
      include LayoutSupport
      include JSON
      include Onebox::Mixins::GithubBody

      matches_regexp(/^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
        created_at = Time.parse(raw['created_at'])
        closed_at = Time.parse(raw['closed_at']) if raw['closed_at']
        body, excerpt = compute_body(raw['body'])
        ulink = URI(link)

        {
          link: @url,
          title: raw["title"],
          body: body,
          excerpt: excerpt,
          labels: raw["labels"],
          user: raw['user'],
          created_at: created_at.strftime("%I:%M%p - %d %b %y %Z"),
          created_at_date: created_at.strftime("%F"),
          created_at_time: created_at.strftime("%T"),
          closed_at: closed_at&.strftime("%I:%M%p - %d %b %y %Z"),
          closed_at_date: closed_at&.strftime("%F"),
          closed_at_time: closed_at&.strftime("%T"),
          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

7 entries across 7 versions & 1 rubygems

Version Path
onebox-2.2.19 lib/onebox/engine/github_issue_onebox.rb
onebox-2.2.18 lib/onebox/engine/github_issue_onebox.rb
onebox-2.2.17 lib/onebox/engine/github_issue_onebox.rb
onebox-2.2.16 lib/onebox/engine/github_issue_onebox.rb
onebox-2.2.15 lib/onebox/engine/github_issue_onebox.rb
onebox-2.2.14 lib/onebox/engine/github_issue_onebox.rb
onebox-2.2.13 lib/onebox/engine/github_issue_onebox.rb