Skip to content

Instantly share code, notes, and snippets.

View LironHazan's full-sized avatar
🎸
666 -> 🦀

LironH LironHazan

🎸
666 -> 🦀
View GitHub Profile
@LironHazan
LironHazan / open_web_app.rs
Created October 18, 2020 05:33
snippet 6 for post
// Opens chrome once the server starts
async fn open_web_app(url: &str) -> () {
use std::process::Command;
let mut cmd = Command::new("open");
cmd.arg("-a")
.arg("Google Chrome")
.arg(format!("http://{}", url))
.spawn()
.expect("failed to spawn child");
println!("{}", url)
@LironHazan
LironHazan / init_routes.rs
Created October 18, 2020 05:32
snippet 5 for post
pub fn init_routes(config: &mut web::ServiceConfig) {
config.service(test_route);
config.service(static_files());
}
@LironHazan
LironHazan / start_server.rs
Created October 18, 2020 05:31
snippet 4 for post
use crate::server::routes::AppState;
use crate::server;
use actix_web::dev::Server;
use actix_web::{App, HttpServer};
// Starts the server with wanted configuration and shared state
async fn start_server(results_count: usize, server_address: &str) -> Result<Server, std::io::Error> {
let server = HttpServer::new(move || {
App::new().data(AppState {
results_count,
pub async fn serve_report(results_count: usize) -> std::io::Result<()> {
let server_address = "127.0.0.1:8080"; //todo: move to config.json
let server = start_server(results_count, server_address).await?;
tokio::join!(server, open_web_app(server_address));
Ok(())
}
@LironHazan
LironHazan / main.rs
Created October 18, 2020 05:28
snippet 2 post
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let results = run_tsttgen().await?;
serve_report(results).await
}
@LironHazan
LironHazan / tsttgen_ssociated_fn.rs
Created October 18, 2020 05:27
snippet 1 for post
pub fn new(suites_map: HashMap<String, Vec<String>>) -> Self { // builder
Self { suites_map }
}
@LironHazan
LironHazan / takewhile.ts
Created October 16, 2020 10:23
Matan Sanders example for rxjs post
counter = 0;
constructor() {
interval(100)
.pipe(
tap(() => this.counter++),
takeWhile(() => this.counter < 100)
)
.subscribe();
}
@LironHazan
LironHazan / subscribeToFileRemovals.ts
Created October 16, 2020 09:30
Sivan Israelov + Koral Ben Ami snippet for rxjs post
// Fake remove file
function remove(filename: string) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, 300);
});
}
interface FileRemoveInteractorImpl {
@LironHazan
LironHazan / randomData.ts
Created October 16, 2020 05:52
Vadim Krimsky example for example post
createTagsForTest$(count = 5): Observable<any[]> {
const rndName = btoa(String(Math.random())).substr(5, 5); // generate random string as tag name
const usersObs$ = [...Array(count).keys()].map((_) => createTag$(rndName)); // create an array of http requests as observables
return forkJoin(usersObs$) // will subscribe to each of the inner observables and when all complete will emit a list of results
.pipe(catchError(error => of(error)));
}
@LironHazan
LironHazan / some.ts
Last active October 16, 2020 11:08
Igor Paevshik snippet for rxjs post
import { Observable, from} from 'rxjs';
import { tap } from 'rxjs/operators';
//Similar to native JS 'some' method,
//if at least one value pass predicate emit true, else false
function some(predicate: Function) {
return function <T>(source: Observable<T>):Observable<Boolean>{
return new Observable(subscriber => {
return source.subscribe({