discourse/lib/onebox/engine/gitlab_blob_onebox.rb
Martin Brennan 560e8aff75
FEATURE: Allow oneboxing private GitHub URLs (#27705)
This commit adds the ability to onebox private GitHub
commits, pull requests, issues, blobs, and actions using
a new `github_onebox_access_token` site setting. The token
must be set up in correctly to have access to the repos needed.

To do this successfully with the Oneboxer, we need to skip
redirects on the github.com host, otherwise we get a 404
on the URL before it is translated into a GitHub API URL
and has the appropriate headers added.
2024-07-10 09:39:31 +10:00

43 lines
965 B
Ruby

# frozen_string_literal: true
require_relative "../mixins/git_blob_onebox"
module Onebox
module Engine
class GitlabBlobOnebox
def self.git_regexp
%r{^https?://(www\.)?gitlab\.com.*/blob/}
end
def self.onebox_name
"gitlabblob"
end
include Onebox::Mixins::GitBlobOnebox
def i18n
{
truncated_file: I18n.t("onebox.gitlab.truncated_file"),
show_original: I18n.t("onebox.gitlab.show_original"),
}
end
def raw_regexp
%r{gitlab\.com/(?<user>[^/]+)/(?<repo>[^/]+)/blob/(?<sha1>[^/]+)/(?<file>[^#]+)(#(L(?<from>[^-]*)(-L(?<to>.*))?))?}mi
end
def raw_template(m)
"https://gitlab.com/#{m[:user]}/#{m[:repo]}/raw/#{m[:sha1]}/#{m[:file]}"
end
def title
Sanitize.fragment(Onebox::Helpers.uri_unencode(link).sub(%r{^https?\://gitlab\.com/}, ""))
end
def auth_headers
{}
end
end
end
end