*/ private $settings; /** * Constructor. * * @param array $settings Settings. */ public function __construct( array $settings ) { $this->settings = $settings; } /** * Get account balance. */ public function get_balance(): ApiResult { return ApiResult::success( array( 'balance' => '100.00', ), 200, array( 'mock' => true ) ); } /** * Send SMS. * * @param string $message Message text. * @param string[] $phones Recipient phones. * @param array $options Extra options. */ public function send_sms( string $message, array $phones, array $options = array() ): ApiResult { return $this->mock_send( 'sms', $message, $phones ); } /** * Send Viber. * * @param string $message Message text. * @param string[] $phones Recipient phones. * @param array $options Extra options. */ public function send_viber( string $message, array $phones, array $options = array() ): ApiResult { return $this->mock_send( 'viber', $message, $phones ); } /** * Get SMS statuses. * * @param string[] $message_ids Message IDs. */ public function get_sms_statuses( array $message_ids ): ApiResult { return $this->mock_statuses( $message_ids, 'delivrd' ); } /** * Get Viber statuses. * * @param string[] $message_ids Message IDs. */ public function get_viber_statuses( array $message_ids ): ApiResult { return $this->mock_statuses( $message_ids, 'delivrd' ); } /** * Mock send response. * * @param string $channel Channel. * @param string $message Message. * @param string[] $phones Phones. */ private function mock_send( string $channel, string $message, array $phones ): ApiResult { $items = array(); foreach ( $phones as $phone ) { $items[] = array( 'message_id' => wp_generate_uuid4(), 'number' => $phone, 'status' => 'OK', 'cost' => '0.00', 'country' => 'ua', 'mccmnc' => '', 'parts' => 'sms' === $channel ? '1' : '0', ); } return ApiResult::success( array( 'channel' => $channel, 'items' => $items, 'message' => $message, ), 200, array( 'mock' => true ) ); } /** * Mock status response. * * @param string[] $message_ids Message IDs. * @param string $status Status. */ private function mock_statuses( array $message_ids, string $status ): ApiResult { $statuses = array(); foreach ( $message_ids as $message_id ) { $statuses[ $message_id ] = array( array( 'date' => gmdate( 'c' ), 'status' => $status, ), ); } return ApiResult::success( array( 'statuses' => $statuses, ), 200, array( 'mock' => true ) ); } }