api_client = $api_client; } /** * @param stdClass $item . * @param string $field_name . * * @return stdClass */ private function unset_item_field( $item, $field_name ) { unset( $item->{$field_name} ); return $item; } /** * @param stdClass $item . * * @return stdClass */ private function unset_item_unnecessary_data( $item ) { foreach ( $item as $property => $value ) { if ( ! in_array( $property, [ 'name', 'type', 'address', 'payment_available' ], true ) ) { $item = $this->unset_item_field( $item, $property ); } } return $item; } /** * Get points from api. * * @param string $type . * * @return array * @throws Exception|WPDesk_Paczkomaty_ShipX_Exception . */ public function get_points_from_api( $type = 'parcel_locker' ) { $params = [ 'per_page' => self::MAX_PER_PAGE, ]; if ( $type ) { $params['type'] = $type; } $get_points = true; while ( $get_points ) { $get_points = false; try { $api_points = $this->api_client->get_points( $params ); } catch ( Exception $e ) { $per_page = $params['per_page']; if ( self::MAX_PER_PAGE === $per_page && WPDesk_Paczkomaty_ShipX::API_PER_PAGE !== $per_page ) { $params['per_page'] = WPDesk_Paczkomaty_ShipX::API_PER_PAGE; $api_points = $this->api_client->get_points( $params ); } else { throw $e; } } foreach ( $api_points->items as $item ) { yield $this->unset_item_unnecessary_data( $item ); } if ( $api_points->page < $api_points->total_pages ) { $get_points = true; $params['page'] = intval( $api_points->page ) + 1; } unset( $api_points ); } } /** * Returns point data from API. * * @see https://docs.inpost24.com/display/PL/%5B1.5.2%5D+Points#id-[1.5.2]Points-Informationaboutpoints * * @param string $point_name . * * @return stdClass * @throws Exception . * @throws WPDesk_Paczkomaty_ShipX_Exception . */ public function get_point_from_api( $point_name ) { return $this->api_client->get_point( $point_name ); } }