Sha256: a0cdb506fefdaeafa985d080a26a04ff1c493e8b957d5e0a6116162bc871224b

Contents?: true

Size: 1.49 KB

Versions: 7

Compression:

Stored size: 1.49 KB

Contents

require 'credova/api'

module Credova
  class FFL < Base

    include Credova::API

    REQUIRED_CREATE_ATTRS = %i( license_number expiration address_one city state zip )
    ENDPOINTS = {
      create:          "federallicense".freeze,
      upload_document: "federallicense/%s/uploadfile".freeze,
    }

    def initialize(client)
      @client = client
    end

    def create(options = {})
      requires!(options, REQUIRED_CREATE_ATTRS)

      endpoint = ENDPOINTS[:create]
      data = format_data_for_create(options)
      headers  = [
        *auth_header(@client.access_token),
        *content_type_header('application/json'),
      ].to_h

      post_request(endpoint, data, headers)
    end

    def upload_document(ffl_public_id, ffl_document_url)
      endpoint = ENDPOINTS[:upload_document] % ffl_public_id
      data     = { form_data: ['file=@', ffl_document_url, '; type=application/', extract_file_extension(ffl_document_url)].join }
      headers  = [
        *auth_header(@client.access_token),
        *content_type_header('multipart/form-data'),
      ].to_h

      post_request(endpoint, data, headers)
    end

    private

    def format_data_for_create(data)
      {
        licenseNumber: data[:license_number],
        expiration:    data[:expiration].strftime('%Y/%m/%d'),
        address:       data[:address_one],
        address2:      data[:address_two],
        city:          data[:city],
        state:         data[:state],
        zip:           data[:zip],
      }
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
credova-0.1.7 lib/credova/ffl.rb
credova-0.1.6 lib/credova/ffl.rb
credova-0.1.5 lib/credova/ffl.rb
credova-0.1.4 lib/credova/ffl.rb
credova-0.1.3 lib/credova/ffl.rb
credova-0.1.2 lib/credova/ffl.rb
credova-0.1.1 lib/credova/ffl.rb