Class: GLSMech
- Inherits:
-
Object
- Object
- GLSMech
- Defined in:
- lib/gls_agent/gls_mech.rb
Overview
Utilize mechanize to do stuff on GLS webpage.
Constant Summary collapse
- @@parcel_creation_url =
'http://www.your-gls.eu/276-I-PORTAL-WEB/content/GLS/DE03/DE/15005.htm'.freeze
Instance Attribute Summary collapse
-
#mech ⇒ Object
Returns the value of attribute mech.
-
#pass ⇒ Object
Returns the value of attribute pass.
-
#user ⇒ Object
Returns the value of attribute user.
Instance Method Summary collapse
-
#initialize ⇒ GLSMech
constructor
Setup the mech.
-
#log_to(filename) ⇒ Object
Enable logging to given file.
-
#save_parcel_label(parcel_job, filename) ⇒ Object
Saves parcel label as pdf, does not overwrite file if exists, returns filename that label was saved to, or nil if login, creation or redirect failed.
-
#save_parcel_labels(parcel_jobs, filenames) ⇒ Object
Saves parcel labels as pdf, does not overwrite file if exists, yields error, filename that was saved to.
Constructor Details
#initialize ⇒ GLSMech
Setup the mech.
14 15 16 17 18 |
# File 'lib/gls_agent/gls_mech.rb', line 14 def initialize @mech = Mechanize.new @mech.user_agent_alias = 'Windows Mozilla' @mech.agent.allowed_error_codes = [404] end |
Instance Attribute Details
#mech ⇒ Object
Returns the value of attribute mech.
8 9 10 |
# File 'lib/gls_agent/gls_mech.rb', line 8 def mech @mech end |
#pass ⇒ Object
Returns the value of attribute pass.
10 11 12 |
# File 'lib/gls_agent/gls_mech.rb', line 10 def pass @pass end |
#user ⇒ Object
Returns the value of attribute user.
9 10 11 |
# File 'lib/gls_agent/gls_mech.rb', line 9 def user @user end |
Instance Method Details
#log_to(filename) ⇒ Object
Enable logging to given file.
21 22 23 |
# File 'lib/gls_agent/gls_mech.rb', line 21 def log_to filename @mech.log = Logger.new filename end |
#save_parcel_label(parcel_job, filename) ⇒ Object
Saves parcel label as pdf, does not overwrite file if exists, returns filename that label was saved to, or nil if login, creation or redirect failed.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/gls_agent/gls_mech.rb', line 63 def save_parcel_label parcel_job, filename if !login! @user, @pass raise GLSAgent::GLSEndpointError.new page_error_text end form = @mech.page.forms.first fill_parcel_form form, parcel_job @mech.submit(form, form..first) pdf_iframe = @mech.page.iframes.first if @mech.log @mech.page.save_as "save_label#{DateTime.now.strftime('%s')}.html" end if page_has_error? raise GLSAgent::GLSEndpointError.new page_error_text end if pdf_iframe return pdf_iframe.content.save_as filename elsif @mech.log @mech.page.save_as "gls_agent_debug_save-parcel-fail.html" end return nil end |
#save_parcel_labels(parcel_jobs, filenames) ⇒ Object
Saves parcel labels as pdf, does not overwrite file if exists, yields error, filename that was saved to. Later is nil if login, creation or redirect failed.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/gls_agent/gls_mech.rb', line 28 def save_parcel_labels parcel_jobs, filenames return nil if !login! @user, @pass parcel_jobs.zip(filenames).each do |parcel, filename| if @mech.page.uri.to_s != @@parcel_creation_url @mech.get @@parcel_creation_url end if @mech.page.uri.to_s != @@parcel_creation_url yield "not logged in", nil next end form = @mech.page.forms.first fill_parcel_form form, parcel @mech.submit(form, form..first) pdf_iframe = @mech.page.iframes.first @mech.page.save_as "save_label#{DateTime.now.strftime('%s')}.html" if page_has_error? yield page_error_text, nil elsif pdf_iframe yield nil, pdf_iframe.content.save_as(filename) else yield 'unkown error', nil end end end |