Class: MechanizedSession
- Inherits:
-
Object
show all
- Defined in:
- lib/mechanized_session.rb
Defined Under Namespace
Classes: Error, InvalidAuthentication, InvalidSession, MechanizeError
Constant Summary
collapse
- VERSION =
'0.1.0'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of MechanizedSession.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/mechanized_session.rb', line 53
def initialize(options)
create_agent
@logger = options[:logger] || Logger.new($stdout)
if options[:session_data]
logger.debug "Initializing session from previous data"
self.agent.cookie_jar = YAML.load(options[:session_data])
elsif options[:username]
result = self.login(options)
if result == false
logger.debug "Login returned false, due to invalid credentials we hope"
raise InvalidAuthentication
elsif result == true
logger.debug "Login returned true, assuming session established"
@logged_in = true
else
raise "the :login method of #{self.class} must return exactly true or false (depending on the success of the login)"
end
end
end
|
Instance Attribute Details
#agent ⇒ Object
Returns the value of attribute agent.
23
24
25
|
# File 'lib/mechanized_session.rb', line 23
def agent
@agent
end
|
#disable_session_check ⇒ Object
Returns the value of attribute disable_session_check.
24
25
26
|
# File 'lib/mechanized_session.rb', line 24
def disable_session_check
@disable_session_check
end
|
#logged_in ⇒ Object
Returns the value of attribute logged_in.
26
27
28
|
# File 'lib/mechanized_session.rb', line 26
def logged_in
@logged_in
end
|
#logger ⇒ Object
Returns the value of attribute logger.
25
26
27
|
# File 'lib/mechanized_session.rb', line 25
def logger
@logger
end
|
Class Method Details
.action(name, &block) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/mechanized_session.rb', line 28
def self.action(name, &block)
define_method name do |*args|
result = nil
logger.debug "Executing action :#{name}"
begin
self.disable_session_check = true if name == :login
result = block.call(self, *args)
check_for_invalid_session! unless name == :login
rescue StandardError => e
logger.debug "Exception #{e} (#{e.class}) raised in action :#{name}"
if e.is_a?(MechanizedSession::Error) || e.is_a?(WWW::Mechanize::ResponseCodeError) && e.response_code.to_s == "401"
raise e
else
ex = MechanizeError.new("Unable to execute action :#{name}, due to '#{e}'")
ex.inner = e
ex.set_backtrace(e.backtrace)
raise ex
end
ensure
self.disable_session_check = nil
end
result
end
end
|
Instance Method Details
#basic_auth ⇒ Object
117
118
119
|
# File 'lib/mechanized_session.rb', line 117
def basic_auth
nil
end
|
#delete(uri, params = {}) {|page| ... } ⇒ Object
100
101
102
103
104
105
106
107
|
# File 'lib/mechanized_session.rb', line 100
def delete(uri, params = {}, &block)
logger.debug "DELETE #{uri} #{params.inspect}"
page = agent.delete(uri, params)
logger.debug "Successfully got page #{page.uri}"
check_for_invalid_session! unless disable_session_check?
yield page if block_given?
page
end
|
#get(uri) {|page| ... } ⇒ Object
73
74
75
76
77
78
79
80
|
# File 'lib/mechanized_session.rb', line 73
def get(uri, &block)
logger.debug "GET #{uri}"
page = agent.get(uri)
logger.debug "Successfully got page #{page.uri}"
check_for_invalid_session! unless disable_session_check?
yield page if block_given?
page
end
|
#login(username, password) ⇒ Object
109
110
111
|
# File 'lib/mechanized_session.rb', line 109
def login(username, password)
raise "#{self.class} must declare action :login describing how to log in a session"
end
|
#post(uri, params = {}) {|page| ... } ⇒ Object
82
83
84
85
86
87
88
89
|
# File 'lib/mechanized_session.rb', line 82
def post(uri, params = {}, &block)
logger.debug "POST #{uri} #{params.inspect}"
page = agent.post(uri, params)
logger.debug "Successfully got page #{page.uri}"
check_for_invalid_session! unless disable_session_check?
yield page if block_given?
page
end
|
#put(uri, entity) {|page| ... } ⇒ Object
91
92
93
94
95
96
97
98
|
# File 'lib/mechanized_session.rb', line 91
def put(uri, entity, &block)
logger.debug "PUT #{uri} #{entity.inspect}"
page = agent.put(uri, entity)
logger.debug "Successfully got page #{page.uri}"
check_for_invalid_session! unless disable_session_check?
yield page if block_given?
page
end
|
#session_data ⇒ Object
113
114
115
|
# File 'lib/mechanized_session.rb', line 113
def session_data
agent.cookie_jar.to_yaml
end
|