Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor-pro/openai/Http/Response.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
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 +