class BptScraper::Login
Handles the scraping of the home page for CSRF token from username input. Additionally handles the POSTing of login info to create a session
Constants
- BASE_URL
Attributes
base_url[RW]
email[RW]
fields[RW]
password[RW]
base_url[RW]
email[RW]
fields[RW]
password[RW]
Public Class Methods
new(base_url: nil, email: nil, password: nil)
click to toggle source
# File lib/bpt_scraper/login.rb, line 13 def initialize(base_url: nil, email: nil, password: nil) self.base_url = base_url || self.class.base_url || BASE_URL self.email = email || self.class.email self.password = password || self.class.password missing_options_error('Login') if (self.email.nil? || self.password.nil?) end
reset()
click to toggle source
# File lib/bpt_scraper/login.rb, line 29 def self.reset self.base_url = nil self.fields = nil self.email = nil self.password = nil end
Public Instance Methods
create_session()
click to toggle source
# File lib/bpt_scraper/login.rb, line 20 def create_session self.fields = fetch_login_fields send_login_request end
Private Instance Methods
fetch_login_fields()
click to toggle source
fetches the login page of BPT to be parsed. BPT's CSRF procedure involves giving a unique id appended to the name of the input field e.g. name=“email_jn7Y8jgf”
# File lib/bpt_scraper/login.rb, line 41 def fetch_login_fields response = HTTParty.get(base_url) failed_login_fetch unless response.code == 200 email_name = Nokogiri::HTML(response).css('#login_email')[0]['name'] password_name = Nokogiri::HTML(response).css('#login_password')[0]['name'] { email_name: email_name, password_name: password_name } end
send_login_request()
click to toggle source
# File lib/bpt_scraper/login.rb, line 49 def send_login_request response = HTTParty.post( base_url, body: { fields[:email_name].to_s => email, fields[:password_name].to_s => password } ) failed_login_post unless response.code == 200 true end