this link to get the API. Follow these instructions to configure the gateway.', 'texty' ), 'https://app.clickatell.com/my-workspace', 'https://github.com/weDevsOfficial/texty/wiki/Clickatell' ); } /** * Get the logo * * @return string */ public function logo() { return TEXTY_URL . '/assets/images/clickatell.svg'; } /** * Get the settings * * @return array */ public function get_settings() { $creds = texty()->settings()->get( 'clickatell' ); return [ 'key' => [ 'name' => __( 'API Key', 'texty' ), 'type' => 'password', 'value' => isset( $creds['key'] ) ? $creds['key'] : '', 'help' => '', ], ]; } /** * Send SMS * * @param string $to * @param string $message * * @return WP_Error|true */ public function send( $to, $message ) { $creds = texty()->settings()->get( 'clickatell' ); $args = [ 'headers' => [ 'Authorization' => $creds['key'], 'Content-Type' => 'application/json', 'Accept' => 'application/json', ], 'body' => wp_json_encode( [ 'to' => [ $to ], 'content' => $message, ] ), ]; $response = wp_remote_post( self::ENDPOINT, $args ); if ( is_wp_error( $response ) ) { return $response; } $body = wp_remote_retrieve_body( $response ); $response_code = wp_remote_retrieve_response_code( $response ); // phpcs:disable if ( 202 !== $response_code ) { switch ( $response_code ) { case 200: $body = json_decode( $body ); return new WP_Error( $body->errorCode, $body->errorDescription ); case 400: return new WP_Error( 400, 'Bad Request' ); default: return new WP_Error( $response_code, 'Bad Request' ); } } // phpcs:enable return true; } /** * Validate a REST API request * * @param WP_REST_Request $request * * @return WP_Error|true */ public function validate( $request ) { $creds = $request->get_param( 'clickatell' ); return [ 'key' => $creds['key'], ]; } }