Module: RockautoApi::Endpoints::Account
- Included in:
- Client
- Defined in:
- lib/rockauto_api/endpoints/account.rb
Constant Summary collapse
- LOGIN_URL =
"https://www.rockauto.com/catalog/catalogapi.php"- PROFILE_URL =
"/en/profile/"- ORDER_HISTORY_URL =
"/en/orderhistory/"
Instance Method Summary collapse
- #add_external_order(email_or_phone, order_number) ⇒ Object
- #authenticated? ⇒ Boolean
- #get_account_activity ⇒ Object
- #get_order_history(filter_params = {}) ⇒ Object
- #get_saved_addresses ⇒ Object
- #get_saved_vehicles ⇒ Object
- #login(email, password) ⇒ Object
- #logout ⇒ Object
Instance Method Details
#add_external_order(email_or_phone, order_number) ⇒ Object
157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/rockauto_api/endpoints/account.rb', line 157 def add_external_order(email_or_phone, order_number) require_authentication! form_data = { "email" => email_or_phone.include?("@") ? email_or_phone : "", "phone" => email_or_phone.include?("@") ? "" : email_or_phone, "order_number" => order_number } post_with_csrf("/en/orderhistory/addorder/", form_data) true rescue StandardError false end |
#authenticated? ⇒ Boolean
53 54 55 |
# File 'lib/rockauto_api/endpoints/account.rb', line 53 def authenticated? @authenticated end |
#get_account_activity ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/rockauto_api/endpoints/account.rb', line 115 def get_account_activity addresses = get_saved_addresses vehicles = get_saved_vehicles Models::AccountActivityResult.new( saved_addresses: addresses, saved_vehicles: vehicles, order_history: nil, has_discount_codes: false, has_store_credit: false, has_alerts: false ) end |
#get_order_history(filter_params = {}) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/rockauto_api/endpoints/account.rb', line 129 def get_order_history(filter_params = {}) require_authentication! html = get(ORDER_HISTORY_URL) doc = Nokogiri::HTML(html) orders = doc.css("table tr").map { |row| cells = row.css("td").map { |c| c.text.strip } next nil if cells.size < 3 next nil if cells[0].match?(/\A\s*(?:Order|Date|Status)\s*\z/i) Models::OrderHistoryItem.new( order_number: cells[0] || "", date: cells[1], status: cells[2], total: cells[3], vehicle: cells[4], order_url: nil ) }.compact Models::OrderHistoryResult.new( orders: orders, count: orders.size, filter_applied: filter_params.empty? ? nil : filter_params.to_s, search_time: Time.now.iso8601 ) end |
#get_saved_addresses ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rockauto_api/endpoints/account.rb', line 57 def get_saved_addresses require_authentication! html = get(PROFILE_URL) doc = Nokogiri::HTML(html) addresses = doc.css("table tr").map { |row| cells = row.css("td").map { |c| c.text.strip } next nil if cells.size < 5 Models::SavedAddress.new( name: cells[0], full_name: cells[1], address_line1: cells[2], city: cells[3], state: cells[4], postal_code: cells[5], country: cells[6] || "US", phone: cells[7] ) }.compact Models::SavedAddressesResult.new( addresses: addresses, count: addresses.size, has_default: addresses.any? { |a| a.name&.downcase&.include?("default") } ) end |
#get_saved_vehicles ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/rockauto_api/endpoints/account.rb', line 85 def get_saved_vehicles require_authentication! html = get(PROFILE_URL) doc = Nokogiri::HTML(html) vehicles = doc.css("a[href*='carcode']").map { |a| href = a["href"] text = a.text.strip match = href&.match(/carcode=(\d+)/) parts = text.split(" ") year = parts[0].to_i Models::SavedVehicle.new( year: year, make: parts[1] || "", model: parts[2] || "", engine: parts[3..]&.join(" "), carcode: match&.captures&.first, display_name: text, catalog_url: Parsers::HtmlHelpers.make_absolute_url(href) ) }.compact Models::SavedVehiclesResult.new( vehicles: vehicles, count: vehicles.size ) end |
#login(email, password) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/rockauto_api/endpoints/account.rb', line 10 def login(email, password) init_session! form_data = { "loginaction" => "login", "accountemail" => email, "captchacode" => "", "passworddecoy" => "", "password" => password, "passwordconfirmdecoy" => "", "passwordconfirm" => "", "keepsignin" => "false", "async" => "1", "accountlogin_php" => "1" } resp = account_api_post(form_data) result = JSON.parse(resp.body) @authenticated = result["message"]&.include?("Successful") || false @authenticated rescue StandardError @authenticated = false end |
#logout ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/rockauto_api/endpoints/account.rb', line 35 def logout init_session! form_data = { "loginaction" => "logout", "async" => "1", "accountlogin_php" => "1" } account_api_post(form_data) @authenticated = false true rescue StandardError @authenticated = false true end |