/
index.php
154 lines (142 loc) · 4.21 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?php
/**
* Descripción: Punto de entrada WS
*
* @category Categoria
* @package WSSimple
* @author Machado, Juan Martín <machado.juanmartin@gmail.com>
* @license juanmartinmachado www.juanmartinmachado.com.ar
* @version 1.0.0
* @link jmartinmachado, https://github.com/jmartinmachado/WSSimple
*
* @internal Fecha de creación: 2016-01-19
* @internal Ultima modificación: 2016-01-19
*
* @internal Audit trail
* (AAAA-MM-DD) Autor: Modificación
*/
/**
* Configuracion
*/
require_once dirname(__file__) . "/config/config.php";
/**
* Libreria de logs
*/
require_once dirname(__file__) . "/lib/FuncionLog/log.php";
/**
* Seteo el timezone
*/
date_default_timezone_set("America/Argentina/Buenos_Aires");
/**
* Seteo el header de respuesta json
*/
header("Content-Type: application/json");
/**
* Leo el contenido del json y lo parseo
*/
$resultado = json_encode(inicio(file_get_contents("php://input")));
ws_info($resultado);
echo $resultado;
/**
* Descripcion: Cargo automaticamente las clases
*
* @param json $json json de entrada
*
* @author Juan Martin Machado
*
* @internal Fecha de creación: 2016-01-19
* @internal Ultima modificación: 2016-01-19
* @internal Razón: Creacion
*
* @return json Resultado de la operacion
*/
function inicio($json)
{
try {
/**
* Respuesta pocr defecto
*/
$datosTransaccion = new stdclass();
$datosTransaccion->fecha = date("Y-m-d H-i-s");
$datosTransaccion->mensaje = MSJ_ERROR;
$datosTransaccion->resultado = null;
/**
* Parseo el json
*/
ws_info($json);
$datos = json_decode($json);
if (!$datos) {
$datosTransaccion->mensaje = "Error al intentar parsear el json";
return $datosTransaccion;
}
/**
* Controlo que esten los necesarios del json
*/
if (!isset($datos->servicio)) {
$datosTransaccion->mensaje = "Error al intentar parsear el json. No se encontro el campo 'servicio'";
return $datosTransaccion;
}
if (!isset($datos->operacion)) {
$datosTransaccion->mensaje = "Error al intentar parsear el json. No se encontro el campo 'operacion'";
return $datosTransaccion;
}
if (!isset($datos->param)) {
$datosTransaccion->mensaje = "Error al intentar parsear el json. No se encontro el campo 'param'";
return $datosTransaccion;
}
/**
* Intento cargar la clase del servicio
*/
if (!cargarClase($datos->servicio)) {
$datosTransaccion->mensaje = "No se encontro clase '". $datos->servicio . "'";
return $datosTransaccion;
}
/**
* Intento instanciar la clase
*/
if (class_exists($datos->servicio)) {
$clase = new $datos->servicio();
} else {
$datosTransaccion->mensaje = "Error al tratar de instanciar clase '". $datos->servicio . "'";
return $datosTransaccion;
}
/**
* Controlo que exista el metodo exista
*/
if (method_exists($clase, $datos->operacion)) {
$metodo = $datos->operacion;
$datosTransaccion->resultado = $clase->$metodo($datos->param);
$datosTransaccion->mensaje = MSJ_OK;
return $datosTransaccion;
} else {
$datosTransaccion->mensaje = "Error al tratar de invocar al metodo '". $datos->operacion . "'";
return $datosTransaccion;
}
} catch (Exception $e) {
$datosTransaccion->mensaje = $e->getMessage();
}
return $datosTransaccion;
}
/**
* Descripcion: carga la clases y metodos
*
* @param string $nombreClase Nombre de la clase a cargar
*
* @author Juan Martin Machado
*
* @internal Fecha de creación: 2016-01-19
* @internal Ultima modificación: 2016-01-19
* @internal Razón: Creacion
*
* @return boolean Resultado de la operacion
*/
function cargarClase($nombreClase)
{
$archivoClase = PATH_CLASES . $nombreClase . "/" . $nombreClase . ".php";
if (file_exists($archivoClase)) {
include_once $archivoClase;
return true;
} else {
return false;
}
}