Sha256: b5e2e9fab076be30e76320fd26079d0061337562ad599f9153339e623d09b663

Contents?: true

Size: 1.38 KB

Versions: 28

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module FinApps
  module REST
    class PortfoliosConsumers < FinAppsCore::REST::Resources
      include FinApps::Utils::QueryBuilder

      def list(portfolio_id, params = nil)
        not_blank(portfolio_id, :portfolio_id)

        path = build_path(portfolio_id)
        return super path if params.nil?

        raise FinAppsCore::InvalidArgumentsError, 'Invalid argument: params' unless params.is_a? Hash

        super build_query_path(path, params)
      end

      def create(portfolio_id, params)
        not_blank(portfolio_id, :portfolio_id)
        not_blank(params, :params)

        return super nil, build_path(portfolio_id, params) if params.is_a?(String) # Single Consumer Subscribe

        # Array Consumer Subscribe
        super params, build_path(portfolio_id)
      end

      def destroy(portfolio_id, consumer_id)
        not_blank(portfolio_id, :portfolio_id)
        not_blank(consumer_id, :consumer_id)

        # Single Consumer Unsubscribe Only
        super nil, build_path(portfolio_id, consumer_id)
      end

      private

      def build_path(portfolio_id, consumer_id = nil)
        consumer_path =
          if consumer_id
            "consumers/#{ERB::Util.url_encode(consumer_id)}"
          else
            'consumers'
          end
        "portfolios/#{ERB::Util.url_encode(portfolio_id)}/" + consumer_path
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
finapps-5.0.32 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.31 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.30 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.29 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.28 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.27 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.26 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.25 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.24 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.23 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.22 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.21 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.20 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.19 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.17 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.16 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.15 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.14 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.13 lib/finapps/rest/portfolios_consumers.rb
finapps-5.0.12 lib/finapps/rest/portfolios_consumers.rb