Sha256: 04bf434129871da88f9e0c6df77d64c66fedb0e0a15568a0732594bfea3b7605

Contents?: true

Size: 1.32 KB

Versions: 9

Compression:

Stored size: 1.32 KB

Contents

module LinkedIn

  module Search
    def search(options={}, type='people')

      path = "/#{type.to_s}-search"

      if options.is_a?(Hash)
        fields = options.delete(:fields)
        path += field_selector(fields) if fields
      end

      options = { :keywords => options } if options.is_a?(String)
      options = format_options_for_query(options)

      result_json = get(to_uri(path, options))

      Mash.from_json(result_json)
    end

    private

      def format_options_for_query(opts)
        opts.inject({}) do |list, kv|
          key, value = kv.first.to_s.gsub("_","-"), kv.last
          list[key]  = sanitize_value(value)
          list
        end
      end

      def sanitize_value(value)
        value = value.join("+") if value.is_a?(Array)
        value = value.gsub(" ", "+") if value.is_a?(String)
        value
      end

      def field_selector(fields)
        result = ":("
        fields = fields.to_a.map do |field|
          if field.is_a?(Hash)
            innerFields = []
            field.each do |key, value|
              innerFields << key.to_s.gsub("_","-") + field_selector(value)
            end
            innerFields.join(',')
          else
            field.to_s.gsub("_","-")
          end
        end
        result += fields.join(',')
        result += ")"
        result
      end
  end

end

Version data entries

9 entries across 9 versions & 3 rubygems

Version Path
linkedin-0.4.6 lib/linked_in/search.rb
linkedin-0.4.4 lib/linked_in/search.rb
linkedin-0.4.3 lib/linked_in/search.rb
linkedin-0.4.2 lib/linked_in/search.rb
linkedin-0.4.1 lib/linked_in/search.rb
linkedin-0.4.0 lib/linked_in/search.rb
linkedin-0.3.7 lib/linked_in/search.rb
linkedin-drspin-0.3.6 lib/linked_in/search.rb
brienw-linkedin-0.3.7 lib/linked_in/search.rb