Class: CakeMail::Session
- Inherits:
-
Object
- Object
- CakeMail::Session
- Defined in:
- lib/cakemail/session.rb
Defined Under Namespace
Classes: ApiRequestError, HttpRequestError
Constant Summary collapse
- API_SERVER_BASE_URL =
"http://api.cakemail.com/"
- API_VERSION =
"1.0"
- API_LOCALE =
"en_US"
Instance Attribute Summary collapse
-
#api_id ⇒ Object
readonly
Returns the value of attribute api_id.
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
-
#user_key ⇒ Object
readonly
Returns the value of attribute user_key.
Instance Method Summary collapse
-
#initialize(api_id, api_key) ⇒ Session
constructor
A new instance of Session.
-
#login(email, password) ⇒ Object
Returns a logged in user.
-
#password_recovery(email) ⇒ Object
Recover password.
- #request(service_class, method, args) ⇒ Object
Constructor Details
Instance Attribute Details
#api_id ⇒ Object (readonly)
Returns the value of attribute api_id.
10 11 12 |
# File 'lib/cakemail/session.rb', line 10 def api_id @api_id end |
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
10 11 12 |
# File 'lib/cakemail/session.rb', line 10 def api_key @api_key end |
#user_key ⇒ Object (readonly)
Returns the value of attribute user_key.
10 11 12 |
# File 'lib/cakemail/session.rb', line 10 def user_key @user_key end |
Instance Method Details
#login(email, password) ⇒ Object
Returns a logged in user.
18 19 20 21 |
# File 'lib/cakemail/session.rb', line 18 def login(email, password) user = CakeMail::User.login(self, email, password) return user end |
#password_recovery(email) ⇒ Object
Recover password.
23 24 25 |
# File 'lib/cakemail/session.rb', line 23 def password_recovery(email) CakeMail::User.password_recovery(email) end |
#request(service_class, method, args) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/cakemail/session.rb', line 27 def request(service_class, method, args) builder = Builder::XmlMarkup.new(:indent => 1) builder.instruct! :xml, :version => "1.0", :encoding => "utf-8" req = builder.body(:version => API_VERSION) { |body| Object.module_eval(service_class).method_xml(body, self, method, args) } res = Net::HTTP.post_form(URI.parse(API_SERVER_BASE_URL), {'alg' => 'blowfish', 'mode' => 'ecb', 'id' => @api_id, 'request' => encode(req)}) raise HttpRequestError if res.nil? || res.body.nil? || (res.code.to_i != 200) r = XmlSimple.xml_in(decode(res.body)) raise ApiRequestError if r.nil? || !r.has_key?('class') || !r['class'].is_a?(Array) r = r['class'].first raise ApiRequestError if (r['type'] != service_class.gsub(/.*::/, '')) || !r['method'].is_a?(Array) || (r['method'].first['type'] != method) r = r['method'].first r = unescape_xmlsimple_result(r) if r.has_key?('error_code') error = "Error #{r['error_code'].first}" error += ": #{CGI.unescape(r['error_message'].first)}" if r.has_key?('error_message') error += " [#{service_class.to_s} :: #{method}]" raise ApiRequestError.new(error) end return r end |