<commit_before>'use strict';

import request from 'request';

class Textveloper {
	constructor({ cuenta_token, aplicacion_token }) {
		if (!cuenta_token || !aplicacion_token) {
			throw new Error('Se requiren los parámetros \'cuenta_token\' y \'aplicacion_token\'.');
		} 

		if (typeof cuenta_token !== 'string' || typeof aplicacion_token !== 'string') {
			throw new Error('Los parámetros \'cuenta_token\' y \'aplicacion_token\' deben ser String.');
		}

		this._cuenta_token = cuenta_token;
		this._aplicacion_token = aplicacion_token;
	}

	enviar({ telefono, mensaje }, callback) {
		if (!telefono || !mensaje) {
			throw new Error('Se requieren los parámetros \'telefono\' y \'mensaje\' para enviar un SMS.');
		} 

		if (typeof telefono !== 'string' || typeof mensaje !== 'string') {
			const _error = new Error(_mensaje);
			_error.message = `Se esperaba que 'telefono' y 'mensaje' fuesen string, pero ` +
				`se recibió ${typeof telefono} y ${typeof mensaje}.`;

			return callback(_error);
		} 

		if (!telefono.startsWith('0')) {
			const _error = new Error();
			_error.message = 'El parámetro \'telefono\' debe poseer obligatoriamente ' +
				'uno de los siguientes prefijos: 0412, 0414, 0424, 0426, 0416.';
			
			return callback(_error);
		}

		const form = {
			cuenta_token: this._cuenta_token,
			aplicacion_token: this._aplicacion_token,
			telefono, 
			mensaje 
		};

		const config = {
			url: 'http://api.textveloper.com/sms/enviar/',
			method: 'POST',
			form
		};

		request(config, function(error, response, body) {
			if (error) {
				const _error = new Error();
				_error.message = `No se pudo enviar el SMS: ${error.message}`;

				return callback(_error); 
			} 

			if (response.statusCode !== 200) {
				const _error = new Error();
				_error.message = JSON.parse(body).detalle};

				return callback(_error);
			}
			
			callback(null, body);
		});
	}

	// Obsotelo
	puntos(cuenta, callback) {
		const form = {
			cuenta_token: this._cuentaToken
		};
		let url = 'http://api.textveloper.com/saldo-cuenta/';
		let cb = callback;

		if (!cuenta) {
			throw new Error('El primer argumento debe se un string o un callback function.');
		} else if (typeof cuenta === 'string') {
			if (cuenta === 'subcuenta') {
				url = 'http://api.textveloper.com/saldo-subcuenta/';
				form.subcuenta_token = this._subcuentaToken;
			}<commit_msg>Corrige error de sintaxis en método 'enviar'<commit_after>'use strict';

import request from 'request';

class Textveloper {
	constructor({ cuenta_token, aplicacion_token }) {
		if (!cuenta_token || !aplicacion_token) {
			throw new Error('Se requiren los parámetros \'cuenta_token\' y \'aplicacion_token\'.');
		} 

		if (typeof cuenta_token !== 'string' || typeof aplicacion_token !== 'string') {
			throw new Error('Los parámetros \'cuenta_token\' y \'aplicacion_token\' deben ser String.');
		}

		this._cuenta_token = cuenta_token;
		this._aplicacion_token = aplicacion_token;
	}

	enviar({ telefono, mensaje }, callback) {
		if (!telefono || !mensaje) {
			throw new Error('Se requieren los parámetros \'telefono\' y \'mensaje\' para enviar un SMS.');
		} 

		if (typeof telefono !== 'string' || typeof mensaje !== 'string') {
			const _error = new Error(_mensaje);
			_error.message = `Se esperaba que 'telefono' y 'mensaje' fuesen string, pero ` +
				`se recibió ${typeof telefono} y ${typeof mensaje}.`;

			return callback(_error);
		} 

		if (!telefono.startsWith('0')) {
			const _error = new Error();
			_error.message = 'El parámetro \'telefono\' debe poseer obligatoriamente ' +
				'uno de los siguientes prefijos: 0412, 0414, 0424, 0426, 0416.';
			
			return callback(_error);
		}

		const form = {
			cuenta_token: this._cuenta_token,
			aplicacion_token: this._aplicacion_token,
			telefono, 
			mensaje 
		};

		const config = {
			url: 'http://api.textveloper.com/sms/enviar/',
			method: 'POST',
			form
		};

		request(config, function(error, response, body) {
			if (error) {
				const _error = new Error();
				_error.message = `No se pudo enviar el SMS: ${error.message}`;

				return callback(_error); 
			} 

			if (response.statusCode !== 200) {
				const _error = new Error();
				_error.message = JSON.parse(body).detalle;

				return callback(_error);
			}
			
			callback(null, body);
		});
	}

	// Obsotelo
	puntos(cuenta, callback) {
		const form = {
			cuenta_token: this._cuentaToken
		};
		let url = 'http://api.textveloper.com/saldo-cuenta/';
		let cb = callback;

		if (!cuenta) {
			throw new Error('El primer argumento debe se un string o un callback function.');
		} else if (typeof cuenta === 'string') {
			if (cuenta === 'subcuenta') {
				url = 'http://api.textveloper.com/saldo-subcuenta/';
				form.subcuenta_token = this._subcuentaToken;
			}
{'fraction_non_alphanumeric': 0.14396805380411937, 'fraction_numerical': 0.01008827238335435, 'mean_word_length': 3.435228331780056, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '177469', 'n_tokens_mistral': 1951, 'n_tokens_neox': 1672, 'n_words': 420}