13
13
*/
14
14
class ParseCloud
15
15
{
16
+ protected static $ requestCallable ;
17
+
18
+ /**
19
+ * Sets a callable to be used for making requests.
20
+ *
21
+ * This method allows injection of a mockable callable for testing purposes.
22
+ *
23
+ * @param callable $callable The callable to use for requests.
24
+ */
25
+ public static function setRequestCallable (callable $ callable )
26
+ {
27
+ self ::$ requestCallable = $ callable ;
28
+ }
29
+
30
+ /**
31
+ * Gets the callable used for making requests.
32
+ *
33
+ * If no callable has been set, it returns the default callable that calls ParseClient::_request.
34
+ *
35
+ * @return callable The callable used for requests.
36
+ */
37
+ protected static function getRequestCallable ()
38
+ {
39
+ if (!self ::$ requestCallable ) {
40
+ self ::$ requestCallable = function ($ method , $ path , $ sessionToken = null , $ data = null , $ useMasterKey = false , $ contentType = 'application/json ' , $ returnHeaders = false ) {
41
+ return ParseClient::_request ($ method , $ path , $ sessionToken , $ data , $ useMasterKey , $ contentType , $ returnHeaders );
42
+ };
43
+ }
44
+ return self ::$ requestCallable ;
45
+ }
46
+
16
47
/**
17
48
* Makes a call to a Cloud function.
18
49
*
@@ -28,15 +59,18 @@ public static function run($name, $data = [], $useMasterKey = false)
28
59
if (ParseUser::getCurrentUser ()) {
29
60
$ sessionToken = ParseUser::getCurrentUser ()->getSessionToken ();
30
61
}
31
- $ response = ParseClient::_request (
62
+
63
+ $ response = call_user_func (
64
+ self ::getRequestCallable (),
32
65
'POST ' ,
33
66
'functions/ ' .$ name ,
34
67
$ sessionToken ,
35
68
json_encode (ParseClient::_encode ($ data , false )),
36
69
$ useMasterKey
37
70
);
38
71
39
- return ParseClient::_decode ($ response ['result ' ]);
72
+ $ returnVal = isset ($ response ['result ' ]) ? $ response ['result ' ] : [];
73
+ return ParseClient::_decode ($ returnVal );
40
74
}
41
75
42
76
/**
0 commit comments