class Yoti::DocScan::Client

Public Class Methods

create_session(session_specification) click to toggle source

Creates a Doc Scan session using the supplied session specification

@param [Yoti::DocScan::Session::Create::SessionSpecification] session_specification

@return [Yoti::DocScan::Session::Create::CreateSessionResult]

# File lib/yoti/doc_scan/client.rb, line 14
def create_session(session_specification)
  Validation.assert_is_a(
    Yoti::DocScan::Session::Create::SessionSpecification,
    session_specification,
    'session_specification'
  )

  request = create_request
            .with_http_method('POST')
            .with_endpoint('sessions')
            .with_payload(session_specification)
            .with_query_param('sdkId', Yoti.configuration.client_sdk_id)
            .build

  begin
    Yoti::DocScan::Session::Create::CreateSessionResult.new(JSON.parse(request.execute.body))
  rescue Yoti::RequestError => e
    raise Yoti::DocScan::Error.wrap(e)
  end
end
delete_media_content(session_id, media_id) click to toggle source

Deletes media related to a Yoti Doc Scan session based on the supplied media ID

@param [String] session_id @param [String] media_id

# File lib/yoti/doc_scan/client.rb, line 122
def delete_media_content(session_id, media_id)
  Validation.assert_is_a(String, session_id, 'session_id')
  Validation.assert_is_a(String, media_id, 'media_id')

  request = create_request
            .with_http_method('DELETE')
            .with_endpoint(media_path(session_id, media_id))
            .with_query_param('sdkId', Yoti.configuration.client_sdk_id)
            .build

  begin
    request.execute
  rescue Yoti::RequestError => e
    raise Yoti::DocScan::Error.wrap(e)
  end
end
delete_session(session_id) click to toggle source

Deletes a previously created Yoti Doc Scan session and all of its related resources

@param [String] session_id

# File lib/yoti/doc_scan/client.rb, line 64
def delete_session(session_id)
  Validation.assert_is_a(String, session_id, 'session_id')

  request = create_request
            .with_http_method('DELETE')
            .with_endpoint(session_path(session_id))
            .with_query_param('sdkId', Yoti.configuration.client_sdk_id)
            .build

  begin
    request.execute
  rescue Yoti::RequestError => e
    raise Yoti::DocScan::Error.wrap(e)
  end
end
get_media_content(session_id, media_id) click to toggle source

Retrieves media related to a Yoti Doc Scan session based on the supplied media ID

@param [String] session_id @param [String] media_id

@return [Yoti::Media|nil]

# File lib/yoti/doc_scan/client.rb, line 89
def get_media_content(session_id, media_id)
  Validation.assert_is_a(String, session_id, 'session_id')
  Validation.assert_is_a(String, media_id, 'media_id')

  request = create_request
            .with_http_method('GET')
            .with_endpoint(media_path(session_id, media_id))
            .with_query_param('sdkId', Yoti.configuration.client_sdk_id)
            .build

  begin
    response = request.execute

    content_type = response.get_fields('content-type')

    return nil if response.code == 204 || content_type.nil?

    Yoti::Media.new(
      response.body,
      content_type[0]
    )
  rescue Yoti::RequestError => e
    raise Yoti::DocScan::Error.wrap(e)
  end
end
get_session(session_id) click to toggle source

Retrieves the state of a previously created Yoti Doc Scan session

@param [String] session_id

@return [Yoti::DocScan::Session::Retrieve::GetSessionResult]

# File lib/yoti/doc_scan/client.rb, line 42
def get_session(session_id)
  Validation.assert_is_a(String, session_id, 'session_id')

  request = create_request
            .with_http_method('GET')
            .with_endpoint(session_path(session_id))
            .with_query_param('sdkId', Yoti.configuration.client_sdk_id)
            .build

  begin
    Yoti::DocScan::Session::Retrieve::GetSessionResult.new(JSON.parse(request.execute.body))
  rescue Yoti::RequestError => e
    raise Yoti::DocScan::Error.wrap(e)
  end
end
supported_documents() click to toggle source

Gets a list of supported documents.

@return [Yoti::DocScan::Support::SupportedDocumentsResponse]

# File lib/yoti/doc_scan/client.rb, line 144
def supported_documents
  request = create_request
            .with_http_method('GET')
            .with_endpoint('supported-documents')
            .build

  begin
    Yoti::DocScan::Support::SupportedDocumentsResponse.new(JSON.parse(request.execute.body))
  rescue Yoti::RequestError => e
    raise Yoti::DocScan::Error.wrap(e)
  end
end

Private Class Methods

create_request() click to toggle source

Create a base Doc Scan request

@return [Yoti::Request]

# File lib/yoti/doc_scan/client.rb, line 183
def create_request
  Yoti::Request
    .builder
    .with_base_url(Yoti.configuration.doc_scan_api_endpoint)
end
media_path(session_id, media_id) click to toggle source

@param [String] session_id @param [String] media_id

@return [String]

# File lib/yoti/doc_scan/client.rb, line 174
def media_path(session_id, media_id)
  "#{session_path(session_id)}/media/#{media_id}/content"
end
session_path(session_id) click to toggle source

@param [String] session_id

@return [String]

# File lib/yoti/doc_scan/client.rb, line 164
def session_path(session_id)
  "sessions/#{session_id}"
end