Skip to content

Instantly share code, notes, and snippets.

@jneumann
Created March 6, 2019 15:58
Show Gist options
  • Save jneumann/d30fe5aea8d90296d2550b6e063c379d to your computer and use it in GitHub Desktop.
Save jneumann/d30fe5aea8d90296d2550b6e063c379d to your computer and use it in GitHub Desktop.
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