# 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\/(?.+)\/(?.+)\/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\/(?.+)\/(?.+)\/(?issues)\/(?[\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