Class: HTTPClients::AccessioningV1Client

Inherits:
BaseClient
  • Object
show all
Defined in:
lib/http_clients/accessioning_v1_client.rb

Overview

Submits records to EBI for accessioning using v1 of their accessioning API.

Usage:

```rb
client = HTTPClients::AccessioningClient.new
accession_number = client.submit_and_fetch_accession_number(login, files)
````

API documentation: https://ena-docs.readthedocs.io/en/latest/submit/general-guide/webin-v1.html

Instance Method Summary collapse

Instance Method Details

#connObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/http_clients/accessioning_v1_client.rb', line 14

 do
  # NOTE: The following attribute is not required for Microarray Genotyping.
  # I think this might be broken and suggests that there should be separate classes for project: one for
  # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping
  # that doesn't.
  include ProjectManager::Associations
  include BudgetDivision::Associations

  custom_attribute(:project_cost_code, required: true)
  custom_attribute(:funding_comments)
  custom_attribute(:collaborators)
  custom_attribute(:external_funding_source)
  custom_attribute(:sequencing_budget_cost_centre)
  custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS)
  custom_attribute(:gt_committee_tracking_id)

  before_validation do |record|
    record.project_cost_code = nil if record.project_cost_code.blank?
    record.project_funding_model = nil if record.project_funding_model.blank?
  end
end

#submit_and_fetch_accession_number(login, files) ⇒ String

Post the submission to the appropriate accessioning service. It will open the payload of the submission and make sure that the payload is closed afterwards.

Parameters:

  • login (Hash{Symbol => String})

    A hash with :username and :password for basic auth.

  • files (Hash{String => File})

    A hash mapping of file type names to open File objects. The filename in the multipart payload will be the part of the file object's name after the first underscore.

Returns:

  • (String)

    The allocated accession number if successful.

Raises:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/http_clients/accessioning_v1_client.rb', line 31

 do
  # NOTE: The following attribute is not required for Microarray Genotyping.
  # I think this might be broken and suggests that there should be separate classes for project: one for
  # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping
  # that doesn't.
  include ProjectManager::Associations
  include BudgetDivision::Associations

  custom_attribute(:project_cost_code, required: true)
  custom_attribute(:funding_comments)
  custom_attribute(:collaborators)
  custom_attribute(:external_funding_source)
  custom_attribute(:sequencing_budget_cost_centre)
  custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS)
  custom_attribute(:gt_committee_tracking_id)

  before_validation do |record|
    record.project_cost_code = nil if record.project_cost_code.blank?
    record.project_funding_model = nil if record.project_funding_model.blank?
  end
end