26 $this->apiMain = $main;
29 public function hasParam( $name, array $options ) {
30 return $this->apiMain->getCheck( $name );
33 public function getValue( $name, $default, array $options ) {
34 $value = $this->apiMain->getVal( $name, $default );
35 $request = $this->apiMain->getRequest();
36 $rawValue = $request->getRawVal( $name );
38 if ( $options[
'raw'] ??
false ) {
42 if ( is_string( $rawValue ) ) {
44 if ( substr( $rawValue, 0, 1 ) ===
"\x1f" ) {
47 $value = implode(
"\x1f", $request->normalizeUnicode( explode(
"\x1f", $rawValue ) ) );
51 if ( $rawValue !== $value ) {
52 $options[
'module']->handleParamNormalization( $name, $value, $rawValue );
59 public function hasUpload( $name, array $options ) {
64 $upload = $this->apiMain->getUpload( $name );
65 if ( !$upload->exists() ) {
69 'error' => $upload->getError(),
70 'tmp_name' => $upload->getTempName(),
71 'size' => $upload->getSize(),
72 'name' => $upload->getName(),
73 'type' => $upload->getType(),
81 $module = $options[
'module'];
85 case 'param-deprecated':
86 case 'deprecated-value':
87 if ( $code ===
'param-deprecated' ) {
90 $feature = $name .
'=' . $value;
91 $data = $message->
getData() ?? [];
92 if ( isset( $data[
'💩'] ) ) {
94 unset( $data[
'💩'] );
95 $message = DataMessageValue::new(
105 while ( !$m->isMain() ) {
106 $p = $m->getParent();
107 $mName = $m->getModuleName();
108 $mParam = $p->encodeParamName( $p->getModuleManager()->getModuleGroup( $mName ) );
109 $feature =
"{$mParam}={$mName}&{$feature}";
112 $module->addDeprecation(
119 case 'param-sensitive':
120 $module->getMain()->markParamsSensitive( $name );
134 return $this->apiMain->canApiHighLimits();
This is the main API class, used for both external and internal processing.