class XiamiRadio::User
There is a user as you saw
Attributes
is_vip[R]
level[R]
nick_name[R]
sign[R]
user_id[R]
Public Class Methods
new()
click to toggle source
# File lib/xiami_radio/user.rb, line 11 def initialize @cookie_jar = HTTP::CookieJar.new @cookie_jar.load cookie_file if File.exist? cookie_file get_user_info end
Public Instance Methods
login?()
click to toggle source
# File lib/xiami_radio/user.rb, line 17 def login? !user_id.to_s.empty? end
login_by_email(email, password)
click to toggle source
# File lib/xiami_radio/user.rb, line 21 def login_by_email(email, password) page_uri = login_client.uri(path: '/member/login') form_uri = login_client.uri(path: '/passport/login') login_client.get page_uri, format: :html form_data = { _xiamitoken: xiami_token, done: 'http%3A%2F%2Fwww.xiami.com%2F%2F', verifycode: '', account: email, pw: password, submit: '登录' } login_client.post form_uri, form_data, headers: { 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer' => page_uri.to_s } @cookie_jar.save cookie_file get_user_info end
login_by_member_auth(member_auth)
click to toggle source
# File lib/xiami_radio/user.rb, line 41 def login_by_member_auth(member_auth) uri = client.uri path: '/index/home' @cookie_jar.parse "member_auth=#{member_auth}; path=/; domain=.xiami.com", uri client.get uri, format: :head @cookie_jar.save cookie_file get_user_info end
xiami_token()
click to toggle source
# File lib/xiami_radio/user.rb, line 49 def xiami_token cookie_jar.cookies.select { |c| c.name == '_xiamitoken' }.first&.value end
Private Instance Methods
client()
click to toggle source
# File lib/xiami_radio/user.rb, line 55 def client @client ||= Client.new user: self, headers: { referer:'https://www.xiami.com/index' } end
get_user_info()
click to toggle source
# File lib/xiami_radio/user.rb, line 65 def get_user_info update client.get(client.uri path: '/index/home').dig(:data, :userInfo) Notice.push "欢迎归来 #{nick_name},当前已连续签到 #{sign[:persist_num]} 天", 10 if login? end
login_client()
click to toggle source
# File lib/xiami_radio/user.rb, line 61 def login_client @l_client ||= Client.new user: self, host: Client::LOGIN_HOST end
update(attrs)
click to toggle source
# File lib/xiami_radio/user.rb, line 70 def update(attrs) return false unless attrs.is_a? Hash @nick_name, @level, @user_id, @sign, @is_vip = attrs.values_at :nick_name, :level, :user_id, :sign, :isVip true end