Class: NiconicoSearch::Client
- Inherits:
-
Object
- Object
- NiconicoSearch::Client
- Defined in:
- lib/niconico_search/client.rb
Instance Method Summary collapse
- #build_query(query:, targets:, options:) ⇒ Object
- #default_options ⇒ Object
- #header ⇒ Object
-
#initialize(app = nil) ⇒ Client
constructor
A new instance of Client.
- #parse_targets(targets) ⇒ Object
- #search(query:, targets:, options: {}) ⇒ Object
Constructor Details
#initialize(app = nil) ⇒ Client
Returns a new instance of Client.
11 12 13 |
# File 'lib/niconico_search/client.rb', line 11 def initialize(app = nil) @app = app end |
Instance Method Details
#build_query(query:, targets:, options:) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/niconico_search/client.rb', line 27 def build_query(query:, targets:, options:) [:q] = query [:targets] = targets.join(",") = .merge() [:fields] = [:fields].join(",") end |
#default_options ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/niconico_search/client.rb', line 35 def { fields: [ :contentId, :title, :description, :tags, :viewCounter ], _sort: "-viewCounter", _context: @app } end |
#header ⇒ Object
49 50 51 |
# File 'lib/niconico_search/client.rb', line 49 def header { "User-Agent" => @app } end |
#parse_targets(targets) ⇒ Object
53 54 55 |
# File 'lib/niconico_search/client.rb', line 53 def parse_targets(targets) targets.join(",") end |
#search(query:, targets:, options: {}) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/niconico_search/client.rb', line 15 def search(query:, targets:, options: {}) fail ArgumentError, "query is required" if query.nil? fail ArgumentError, "target is required" if targets.nil? || targets.length <= 0 uri = URI.parse("http://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search") uri.query = URI.encode_www_form(build_query(query: query, targets: targets, options: )) res = uri.open(header).read response = JSON.parse(res).deep_symbolize_keys fail ::ResponseError, "HTTP status error #{response[:meta][:status]}" if response[:meta][:status] != 200 response[:data].map { |r| NiconicoSearch::Result.new(r) } end |