31 lines
769 B
Ruby
31 lines
769 B
Ruby
|
module Gitlab
|
||
|
module GitalyClient
|
||
|
class BlobService
|
||
|
def initialize(repository)
|
||
|
@gitaly_repo = repository.gitaly_repository
|
||
|
end
|
||
|
|
||
|
def get_blob(oid:, limit:)
|
||
|
request = Gitaly::GetBlobRequest.new(
|
||
|
repository: @gitaly_repo,
|
||
|
oid: oid,
|
||
|
limit: limit
|
||
|
)
|
||
|
response = GitalyClient.call(@gitaly_repo.storage_name, :blob_service, :get_blob, request)
|
||
|
|
||
|
blob = response.first
|
||
|
return unless blob.oid.present?
|
||
|
|
||
|
data = response.reduce(blob.data.dup) { |memo, msg| memo << msg.data.dup }
|
||
|
|
||
|
Gitlab::Git::Blob.new(
|
||
|
id: blob.oid,
|
||
|
size: blob.size,
|
||
|
data: data,
|
||
|
binary: Gitlab::Git::Blob.binary?(data)
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|