Class: Manhunt::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/manhunt/session.rb

Constant Summary collapse

LOGIN_PAGE_REGEX =
/<form id="login" name="login" method="post" action="\/">/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#languageObject (readonly)

Returns the value of attribute language.



7
8
9
# File 'lib/manhunt/session.rb', line 7

def language
  @language
end

#usernameObject (readonly)

Returns the value of attribute username.



6
7
8
# File 'lib/manhunt/session.rb', line 6

def username
  @username
end

Class Method Details

.create(options) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/manhunt/session.rb', line 18

def self.create(options)
  options[:language] ||= 'en'
  session = Manhunt::Session.new(options[:username], options[:password], options[:language])
  session.create
  
  return session
end

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, reply_message_id = nil)
  Manhunt::Message.compose(self, user, user_id, reply_message_id)
end

#createObject



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 }
  
end

#folder(name) ⇒ Object



148
149
150
# File 'lib/manhunt/session.rb', line 148

def folder(name)
  ManhuntFolder.new(self, name)
end

#foldersObject



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

#loginObject



31
32
33
34
35
36
# File 'lib/manhunt/session.rb', line 31

def 
  @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 |cookie|
      data = cookie.split(';')[0]
      key = data.split('=')[0]
      value = data.split('=')[1]
      @cookies[key] = value
    end
  end
  
  if LOGIN_PAGE_REGEX.match(result.body)
    
    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 send_message(params)
  Manhunt::Message.send_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_countObject



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

Returns:

  • (Boolean)


38
39
40
# File 'lib/manhunt/session.rb', line 38

def valid?
  @valid || false
end