class BilibiliSunday::Client

Constants

DEFAULT_HOST
DEFAULT_PORT

Public Class Methods

new(host = nil, port = nil, working_dir = nil) click to toggle source
# File lib/bilibili_sunday/client.rb, line 13
def initialize(host = nil, port = nil, working_dir = nil)
        @host = host || DEFAULT_HOST
        @port = port || DEFAULT_PORT
end

Public Instance Methods

active_videos() click to toggle source
# File lib/bilibili_sunday/client.rb, line 34
def active_videos
        rpc_call('active_videos', [])
end
all_videos() click to toggle source
# File lib/bilibili_sunday/client.rb, line 30
def all_videos
        rpc_call('all_videos', [])
end
cid_for_video_url(url) click to toggle source
# File lib/bilibili_sunday/client.rb, line 18
def cid_for_video_url(url)
        rpc_call('cid_for_video_url', [url])
end
query_status(cid) click to toggle source
# File lib/bilibili_sunday/client.rb, line 38
def query_status(cid)
        rpc_call('query_status', [cid])
end
remove_cache(cid) click to toggle source
# File lib/bilibili_sunday/client.rb, line 42
def remove_cache(cid)
        rpc_call('remove_cache', [cid])
end
request_cache(cid) click to toggle source
# File lib/bilibili_sunday/client.rb, line 26
def request_cache(cid)
        rpc_call('request_cache', [cid])
end
title_for_video_url(url) click to toggle source
# File lib/bilibili_sunday/client.rb, line 22
def title_for_video_url(url)
        rpc_call('title_for_video_url', [url])
end

Private Instance Methods

get(url, params = {}) click to toggle source
# File lib/bilibili_sunday/client.rb, line 48
def get(url, params = {})
        uri = URI.parse(url)

        uri.query = URI.encode_www_form(params)

        http = Net::HTTP.new(uri.host, uri.port)
        request = Net::HTTP::Get.new(uri.request_uri)

        response = http.request(request)

        {
                'code' => response.code.to_i, 
                'body' => response.body
        }
end
rpc_call(method, params) click to toggle source
# File lib/bilibili_sunday/client.rb, line 68
def rpc_call(method, params)
        method = "bilibili_sunday.#{method}"
        id = 'bilibili_sunday_client'
        params_encoded = Base64.encode64(JSON.generate(params))

        response = get("#{rpc_path}", {'method' => method, 'id' => id, 'params' => params_encoded})
        answer = JSON.parse(response['body'])

        if response['code'] == 200
                answer['result']
        else
                raise "BilibiliSunday Server error #{answer['error']['code'].to_i}: #{answer['error']['message']}"
        end
end
rpc_path() click to toggle source
# File lib/bilibili_sunday/client.rb, line 64
def rpc_path
        "http://#{@host}:#{@port}/jsonrpc"
end