Created
March 6, 2019 15:58
-
-
Save jneumann/d30fe5aea8d90296d2550b6e063c379d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use csv::{ | |
Reader, | |
ReaderBuilder | |
}; | |
use ftp::FtpStream; | |
use std::collections::HashMap; | |
use std::str; | |
use std::error::Error; | |
fn main() -> Result<(), Box<Error>> { | |
let addr = "ftp.mgegroup.com"; | |
let (user, pass) = ("208998-SIRCHERS", "346613w699S4"); | |
let mut ftp_stream = FtpStream::connect(("ftp.mgegroup.com", 21))?; | |
ftp_stream.login(user, pass)?; | |
let mut ftp_stream = FtpStream::connect((addr, 21))?; | |
ftp_stream.login(user, pass)?; | |
ftp_stream.cwd("ffldealer")?; | |
// An easy way to retrieve a file | |
let cursor = ftp_stream.simple_retr("vendorname_items_all.csv")?; | |
let vec = cursor.into_inner(); | |
let text = str::from_utf8(&vec)?; | |
let mut sku_list = HashMap::new(); | |
let mut price_list = HashMap::new(); | |
let mut sku_csv = Reader::from_path("skus.csv")?; | |
for sku in sku_csv.records() { | |
let sku = sku?; | |
sku_list.insert( | |
sku[1].to_string(), | |
sku[0].to_string(), | |
); | |
} | |
let mut rdr = ReaderBuilder::new() | |
.from_reader(text.as_bytes()); | |
for result in rdr.records() { | |
let record = result?; | |
match sku_list.get(&record[4].to_string()) { | |
Some(id) => { | |
price_list.insert( | |
id.to_string(), | |
record[3].to_string() | |
); | |
}, | |
None => {} | |
} | |
} | |
let mut product_data = Vec::new(); | |
let mut req_size = 0; | |
for (k, v) in price_list.iter() { | |
let mut product = HashMap::new(); | |
product.insert("id", k); | |
product.insert("stock_quantity", v); | |
product_data.push(product); | |
req_size += 1; | |
if req_size == 99 { | |
let mut data = HashMap::new(); | |
data.insert("update", product_data); | |
let client = reqwest::Client::new(); | |
let _result = client.post("https://sirchersgunsandammo.com/wp-json/wc/v3/products/batch") | |
.basic_auth("ck_1e343d41fad3e8d4640713e14f7dfc77b5c63270", Some("cs_9914660b0e74a3ebd410515921451d9d92dcc448")) | |
.json(&data) | |
.send()? | |
.text()?; | |
product_data = Vec::new(); | |
req_size = 0; | |
} | |
} | |
Ok(()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment