Sha256: c4d388fc4dab42108e6f334abbac16482a84a49efa091ad9118629cb3a6aef44

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

require 'credova/api'

module Credova
  class FFL < Base

    include Credova::API

    CREATE_ATTRS = {
      permitted: %i( license_number expiration address address_2 city state zip ).freeze,
      required:  %i( license_number expiration address city state zip ).freeze,
    }

    ENDPOINTS = {
      create:          "federallicense".freeze,
      find:            "federallicense/licensenumber/%s".freeze,
      upload_document: "federallicense/%s/uploadfile".freeze,
    }

    def initialize(client)
      @client = client
    end

    def create(ffl_data)
      requires!(ffl_data, *CREATE_ATTRS[:required])

      ffl_data[:expiration] = ffl_data[:expiration].strftime('%Y/%m/%d')
      endpoint = ENDPOINTS[:create]
      headers  = [
        *auth_header(@client.access_token),
        *content_type_header('application/json'),
      ].to_h

      ffl_data = standardize_body_data(ffl_data, CREATE_ATTRS[:permitted])

      post_request(endpoint, ffl_data, headers)
    end

    def find(license_number)
      endpoint = ENDPOINTS[:find] % license_number

      get_request(endpoint, auth_header(@client.access_token))
    end

    def upload_document(ffl_public_id, ffl_file_data)
      requires!(ffl_file_data, *FILE_UPLOAD_ATTRS[:required])

      endpoint = ENDPOINTS[:upload_document] % ffl_public_id

      post_file_request(endpoint, ffl_file_data, auth_header(@client.access_token))
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
credova-0.3.3 lib/credova/ffl.rb
credova-0.3.2 lib/credova/ffl.rb
credova-0.3.1 lib/credova/ffl.rb
credova-0.3.0 lib/credova/ffl.rb