Class: QBWC::Session
- Inherits:
-
Object
- Object
- QBWC::Session
- Defined in:
- lib/qbwc/session.rb
Direct Known Subclasses
Constant Summary collapse
- @@session =
nil
Instance Attribute Summary collapse
-
#company ⇒ Object
readonly
Returns the value of attribute company.
-
#error ⇒ Object
Returns the value of attribute error.
-
#progress ⇒ Object
readonly
Returns the value of attribute progress.
-
#status_code ⇒ Object
Returns the value of attribute status_code.
-
#status_severity ⇒ Object
Returns the value of attribute status_severity.
-
#ticket ⇒ Object
readonly
Returns the value of attribute ticket.
-
#user ⇒ Object
readonly
Returns the value of attribute user.
Class Method Summary collapse
Instance Method Summary collapse
- #began_at ⇒ Object
- #current_request ⇒ Object
- #destroy ⇒ Object
- #error_and_stop_requested? ⇒ Boolean
- #finished? ⇒ Boolean
-
#initialize(user = nil, company = nil, ticket = nil) ⇒ Session
constructor
A new instance of Session.
- #key ⇒ Object
- #next_request ⇒ Object (also: #next)
- #request_to_send ⇒ Object
- #response=(qbxml_response) ⇒ Object
- #response_is_error? ⇒ Boolean
- #save ⇒ Object
Constructor Details
#initialize(user = nil, company = nil, ticket = nil) ⇒ Session
Returns a new instance of Session.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/qbwc/session.rb', line 12 def initialize(user = nil, company = nil, ticket = nil) @user = user @company = company @current_job = nil @error = nil @progress = 0 @iterator_id = nil @initial_job_count = pending_jobs.length @ticket = ticket || Digest::SHA1.hexdigest("#{Rails.application.config.secret_token}#{Time.now.to_i}") @@session = self reset(ticket.nil?) end |
Instance Attribute Details
#company ⇒ Object (readonly)
Returns the value of attribute company.
3 4 5 |
# File 'lib/qbwc/session.rb', line 3 def company @company end |
#error ⇒ Object
Returns the value of attribute error.
4 5 6 |
# File 'lib/qbwc/session.rb', line 4 def error @error end |
#progress ⇒ Object
Returns the value of attribute progress.
3 4 5 |
# File 'lib/qbwc/session.rb', line 3 def progress @progress end |
#status_code ⇒ Object
Returns the value of attribute status_code.
4 5 6 |
# File 'lib/qbwc/session.rb', line 4 def status_code @status_code end |
#status_severity ⇒ Object
Returns the value of attribute status_severity.
4 5 6 |
# File 'lib/qbwc/session.rb', line 4 def status_severity @status_severity end |
#ticket ⇒ Object (readonly)
Returns the value of attribute ticket.
3 4 5 |
# File 'lib/qbwc/session.rb', line 3 def ticket @ticket end |
#user ⇒ Object (readonly)
Returns the value of attribute user.
3 4 5 |
# File 'lib/qbwc/session.rb', line 3 def user @user end |
Class Method Details
.get(ticket = nil) ⇒ Object
8 9 10 |
# File 'lib/qbwc/session.rb', line 8 def self.get(ticket = nil) @@session end |
Instance Method Details
#began_at ⇒ Object
101 102 103 |
# File 'lib/qbwc/session.rb', line 101 def began_at @session.created_at end |
#current_request ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/qbwc/session.rb', line 60 def current_request request = self.next_request if request && self.iterator_id.present? request = request.to_hash request.delete('xml_attributes') request.values.first['xml_attributes'] = {'iterator' => 'Continue', 'iteratorID' => self.iterator_id} request = QBWC::Request.new(request) end request end |
#destroy ⇒ Object
105 106 107 108 |
# File 'lib/qbwc/session.rb', line 105 def destroy self.freeze @@session = nil end |
#error_and_stop_requested? ⇒ Boolean
35 36 37 |
# File 'lib/qbwc/session.rb', line 35 def error_and_stop_requested? response_is_error? && QBWC::on_error == 'stopOnError' end |
#finished? ⇒ Boolean
39 40 41 |
# File 'lib/qbwc/session.rb', line 39 def finished? self.progress == 100 end |
#key ⇒ Object
27 28 29 |
# File 'lib/qbwc/session.rb', line 27 def key [user, company] end |
#next_request ⇒ Object Also known as: next
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/qbwc/session.rb', line 43 def next_request if current_job.nil? || error_and_stop_requested? self.progress = 100 complete_with_success unless response_is_error? return nil end until (request = current_job.next_request(self)) do pending_jobs.shift reset(true) or break end jobs_completed = @initial_job_count - pending_jobs.length self.progress = ((jobs_completed.to_f / @initial_job_count.to_f ) * 100).to_i complete_with_success if finished? request end |
#request_to_send ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/qbwc/session.rb', line 71 def request_to_send current_job_name = current_job.name request = current_request.try(:request) || '' QBWC.logger.info("Sending request from job #{current_job_name}") QBWC.logger.info(request) if QBWC.log_requests_and_responses request end |
#response=(qbxml_response) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/qbwc/session.rb', line 80 def response=(qbxml_response) begin QBWC.logger.info 'Parsing response.' unless qbxml_response.nil? response = QBWC.parser.from_qbxml(qbxml_response)["qbxml"]["qbxml_msgs_rs"].except("xml_attributes") response = response[response.keys.first] parse_response_header(response) end self.current_job.process_response(qbxml_response, response, self, iterator_id.blank?) unless self.current_job.nil? self.next_request # search next request rescue => e self.error = e. QBWC.logger.warn "An error occured in QBWC::Session: #{e.}" QBWC.logger.warn e.backtrace.join("\n") end end |
#response_is_error? ⇒ Boolean
31 32 33 |
# File 'lib/qbwc/session.rb', line 31 def response_is_error? self.error && self.status_severity == 'Error' end |
#save ⇒ Object
98 99 |
# File 'lib/qbwc/session.rb', line 98 def save end |