Sha256: 4565c2326b680c3ba47d00849cfa8b46d1e15c3782bca54f6c42b86c2288dcc1

Contents?: true

Size: 1.28 KB

Versions: 19

Compression:

Stored size: 1.28 KB

Contents

class Zendesk2::Client::SearchOrganization < Zendesk2::Client::Request
  request_method :get
  request_path { "/search.json" }
  request_body { |r| { "query" => r.query } }

  attr_reader :query

  page_params!

  def _mock(query, params={})
    @query = query
    setup(params)
    mock
  end

  def _real(query, params={})
    @query = query
    setup(params)
    real
  end

  def mock
    terms = Hash[query.split(" ").map { |t| t.split(":") }]
    terms.delete("type") # context already provided

    collection = self.data[:organizations].values

    # organization name is fuzzy matched
    if organization_name = terms.delete("name")
      terms.merge!("name" => "*#{organization_name}*")
    end

    compiled_terms = terms.inject({}) do |r,(term, raw_condition)|
      condition = if raw_condition.include?("*")
                    Regexp.compile(raw_condition.gsub("*", ".*"), Regexp::IGNORECASE)
                  else
                    raw_condition
                  end
      r.merge(term => condition)
    end

    results = collection.select do |v|
      compiled_terms.all? do |term, condition|
        condition.is_a?(Regexp) ? condition.match(v[term.to_s]) : v[term.to_s].to_s == condition.to_s
      end
    end

    page(results, params: {"query" => query}, root: "results")
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
zendesk2-1.7.5 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.7.4 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.7.2 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.7.1 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.7.0 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.6.1 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.17 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.16 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.15 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.14 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.13 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.12 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.11 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.10 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.9 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.8 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.7 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.6 lib/zendesk2/client/requests/search_organization.rb
zendesk2-1.5.5 lib/zendesk2/client/requests/search_organization.rb