Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor-pro/openai/Http/Response.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Helper class for handling magic ai functionalities
4
+
*
5
+
* @package TutorPro\OpenAI
6
+
* @author Themeum <support@themeum.com>
7
+
* @link https://themeum.com
8
+
* @since 3.0.0
9
+
*/
10
+
11
+
namespace TutorPro\OpenAI\Http;
12
+
13
+
if ( ! defined( 'ABSPATH' ) ) {
14
+
exit;
15
+
}
16
+
17
+
/**
18
+
* Handle the response from the request.
19
+
*
20
+
* @since 3.0.0
21
+
*/
22
+
class Response {
23
+
/**
24
+
* The request instance.
25
+
*
26
+
* @since 3.0.0
27
+
*
28
+
* @var Request
29
+
*/
30
+
private Request $request;
31
+
32
+
/**
33
+
* The constructor method for making the response from the request.
34
+
*
35
+
* @since 3.0.0
36
+
*
37
+
* @param Request $request The request instance.
38
+
*/
39
+
private function __construct( Request $request ) {
40
+
$this->request = $request;
41
+
}
42
+
43
+
/**
44
+
* Create the response instance.
45
+
*
46
+
* @since 3.0.0
47
+
*
48
+
* @param Request $request The request instance.
49
+
*
50
+
* @return self
51
+
*/
52
+
public static function create( Request $request ) {
53
+
return new self( $request );
54
+
}
55
+
56
+
/**
57
+
* Parse tht request and make the response.
58
+
*
59
+
* @since 3.0.0
60
+
*
61
+
* @param string $type The response type. Available values json|raw.
62
+
*
63
+
* @return array|object
64
+
*/
65
+
public function parse( string $type ) {
66
+
$response = array(
67
+
'status_code' => $this->request->get_status_code(),
68
+
);
69
+
70
+
$has_error = $this->request->has_error();
71
+
72
+
if ( $has_error ) {
73
+
$response['error_message'] = $this->request->get_error_message();
74
+
75
+
return $response;
76
+
}
77
+
78
+
$status_code = $this->request->get_status_code();
79
+
80
+
if ( $status_code >= 400 ) {
81
+
$data = $this->request->get_json();
82
+
83
+
if ( ! empty( $data->error ) ) {
84
+
$response['error_message'] = $data->error->message;
85
+
}
86
+
87
+
return $response;
88
+
}
89
+
90
+
switch ( $type ) {
91
+
case 'json':
92
+
$response['data'] = $this->request->get_json();
93
+
break;
94
+
case 'raw':
95
+
$response['data'] = $this->request->get_body();
96
+
break;
97
+
}
98
+
99
+
return $response;
100
+
}
101
+
102
+
/**
103
+
* Get the JSON response.
104
+
*
105
+
* @since 3.0.0
106
+
*
107
+
* @return array
108
+
*/
109
+
public function json() {
110
+
return $this->parse( 'json' );
111
+
}
112
+
113
+
/**
114
+
* The raw response body
115
+
*
116
+
* @since 3.0.0
117
+
*
118
+
* @return array
119
+
*/
120
+
public function raw() {
121
+
return $this->parse( 'raw' );
122
+
}
123
+
124
+
/**
125
+
* Return the response as a response of base64 png image.
126
+
*
127
+
* @since 3.0.0
128
+
*
129
+
* @return array
130
+
*/
131
+
public function as_base64_image() {
132
+
$response = $this->json();
133
+
134
+
if ( $response['status_code'] >= 400 ) {
135
+
return $response;
136
+
}
137
+
138
+
$data = $response['data'] ?? array();
139
+
140
+
if ( ! empty( $data->data ) ) {
141
+
foreach ( $data->data as &$item ) {
142
+
$item->b64_json = 'data:image/png;base64,' . $item->b64_json;
143
+
}
144
+
145
+
unset( $item );
146
+
$response['data'] = $data;
147
+
}
148
+
149
+
return $response;
150
+
}
151
+
}
152
+