@@ -24,110 +24,14 @@ class {{ service.name | caseUcfirst }} extends Service
2424
2525 */
2626 public function {{ method . name | caseCamel }}({% for parameter in method . parameters . all % }{{ parameter . type | typeName }}${{ parameter . name | caseCamel | escapeKeyword }}{% if not parameter . required % } = null {% endif % }{% if not loop . last % }, {% endif % }{% endfor % }{% if ' multipart/form-data' in method . consumes % }, callable $onProgress = null {% endif % }): {{ method | getReturn }}
27-
2827 {
29- {% for parameter in method . parameters . all % }
30- {% if parameter . required % }
31- if (! isset (${{ parameter . name | caseCamel | escapeKeyword }})) {
32- throw new {{spec . title | caseUcfirst }}Exception(' Missing required parameter: "{{ parameter.name | caseCamel | escapeKeyword }}"' );
33- }
34-
35- {% endif % }
36- {% endfor % }
3728 $path = str_replace ([{% for parameter in method . parameters . path % }' {{ ' {' }}{{ parameter.name | caseCamel }}{{ ' }' }}' {% if not loop . last % }, {% endif % }{% endfor % }], [{% for parameter in method . parameters . path % }${{ parameter . name | caseCamel | escapeKeyword }}{% if not loop . last % }, {% endif % }{% endfor % }], ' {{ method.path }}' );
38- $params = [];
39-
40- {% for parameter in method . parameters . query % }
41- if (! is_null (${{ parameter . name | caseCamel | escapeKeyword }})) {
42- $params [' {{ parameter.name }}' ] = ${{ parameter . name | caseCamel | escapeKeyword }};
43- }
4429
45- {% endfor % }
46- {% for parameter in method . parameters . body % }
47- if (! is_null (${{ parameter . name | caseCamel | escapeKeyword }})) {
48- $params [' {{ parameter.name }}' ] = ${{ parameter . name | caseCamel | escapeKeyword }};
49- }
50-
51- {% endfor % }
52- {% for parameter in method . parameters . formData % }
53- if (! is_null (${{ parameter . name | caseCamel | escapeKeyword }})) {
54- $params [' {{ parameter.name }}' ] = ${{ parameter . name | caseCamel | escapeKeyword }};
55- }
56-
57- {% endfor % }
30+ {{ include (' php/base/requests/params.twig' ) }}
5831{% if ' multipart/form-data' in method . consumes % }
59- {% for parameter in method . parameters . all % }
60- {% if parameter . type == ' file' % }
61- $size = filesize (${{ parameter . name | caseCamel }});
62- $mimeType = mime_content_type (${{ parameter . name | caseCamel }});
63- $postedName = basename (${{ parameter . name | caseCamel }});
64- // send single file if size is less than or equal to 5MB
65- if ($size <= Client :: CHUNK_SIZE ) {
66- $params [' {{ parameter.name }}' ] = new \CURLFile (${{ parameter . name | caseCamel }}, $mimeType , $postedName );
67- return $this -> client -> call(Client :: METHOD_ {{ method . method | caseUpper }}, $path , [
68- {% for param in method . parameters . header % }
69- ' {{ param.name }}' => ${{ param . name | caseCamel }},
70- {% endfor % }
71- {% for key , header in method . headers % }
72- ' {{ key }}' => ' {{ header }}' ,
73- {% endfor % }
74- ], $params );
75- }
76-
77- $id = ' ' ;
78- $counter = 0 ;
79-
80- {% for parameter in method . parameters . all % }
81- {% if parameter . isUploadID % }
82- if (${{ parameter . name | caseCamel | escapeKeyword }} ! = ' unique()' ) {
83- try {
84- $response = $this -> client -> call(Client :: METHOD_GET , new URL ($path . ' /' . {{ parameter . name }}), headers );
85- $counter = $response [' chunksUploaded' ] ?? 0 ;
86- } catch (\ Exception $e ) {
87- }
88- }
89- {% endif % }
90- {% endfor % }
91-
92- $headers = [' content-type' => ' multipart/form-data' ];
93- $handle = @ fopen (${{ parameter . name | caseCamel }}, " rb" );
94- $start = $counter * Client :: CHUNK_SIZE ;
95- while ($start < $size ) {
96- fseek ($handle , $start );
97- $params [' {{ parameter.name }}' ] = new \CURLFile (' data://' . $mimeType . ' ;base64,' . base64_encode (@ fread ($handle , Client :: CHUNK_SIZE )), $mimeType , $postedName );
98- $headers [' content-range' ] = ' bytes ' . ($counter * Client :: CHUNK_SIZE ) . ' -' . min (((($counter * Client :: CHUNK_SIZE ) + Client :: CHUNK_SIZE ) - 1 ), $size ) . ' /' . $size ;
99- if (! empty ($id )) {
100- $headers [' x-{{spec.title | caseLower }}-id' ] = $id ;
101- }
102- $response = $this -> client -> call(Client :: METHOD_POST , $path , $headers , $params );
103- $counter ++ ;
104- $start + = Client :: CHUNK_SIZE ;
105- if (empty ($id )) {
106- $id = $response [' $id' ];
107- }
108- if ($onProgress ! == null ) {
109- $onProgress ([
110- ' $id' => $response [' $id' ],
111- ' progress' => min (((($counter * Client :: CHUNK_SIZE ) + Client :: CHUNK_SIZE ) - 1 ), $size ) / $size * 100 ,
112- ' sizeUploaded' => min ($counter * Client :: CHUNK_SIZE ),
113- ' chunksTotal' => $response [' chunksTotal' ],
114- ' chunksUploaded' => $response [' chunksUploaded' ],
115- ]);
116- }
117- }
118- @ fclose ($handle );
119- return $response ;
120- {% endif % }
121- {% endfor % }
32+ {{ include (' php/base/requests/file.twig' ) }}
12233{% else % }
123- return $this -> client -> call(Client :: METHOD_ {{ method . method | caseUpper }}, $path , [
124- {% for parameter in method . parameters . header % }
125- ' {{ parameter.name }}' => ${{ parameter . name | caseCamel | escapeKeyword }},
126- {% endfor % }
127- {% for key , header in method . headers % }
128- ' {{ key }}' => ' {{ header }}' ,
129- {% endfor % }
130- ], $params );
34+ {{ include (' php/base/requests/api.twig' ) }}
13135{% endif % }
13236 }
13337{% if not loop . last % }
0 commit comments