Class: ExUA::Client

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/ex_ua/client.rb

Constant Summary collapse

KNOWN_BASE_CATEGORIES =
%w[video audio images texts games software]

Instance Method Summary collapse

Instance Method Details

#available_languagesArray<String>

List of available languages

Returns:

  • (Array<String>)


33
34
35
# File 'lib/ex_ua/client.rb', line 33

def available_languages
  @available_langauges ||= get('/').search('select[name=lang] option').inject({}){|acc,el| acc[el.attributes["value"].value]=el.text;acc}
end

#base_categories(lang) ⇒ Array<ExUA::Category>

List of base categories for a given language @param lang Language

Examples:

Usage

client.base_categories('ru')

Returns:



42
43
44
# File 'lib/ex_ua/client.rb', line 42

def base_categories(lang)
  KNOWN_BASE_CATEGORIES.map{|cat| Category.new(url: "/#{lang}/#{cat}")}
end

#get(request_uri) ⇒ Object



56
57
58
# File 'lib/ex_ua/client.rb', line 56

def get(request_uri)
  Nokogiri.parse(HTTParty.get(Addressable::URI.join(ExUA::BASE_URL,request_uri).to_s).body)
end

#search(text, page = 0, per = 20) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/ex_ua/client.rb', line 46

def search(text, page=0, per=20)
  uri = Addressable::URI.parse("/search?#{Addressable::URI.form_encode(s: text, p: page, per: per)}")
  page = get(uri)
  page.search('table.panel tr td').map do |s|
    s.search('a')[1]
  end.compact.map do |link|
    ExUA::Category.new(url: link.attributes['href'], name: link.text)
  end
end