26 $this->apiMain = $main;
30 public function hasParam( $name, array $options ) {
31 return $this->apiMain->getCheck( $name );
35 public function getValue( $name, $default, array $options ) {
36 $value = $this->apiMain->getVal( $name, $default );
37 $request = $this->apiMain->getRequest();
38 $rawValue = $request->getRawVal( $name );
40 if ( $options[
'raw'] ??
false ) {
44 if ( is_string( $rawValue ) ) {
46 if ( str_starts_with( $rawValue,
"\x1f" ) ) {
49 $value = implode(
"\x1f", $request->normalizeUnicode( explode(
"\x1f", $rawValue ) ) );
53 if ( $rawValue !== $value ) {
54 $options[
'module']->handleParamNormalization( $name, $value, $rawValue );
62 public function hasUpload( $name, array $options ) {
68 $upload = $this->apiMain->getUpload( $name );
69 if ( !$upload->exists() ) {
73 'error' => $upload->getError(),
74 'tmp_name' => $upload->getTempName(),
75 'size' => $upload->getSize(),
76 'name' => $upload->getName(),
77 'type' => $upload->getType(),
86 $module = $options[
'module'];
90 case 'param-deprecated':
91 case 'deprecated-value':
92 if ( $code ===
'param-deprecated' ) {
95 $feature = $name .
'=' . $value;
96 $data = $message->
getData() ?? [];
97 if ( isset( $data[
'💩'] ) ) {
99 unset( $data[
'💩'] );
100 $message = DataMessageValue::new(
110 while ( !$m->isMain() ) {
111 $p = $m->getParent();
112 $mName = $m->getModuleName();
113 $mParam = $p->encodeParamName( $p->getModuleManager()->getModuleGroup( $mName ) );
114 $feature =
"{$mParam}={$mName}&{$feature}";
117 $module->addDeprecation(
124 case 'param-sensitive':
125 $module->getMain()->markParamsSensitive( $name );
140 return $this->apiMain->canApiHighLimits();
This is the main API class, used for both external and internal processing.