Sha256: 8ecab77be33d6f975974fa0fd144f57fc25631e5d065653667887bd8a12874e2

Contents?: true

Size: 927 Bytes

Versions: 6

Compression:

Stored size: 927 Bytes

Contents

require 'poms/timestamp'

module Poms
  module Api
    # Map search parameters to POMS specific format
    module Search
      TIME_PARAMS = {
        starts_at: 'begin',
        ends_at: 'end'
      }.freeze

      module_function

      # Helper function for returning and empty body.
      def empty
        {}
      end

      def build(options)
        return {} if options.empty?
        all = options.map do |key, value|
          case key
          when :starts_at, :ends_at
            time_params(key, value)
          when :type
            { 'searches' => { 'types' => value } }
          end
        end
        all.reduce(&:deep_merge)
      end

      def time_params(key, value)
        {
          'searches' => {
            'sortDates' => {
              TIME_PARAMS[key] => Timestamp.to_unix_ms(value)
            }
          }
        }
      end

      private_class_method :time_params
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
poms-2.6.0 lib/poms/api/search.rb
poms-2.5.1 lib/poms/api/search.rb
poms-2.5.0 lib/poms/api/search.rb
poms-2.4.0 lib/poms/api/search.rb
poms-2.3.1 lib/poms/api/search.rb
poms-2.3.0 lib/poms/api/search.rb