class Efatura::Client
Constants
- CONSUMIDOR_URL
- FATURAS_URL
- LOGIN_URL
Attributes
from_date[RW]
to_date[RW]
Public Class Methods
new(from_date, to_date)
click to toggle source
# File lib/efatura/client.rb, line 10 def initialize(from_date, to_date) @from_date = from_date @to_date = to_date end
Public Instance Methods
date_format_valid?(date)
click to toggle source
# File lib/efatura/client.rb, line 37 def date_format_valid?(date) # RECEIVE A DATE INSTANCE VARIABLE AND VERIFIES THE CORRECT FORMAT format = '%Y-%m-%d' DateTime.strptime(date, format) true rescue ArgumentError false end
date_same_year?(from_date, to_date)
click to toggle source
# File lib/efatura/client.rb, line 46 def date_same_year?(from_date, to_date) Date.parse(from_date).year == Date.parse(to_date).year end
date_valid?(from_date, to_date)
click to toggle source
# File lib/efatura/client.rb, line 32 def date_valid?(from_date, to_date) # FOR A DATE TO BE VALID IT NEEDS TO PASS THE THREE CONDITIONS date_format_valid?(from_date) && date_format_valid?(to_date) && date_same_year?(from_date, to_date) end
invoices()
click to toggle source
# File lib/efatura/client.rb, line 15 def invoices login response = RestClient::Request.execute( method: :get, url: FATURAS_URL, cookies: cookies, headers: { params: { 'dataInicioFilter' => from_date, 'dataFimFilter' => to_date, 'ambitoAquisicaoFilter' => 'TODOS' } } ) JSON.parse(response) end
Private Instance Methods
login()
click to toggle source
# File lib/efatura/client.rb, line 52 def login # SET AN EMPTY HASH TO FEED LATER WITH AGENT COOKIE JAR @cookies = {} # INITIATE A NEW MECHANIZE INSTANCE agent = Mechanize.new # FETCH THE LOGIN URL AND ITERATES THRO LOGIN_PAGE IN ORDER TO TARGET HTML COMPONENTS agent.get(LOGIN_URL) do |login_page| # FETCHES THE LOGIN FORM FROM THE LOGIN PAGE login_form = login_page.form_with(name: 'loginForm') # SETS THE LOGIN USERNAME AKA NIF / NUMERO CONTRIBUINTE login_form.username = Efatura.configuration.nif # SETS THE LOGIN PASSWORD login_form.password = Efatura.configuration.password # SUBMITS THE FORM / LOGIN agent.submit(login_form) # AFTER A SUCCESSFUL LOGIN FETCH THE CONSUMIDOR PAGE IN ORDER TO RETRIEVE COOKIES consumidor_page = agent.get(CONSUMIDOR_URL) # ASSIGN THE CONSUMIDOR FORM TO A VARIABLE consumidor_form = consumidor_page.form_with(name: 'form') # SUBMIT THE FORM agent.submit(consumidor_form) # MAPS THE COOKIE_JAR FROM AGENT OBJECT AND FEEDS IT TO THE COOKIES HASH # THAT WAS INITIALIZED WITH AN EMPTY HASH @cookies = Hash[agent.cookie_jar.store.map { |i| i.cookie_value.split('=') }] end end