Class: Manhunt::Session
- Inherits:
-
Object
- Object
- Manhunt::Session
- Defined in:
- lib/manhunt/session.rb
Constant Summary collapse
- LOGIN_PAGE_REGEX =
/<form id="login" name="login" method="post" action="\/">/
Instance Attribute Summary collapse
-
#language ⇒ Object
readonly
Returns the value of attribute language.
-
#username ⇒ Object
readonly
Returns the value of attribute username.
Class Method Summary collapse
Instance Method Summary collapse
- #compose(user, user_id, reply_message_id = nil) ⇒ Object
- #create ⇒ Object
- #folder(name) ⇒ Object
- #folders ⇒ Object
- #get_binary(url) ⇒ Object
- #get_document(url) ⇒ Object
- #get_object(url) ⇒ Object
-
#initialize(username, password, language = 'en') ⇒ Session
constructor
A new instance of Session.
- #login ⇒ Object
- #photo_content(profile_id, photo_id, size = "med") ⇒ Object
- #post_nil(url, object = nil) ⇒ Object
- #post_object(url, object) ⇒ Object
- #prepare_request(request) ⇒ Object
- #request_nil(url, method, object = nil) ⇒ Object
- #request_object(url, method, object = nil) ⇒ Object
- #send_message(params) ⇒ Object
- #unlock_photos(user) ⇒ Object
- #unread_count ⇒ Object
- #user(name) ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(username, password, language = 'en') ⇒ Session
Returns a new instance of Session.
9 10 11 12 13 14 15 16 |
# File 'lib/manhunt/session.rb', line 9 def initialize(username, password, language = 'en') @username = username @password = password @language = language @cookies = { 'MHLogin' => '1', '__utma' => '179992888.1977247352.1264973581.1267729320.1267734788.33', '__utmb' => '179992888.15.10.1267734788', '__utmc' => '179992888', '__utmz' => '179992888.1264973581.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' } end |
Instance Attribute Details
#language ⇒ Object (readonly)
Returns the value of attribute language.
7 8 9 |
# File 'lib/manhunt/session.rb', line 7 def language @language end |
#username ⇒ Object (readonly)
Returns the value of attribute username.
6 7 8 |
# File 'lib/manhunt/session.rb', line 6 def username @username end |
Class Method Details
Instance Method Details
#compose(user, user_id, reply_message_id = nil) ⇒ Object
166 167 168 |
# File 'lib/manhunt/session.rb', line 166 def compose(user, user_id, = nil) Manhunt::Message.compose(self, user, user_id, ) end |
#create ⇒ Object
26 27 28 29 |
# File 'lib/manhunt/session.rb', line 26 def create @login_options = { 'loginLang' => @language, 'rememberLogin' => false, 'name' => @username, 'pass' => @password, 'skinId' => 'mh', 'canChat' => false } login end |
#folder(name) ⇒ Object
148 149 150 |
# File 'lib/manhunt/session.rb', line 148 def folder(name) ManhuntFolder.new(self, name) end |
#folders ⇒ Object
142 143 144 145 146 |
# File 'lib/manhunt/session.rb', line 142 def folders @folders = ['inbox', 'sent', 'saved', 'trash'].map do |name| ManhuntFolder.new(self, name) end end |
#get_binary(url) ⇒ Object
101 102 103 104 105 106 107 |
# File 'lib/manhunt/session.rb', line 101 def get_binary(url) puts " \e[1;#{color}mBinary Load (0.0s) \e[1;30m#{url}\e[0m" request = Net::HTTP::Get.new(url) request['Accept'] = 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' prepare_request(request) end |
#get_document(url) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/manhunt/session.rb', line 87 def get_document(url) RAILS_DEFAULT_LOGGER.info " \e[1;#{color}mDocument Load (0.0s) \e[1;30m#{url}\e[0m" request = Net::HTTP::Get.new(url) request['Accept'] = 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' result = prepare_request(request) if block_given? Hpricot(yield(result.body)) else Hpricot(result.body) end end |
#get_object(url) ⇒ Object
46 47 48 49 |
# File 'lib/manhunt/session.rb', line 46 def get_object(url) RAILS_DEFAULT_LOGGER.info " \e[1;#{color}mObject Load (0.0s) \e[1;30m#{url}\e[0m" request_object(url, :get) end |
#login ⇒ Object
31 32 33 34 35 36 |
# File 'lib/manhunt/session.rb', line 31 def login @login_options ||= { 'loginLang' => @language, 'rememberLogin' => false, 'name' => @username, 'pass' => @password, 'skinId' => 'mh', 'canChat' => false } result = post_object('/user/janusLookup', @login_options) @valid = result["handleError"] == 'success' end |
#photo_content(profile_id, photo_id, size = "med") ⇒ Object
152 153 154 |
# File 'lib/manhunt/session.rb', line 152 def photo_content(profile_id, photo_id, size = "med") ManhuntPhoto.content(self, profile_id, photo_id, size) end |
#post_nil(url, object = nil) ⇒ Object
65 66 67 |
# File 'lib/manhunt/session.rb', line 65 def post_nil(url, object = nil) request_nil(url, :post, object) end |
#post_object(url, object) ⇒ Object
42 43 44 |
# File 'lib/manhunt/session.rb', line 42 def post_object(url, object) request_object(url, :post, object) end |
#prepare_request(request) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/manhunt/session.rb', line 109 def prepare_request(request) request["Cookie"] = @cookies.map{|key, value| "#{key}=#{value}"}.join('; ') request["Referer"] = 'http://www.manhunt.net/welcome' request["User-Agent"] = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/533.1+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10' request['Accept-Language'] = 'Accept-Language: en-us' result = Net::HTTP.new('www.manhunt.net', 80).start { |http| http.request(request) } if result['Set-Cookie'] result.get_fields('Set-Cookie').each do || data = .split(';')[0] key = data.split('=')[0] value = data.split('=')[1] @cookies[key] = value end end if LOGIN_PAGE_REGEX.match(result.body) login result = Net::HTTP.new('www.manhunt.net', 80).start { |http| http.request(request) } end result end |
#request_nil(url, method, object = nil) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/manhunt/session.rb', line 69 def request_nil(url, method, object = nil) RAILS_DEFAULT_LOGGER.info " \e[1;#{color}m#{method.to_s.capitalize} Save (0.0s) \e[1;30m#{url} - #{object.inspect if object}\e[0m" case method when :get request = Net::HTTP::Get.new(url) when :post request = Net::HTTP::Post.new(url) end request['Accept'] = 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' request['Content-Type'] = 'application/x-www-form-urlencoded' if method == :post request.form_data = object if object result = prepare_request(request) RAILS_DEFAULT_LOGGER.debug "Result => #{result}" nil end |
#request_object(url, method, object = nil) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/manhunt/session.rb', line 51 def request_object(url, method, object = nil) case method when :get request = Net::HTTP::Get.new(url) when :post request = Net::HTTP::Post.new(url) end request['Accept'] = 'application/json, text/javascript, */*' request['X-Requested-With'] = 'XMLHttpRequest' request.form_data = object if object result = prepare_request(request) ActiveSupport::JSON.decode(ManhuntSession.pureify_json(result.body)) end |
#send_message(params) ⇒ Object
170 171 172 |
# File 'lib/manhunt/session.rb', line 170 def (params) Manhunt::Message.(self, params) end |
#unlock_photos(user) ⇒ Object
137 138 139 140 |
# File 'lib/manhunt/session.rb', line 137 def unlock_photos(user) parameters = { 'uid' => user.platform_id, 'name' => user.username } Rails.logger.info post_object('/list/ajaxAddUnlock', parameters) end |
#unread_count ⇒ Object
156 157 158 |
# File 'lib/manhunt/session.rb', line 156 def unread_count get_object('/mail/ajaxGetUnreadMessageCount') end |
#user(name) ⇒ Object
160 161 162 |
# File 'lib/manhunt/session.rb', line 160 def user(name) Manhunt::User.find(self, name) end |
#valid? ⇒ Boolean
38 39 40 |
# File 'lib/manhunt/session.rb', line 38 def valid? @valid || false end |