gitlab-org--gitlab-foss/lib/gitlab/gitaly_client/blob_service.rb

38 lines
822 B
Ruby
Raw Normal View History

2017-07-07 10:45:52 -04:00
module Gitlab
module GitalyClient
2017-07-18 03:59:36 -04:00
class BlobService
2017-07-07 10:45:52 -04:00
def initialize(repository)
@gitaly_repo = repository.gitaly_repository
end
2017-07-18 03:59:36 -04:00
2017-07-07 10:45:52 -04:00
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)
2017-08-16 08:29:27 -04:00
data = ''
blob = nil
response.each do |msg|
if blob.nil?
blob = msg
end
2017-07-07 10:45:52 -04:00
2017-08-16 08:29:27 -04:00
data << msg.data
end
return nil if blob.oid.blank?
2017-07-07 10:45:52 -04:00
Gitlab::Git::Blob.new(
id: blob.oid,
size: blob.size,
data: data,
binary: Gitlab::Git::Blob.binary?(data)
)
end
end
end
end