Class: HTTPClients::AccessioningV1Client
- Inherits:
-
BaseClient
- Object
- BaseClient
- HTTPClients::AccessioningV1Client
- 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(submission) ““
API documentation: ena-docs.readthedocs.io/en/latest/submit/general-guide/webin-v1.html
Instance Method Summary collapse
- #conn ⇒ Object
-
#submit_and_fetch_accession_number(login, files) ⇒ String
Post the submission to the appropriate accessioning service.
Instance Method Details
#conn ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/http_clients/accessioning_v1_client.rb', line 14 def conn url = configatron.accession.url @conn ||= Faraday.new(url:, headers:, proxy:) do |f| f.request :multipart f.request :url_encoded 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.
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/http_clients/accessioning_v1_client.rb', line 31 def submit_and_fetch_accession_number(login, files) # Clone the base connection and add basic auth for this request conn_with_auth = conn.dup conn_with_auth.request :authorization, :basic, login[:user], login[:password] payload = build_payload(files) response = conn_with_auth.post('', payload) # POST to the given API root with the payload as the body raise_if_failed(response) extract_accession_number(response.body) end |