Sha256: 8b9066ef4a677ec5de9834135b5d342c798c8d199a1f2e09016b3e36a0ebd5b7

Contents?: true

Size: 1.45 KB

Versions: 5

Compression:

Stored size: 1.45 KB

Contents

module Supersaas
  class BaseApi
    attr_accessor :client

    INTEGER_REGEX = /\A[0-9]+\Z/
    DATETIME_REGEX = /\A\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}\Z/

    def initialize(client)
      @client = client
    end

    protected

    def validate_id(value)
      if value.is_a?(Integer)
        value
      elsif value.is_a?(String) && value =~ INTEGER_REGEX
        value.to_i
      else
        raise Supersaas::Exception.new("Invalid id parameter: #{value}. Provide a integer value.")
      end
    end
    def validate_number(value); validate_id(value); end

    def validate_present(value)
      if value.is_a?(String) ? value.size : value
        value
      else
        raise Supersaas::Exception.new("Required parameter is missing.")
      end
    end

    def validate_datetime(value)
      begin
        if value.is_a?(String) && value =~ DATETIME_REGEX
          value
        elsif value.is_a?(Time) || value.is_a?(DateTime)
          value.strftime("%Y-%m-%d %H:%M:%S")
        else
          raise ArgumentError
        end
      rescue ArgumentError
        raise Supersaas::Exception.new("Invalid datetime parameter: #{value}. Provide a Time object or formatted 'YYYY-DD-MM HH:MM:SS' string.")
      end
    end

    def validate_options(value, options)
      if options.include?(value)
        value
      else
        raise Supersaas::Exception.new("Invalid option parameter: #{value}. Must be one of #{options.join(', ')}.")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
supersaas-api-client-1.1.1 lib/supersaas-api-client/api/base_api.rb
supersaas-api-client-1.1.0 lib/supersaas-api-client/api/base_api.rb
supersaas-api-client-1.0.0 lib/supersaas-api-client/api/base_api.rb
supersaas-api-client-0.10.0 lib/supersaas-api-client/api/base_api.rb
supersaas-api-client-0.9.0 lib/supersaas-api-client/api/base_api.rb