Class: Packages::Debian::CreatePackageFileService

Inherits:
Object
  • Object
show all
Defined in:
app/services/packages/debian/create_package_file_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(package:, current_user:, params: {}) ⇒ CreatePackageFileService

Returns a new instance of CreatePackageFileService.



6
7
8
9
10
# File 'app/services/packages/debian/create_package_file_service.rb', line 6

def initialize(package:, current_user:, params: {})
  @package = package
  @current_user = current_user
  @params = params
end

Instance Method Details

#executeObject

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/services/packages/debian/create_package_file_service.rb', line 12

def execute
  raise ArgumentError, "Invalid package" unless package.present?
  raise ArgumentError, "Invalid user" unless current_user.present?

  # Debian package file are first uploaded to incoming with empty metadata,
  # and are moved later by Packages::Debian::ProcessPackageFileService
  package_file = package.package_files.create!(
    file: params[:file],
    size: params[:file]&.size,
    file_name: params[:file_name],
    file_sha1: params[:file_sha1],
    file_sha256: params[:file]&.sha256,
    file_md5: params[:file_md5],
    debian_file_metadatum_attributes: {
      file_type: 'unknown',
      architecture: nil,
      fields: nil
    }
  )

  if end_of_new_upload?
    ::Packages::Debian::ProcessPackageFileWorker.perform_async(
      package_file.id,
      params[:distribution],
      params[:component]
    )
  end

  package_file
end