Sha256: 024efbd2c38aabe353aac6589895d1dfda6dfffc88d8ddcfd43b6f93eabed30d

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

module ZohoHub
  class Response
    def initialize(params)
      @params = params || {}
    end

    def invalid_data?
      error_code?('INVALID_DATA')
    end

    def invalid_token?
      error_code?('INVALID_TOKEN')
    end

    def authentication_failure?
      error_code?('AUTHENTICATION_FAILURE')
    end

    def invalid_module?
      error_code?('INVALID_MODULE')
    end

    def no_permission?
      error_code?('NO_PERMISSION')
    end

    def mandatory_not_found?
      error_code?('MANDATORY_NOT_FOUND')
    end

    def record_in_blueprint?
      error_code?('RECORD_IN_BLUEPRINT')
    end

    def empty?
      @params.empty?
    end

    def data
      data = @params[:data] if @params.dig(:data)
      data || @params
    end

    def msg
      first_data = data.is_a?(Array) ? data.first : data
      msg = first_data[:message]

      if first_data.dig(:details, :expected_data_type)
        expected = first_data.dig(:details, :expected_data_type)
        field = first_data.dig(:details, :api_name)
        parent_api_name = first_data.dig(:details, :parent_api_name)

        msg << ", expected #{expected} for '#{field}'"
        msg << " in #{parent_api_name}" if parent_api_name
      end

      msg
    end

    # error response examples:
    # {"data":[{"code":"INVALID_DATA","details":{},"message":"the id given seems to be invalid","status":"error"}]}
    # {:code=>"INVALID_TOKEN", :details=>{}, :message=>"invalid oauth token", :status=>"error"}
    def error_code?(code)
      if data.is_a?(Array)
        return false if data.size > 1
        return data.first[:code] == code
      end

      data[:code] == code
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zoho_hub-0.4.0 lib/zoho_hub/response.rb