From 2011d1c969c0bb394231d944ac59d302783778c0 Mon Sep 17 00:00:00 2001 From: Facundo Redon Date: Mon, 26 Jan 2026 00:26:20 -0300 Subject: [PATCH 1/3] comits --- src/clima.ts | 18 +++++++++++++----- src/index.ts | 12 +++++------- src/logger.ts | 5 ++--- src/types.ts | 12 ++++++++++++ 4 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 src/types.ts diff --git a/src/clima.ts b/src/clima.ts index 9d3df00..0de82df 100755 --- a/src/clima.ts +++ b/src/clima.ts @@ -1,7 +1,15 @@ -import { log } from "./logger.js" +import { log } from "./logger.js"; +import { ErrorResponse, GeoResponse } from "./types.js"; -export async function ubicacion(lugar: string, limit = '1') { - const response = await fetch(`${process.env.WEATHER_URL}/geo/1.0/direct?q=${lugar}&limit=${limit}&appid=${process.env.WEATHER_API_KEY}`) - log('GET', response) - return response +export async function ubicacion(lugar: string, limit = '1'): Promise { + const response = await fetch(`${process.env.WEATHER_URL}/geo/1.0/direct?q=${lugar}&limit=${limit}&appid=${process.env.WEATHER_API_KEY}`); + log('GET', response); + if (!response.ok) { + return { + status: response.status, + message: response.statusText, + }; + } else { + return await response.json(); + } } \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 586acda..df06ed6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,13 @@ import { ubicacion } from "./clima.js"; if (typeof process.env.WEATHER_URL === 'undefined' || typeof process.env.WEATHER_API_KEY === 'undefined' || typeof process.argv[2] === 'undefined') { - console.error('WEATHER_URL', typeof process.env.WEATHER_URL) - console.error('WEATHER_API_KEY', typeof process.env.WEATHER_API_KEY) - console.error('Ciudad', typeof process.argv[2]) + console.error('WEATHER_URL', typeof process.env.WEATHER_URL); + console.error('WEATHER_API_KEY', typeof process.env.WEATHER_API_KEY); + console.error('Ciudad', typeof process.argv[2]); process.exit(0); } -const buqueda = await ubicacion(process.argv[2]) +const buqueda = await ubicacion(process.argv[2]); -console.log(buqueda.status, buqueda.statusText) -console.log('url', buqueda.url) -console.log('Body', await buqueda.json()) +console.log('Busqueda', buqueda); diff --git a/src/logger.ts b/src/logger.ts index 57d3195..3b65bba 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -8,9 +8,8 @@ console.log(filename, fileExist); if (!fileExist) appendFileSync(filename, ['Date', 'Method', 'Domain', 'Path', 'Status'].join(',') + '\n', 'utf8'); export const log = (method: string, response: Response) => { - const { url, status } = response, - { host, pathname } = new URL(url); - appendFileSync(filename, [isoDateInTimeZone(), method, host, pathname, status].join(',') + '\n', 'utf8'); + const { host, pathname } = new URL(response.url); + appendFileSync(filename, [isoDateInTimeZone(), method, host, pathname, response.status].join(',') + '\n', 'utf8'); }; function isoDateInTimeZone(timeZone = 'America/Buenos_Aires', date = new Date()) { diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..8f7ce61 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,12 @@ +export type ErrorResponse = { + status: number; + message: string; +}; + +export type GeoResponse = Array<{ + name: string; + lat: number; + lon: number; + country: string; + state: string; +}>; \ No newline at end of file From b9ea7ea6e7ece846084c1d8136c6b87dd15ad8f1 Mon Sep 17 00:00:00 2001 From: Facundo Redon Date: Mon, 26 Jan 2026 00:31:01 -0300 Subject: [PATCH 2/3] typo --- src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index df06ed6..4a5f8f6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,6 @@ if (typeof process.env.WEATHER_URL === 'undefined' || typeof process.env.WEATHER } -const buqueda = await ubicacion(process.argv[2]); +const busqueda = await ubicacion(process.argv[2]); -console.log('Busqueda', buqueda); +console.log('Busqueda', busqueda); From de137aee996d8a9b9739d777f1f444e40fc999e3 Mon Sep 17 00:00:00 2001 From: Facundo Redon Date: Tue, 3 Feb 2026 17:45:27 -0300 Subject: [PATCH 3/3] oshix --- .gitignore | 2 +- oso.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/clima.ts | 5 +++-- src/index.ts | 18 +++++++++------- test.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 oso.js create mode 100644 test.js diff --git a/.gitignore b/.gitignore index 359e442..cc60a9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # ---> Node # Logs -logs.csv +*.csv *.log npm-debug.log* yarn-debug.log* diff --git a/oso.js b/oso.js new file mode 100644 index 0000000..2d7098f --- /dev/null +++ b/oso.js @@ -0,0 +1,58 @@ +const saludo = "Hola, mi nombre es Luciano Alegre y soy el presentador del Clima.", + dias = ['Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'], + consejos = { + Invierno: 'No te olvides de salir bien abrigado!', + Otoño: 'Acordate de salir con paraguas o piloto, por si llueve!', + Primavera: 'Nunca olvides, disfrutar mucho de las flores y los climas calidos!', + Verano: 'Seguro estas aprovechando de la playa!' + }, + temperaturaRandom = Math.floor(Math.random() * 34) + 1, + diaRandom = Math.floor(Math.random() * 6), + hoy = dias[diaRandom]; + +let estacion = ''; + +if (temperaturaRandom <= 10) estacion = 'Invierno'; +else if (temperaturaRandom > 10 && temperaturaRandom <= 15) estacion = 'Otoño'; +else if (temperaturaRandom > 15 && temperaturaRandom <= 24) estacion = 'Primavera'; +else estacion = 'Verano'; + +const mensaje = ` +${saludo} +Hoy ${hoy} de ${estacion}, tenemos una temperatura de ${temperaturaRandom}°. +${consejos[estacion]} +`; + +const nombre = 'Luciano'; +const temperatura = 12; +const otro = 'Caca'; +const otro2 = 'Cacas muy largas'; + +const objetivo = `Hola, mi nombre es ${nombre} y soy el presentador del Clima. Hoy Sabado de ${otro}, tenemos una temperatura de ${temperatura}°. ${otro2}`; + +console.log(objetivo); + +/* +let diasDeLaSemana = { + "Primer dia": "Lunes", + "Segundo dia": "Martes", + "Tercer dia": "Miercoles", + "Cuarto dia": "Jueves", + "Quinto dia": "Viernes", + "Sexto dia": "Sabado", + "Septimo dia": "Domingo" +}; + +console.log(temperaturaRandom <= estacionesDelAño["Invierno"]); +if (temperaturaRandom <= estacionesDelAño.Invierno) { + console.log(`${saludo}. Hoy, ${diasDeLaSemana["Primer dia"]} tenemos una temperaturaRandom de ${temperaturaRandom}°, en este invierno no te olvides de salir bien abrigado`); +} else if (temperaturaRandom <= estacionesDelAño["Otoño"]) { + console.log(`${saludo}. Hoy, ${diasDeLaSemana["Cuarto dia"]} tenemos una temperaturaRandom de ${temperaturaRandom}°, en este otoño y con tanta lluvia acordate de salir con paraguas o piloto`); +} +else if (temperaturaRandom <= estacionesDelAño["Primavera"]) { + console.log(`${saludo}. Hoy, ${diasDeLaSemana["Tercer dia"]} tenemos una temperaturaRandom de ${temperaturaRandom}°. En esta primavera disfruta mucho de las flores y los climas calidos`); +} else { + console.log(`${saludo}. Hoy, ${diasDeLaSemana["Septimo dia"]} tenemos una temperaturaRandom de ${temperaturaRandom}°. Seguro estas aprovechando de la playa`); +} + +*/ \ No newline at end of file diff --git a/src/clima.ts b/src/clima.ts index 0de82df..e8f5df0 100755 --- a/src/clima.ts +++ b/src/clima.ts @@ -1,8 +1,9 @@ +import { weatherApiKey, weatherUrl } from "./index.js"; import { log } from "./logger.js"; import { ErrorResponse, GeoResponse } from "./types.js"; -export async function ubicacion(lugar: string, limit = '1'): Promise { - const response = await fetch(`${process.env.WEATHER_URL}/geo/1.0/direct?q=${lugar}&limit=${limit}&appid=${process.env.WEATHER_API_KEY}`); +export async function ubicacion(lugar: string, limit = 1): Promise { + const response = await fetch(`${weatherUrl}/geo/1.0/direct?q=${lugar}&limit=${limit}&appid=${weatherApiKey}`); log('GET', response); if (!response.ok) { return { diff --git a/src/index.ts b/src/index.ts index 4a5f8f6..9616e34 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,13 +1,17 @@ import { ubicacion } from "./clima.js"; -if (typeof process.env.WEATHER_URL === 'undefined' || typeof process.env.WEATHER_API_KEY === 'undefined' || typeof process.argv[2] === 'undefined') { - console.error('WEATHER_URL', typeof process.env.WEATHER_URL); - console.error('WEATHER_API_KEY', typeof process.env.WEATHER_API_KEY); - console.error('Ciudad', typeof process.argv[2]); - process.exit(0); +export const weatherUrl = process.env.WEATHER_URL || '' as const, + weatherApiKey = process.env.WEATHER_API_KEY || '' as const, + commandInput = process.argv[2] || '' as const; +if (weatherUrl === '' || weatherApiKey === '' || commandInput === '') { + console.error('WEATHER_URL', weatherUrl); + console.error('WEATHER_API_KEY', weatherApiKey); + console.error('Ciudad', commandInput); + process.exit(0); } -const busqueda = await ubicacion(process.argv[2]); +const busqueda = await ubicacion(commandInput, 3); + +console.log('busqueda', busqueda); -console.log('Busqueda', busqueda); diff --git a/test.js b/test.js new file mode 100644 index 0000000..8c67ae3 --- /dev/null +++ b/test.js @@ -0,0 +1,54 @@ +const numeroEntero = 60; +const numeroDecimal = 10.5; +const numeroNegativo = -1; + +console.log("numeroEntero", numeroEntero); +console.log("numeroDecimal", numeroDecimal); +console.log("numeroNegativo", numeroNegativo); + +console.log('string / 2', "string" / 2); + + +const nanEsNumber = "" / 2; +const numInfinito = numeroEntero / 0; +const operacionesConString = "20"; +const resultado = 10 + 5 * 2 - 8 / 4; +const numeroBooleanoTrue = true; +const numeroBooleanoFalse = false; +const numeroNull = null; +const numeroUndefined = undefined; +const precedenciaOperadorMulti = 2 + 3 * 4; +const precedenciaOperadorDiv = 2 + 3 / 4; +const preferenciaDeEjecucion = (2 + 3) * 4; +const asociatividadSumyRes = 4 + 5 - 6; +let operadorAsignacionA, operadorAsignacionB; +operadorAsignacionA = operadorAsignacionB = 5; +const operadorExponente = 2 ** 3 ** 2; + +/* console.log("Tipo de dato Number", typeof numeroEntero, typeof numeroDecimal, typeof numeroNegativo); +console.log("Infinito", numInfinito); +console.log(typeof nanEsNumber); +console.log("operador +", numeroEntero + numeroDecimal); +console.log("operador -", numeroEntero - numeroDecimal); +console.log("operador *", numeroDecimal * numeroEntero); +console.log("operador /", numeroEntero / numeroDecimal); +console.log("operador %", numeroEntero % numeroDecimal); +console.log("operador ", numeroEntero ** numeroDecimal); +console.log("mezcla operadores", resultado); +console.log("suma con string", numeroEntero + operacionesConString); +console.log("resta con string", numeroEntero - operacionesConString); +console.log("multiplicacion con string", numeroEntero * operacionesConString); +console.log("division con string", numeroEntero / operacionesConString); +console.log("operacion con booleano true", numeroEntero + numeroBooleanoTrue); +console.log("operacion con booleano false", numeroEntero + numeroBooleanoFalse); +console.log("operacion booleano con string", operacionesConString + numeroBooleanoTrue); +console.log("operacion con null", numeroEntero * numeroNull); +console.log("operacion con undefined", numeroEntero * numeroUndefined); +console.log("operador de mayor precedencia multiplicacion", precedenciaOperadorMulti); +console.log("operador de mayor precedencia division", precedenciaOperadorDiv); +console.log("preferencia de ejecucion", preferenciaDeEjecucion); +console.log("asociatividad de izquierda a derecha", asociatividadSumyRes); +console.log("asociatividad de derecha a izquierda (=)", operadorAsignacionA, operadorAsignacionB); +console.log("asociatividad de derecha a izquierda ()", operadorExponente); +console.log("operador de incremento prefijo", ++operadorAsignacionA); +console.log("operador de incremento postfijo", operadorAsignacionA++); */ \ No newline at end of file