예제 #1
0
def test_delete_target(
    mock_database: VuforiaDatabase,
    vws_client: VWS,
    high_quality_image: io.BytesIO,
) -> None:
    """
    It is possible to delete a target.
    """
    runner = CliRunner()
    target_id = vws_client.add_target(
        name='x',
        width=1,
        image=high_quality_image,
        active_flag=True,
        application_metadata=None,
    )
    assert vws_client.list_targets() == [target_id]
    commands = [
        'delete-target',
        '--target-id',
        target_id,
        '--server-access-key',
        mock_database.server_access_key,
        '--server-secret-key',
        mock_database.server_secret_key,
    ]
    vws_client.wait_for_target_processed(target_id=target_id)
    result = runner.invoke(vws_group, commands, catch_exceptions=False)
    assert result.exit_code == 0
    assert result.stdout == ''
    assert vws_client.list_targets() == []
예제 #2
0
 def test_inactive_project(
     self,
     inactive_vws_client: VWS,
 ) -> None:
     """
     The project's active state does not affect the target list.
     """
     # No exception is raised.
     inactive_vws_client.list_targets()
예제 #3
0
def _delete_all_targets(database_keys: VuforiaDatabase) -> None:
    """
    Delete all targets.

    Args:
        database_keys: The credentials to the Vuforia target database to delete
            all targets in.
    """
    vws_client = VWS(
        server_access_key=database_keys.server_access_key,
        server_secret_key=database_keys.server_secret_key,
    )

    targets = vws_client.list_targets()

    for target in targets:
        vws_client.wait_for_target_processed(target_id=target)
        # Even deleted targets can be matched by a query for a few seconds so
        # we change the target to inactive before deleting it.
        try:
            vws_client.update_target(target_id=target, active_flag=False)
        except TargetStatusNotSuccess:
            pass
        vws_client.wait_for_target_processed(target_id=target)
        vws_client.delete_target(target_id=target)
    def test_give_no_details(self, high_quality_image: io.BytesIO) -> None:
        """
        It is possible to create a database without giving any data.
        """
        databases_url = _EXAMPLE_URL_FOR_TARGET_MANAGER + '/databases'
        response = requests.post(url=databases_url, json={})
        assert response.status_code == HTTPStatus.CREATED

        data = response.json()

        assert data['targets'] == []
        assert data['state_name'] == 'WORKING'
        assert 'database_name' in data.keys()

        vws_client = VWS(
            server_access_key=data['server_access_key'],
            server_secret_key=data['server_secret_key'],
        )

        cloud_reco_client = CloudRecoService(
            client_access_key=data['client_access_key'],
            client_secret_key=data['client_secret_key'],
        )

        assert not vws_client.list_targets()
        assert not cloud_reco_client.query(image=high_quality_image)
예제 #5
0
 def test_includes_targets(
     self,
     vws_client: VWS,
     target_id: str,
 ) -> None:
     """
     Targets in the database are returned in the list.
     """
     assert vws_client.list_targets() == [target_id]
예제 #6
0
    def test_delete_target(
        self,
        vws_client: VWS,
        high_quality_image: io.BytesIO,
    ) -> None:
        """
        It is possible to delete a target.
        """
        target_id = vws_client.add_target(
            name='x',
            width=1,
            image=high_quality_image,
            active_flag=True,
            application_metadata=None,
        )

        vws_client.wait_for_target_processed(target_id=target_id)
        assert target_id in vws_client.list_targets()
        vws_client.delete_target(target_id=target_id)
        assert target_id not in vws_client.list_targets()
예제 #7
0
 def test_deleted(
     self,
     vws_client: VWS,
     target_id: str,
 ) -> None:
     """
     Deleted targets are not returned in the list.
     """
     vws_client.wait_for_target_processed(target_id=target_id)
     vws_client.delete_target(target_id=target_id)
     assert vws_client.list_targets() == []
예제 #8
0
def list_targets(
    server_access_key: str,
    server_secret_key: str,
    base_vws_url: str,
) -> None:
    """
    List targets.

    \b
    See
    https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API.html#How-To-Get-a-Target-List-for-a-Cloud-Database.
    """
    vws_client = VWS(
        server_access_key=server_access_key,
        server_secret_key=server_secret_key,
        base_vws_url=base_vws_url,
    )
    targets = vws_client.list_targets()
    yaml_list = yaml.dump(targets)
    click.echo(yaml_list)
예제 #9
0
 def test_list_targets(
     self,
     vws_client: VWS,
     high_quality_image: io.BytesIO,
 ) -> None:
     """
     It is possible to get a list of target IDs.
     """
     id_1 = vws_client.add_target(
         name='x',
         width=1,
         image=high_quality_image,
         active_flag=True,
         application_metadata=None,
     )
     id_2 = vws_client.add_target(
         name='a',
         width=1,
         image=high_quality_image,
         active_flag=True,
         application_metadata=None,
     )
     assert sorted(vws_client.list_targets()) == sorted([id_1, id_2])
예제 #10
0
    SERVER_ACCESS_KEY = os.environ['UPLOADER_SERVER_ACCESS_KEY']
    SERVER_SECRET_KEY = os.environ['UPLOADER_SERVER_SECRET_KEY']
    CLIENT_ACCESS_KEY = os.environ['UPLOADER_CLIENT_ACCESS_KEY']
    CLIENT_SECRET_KEY = os.environ['UPLOADER_CLIENT_SECRET_KEY']

    VWS_CLIENT = VWS(
        server_access_key=SERVER_ACCESS_KEY,
        server_secret_key=SERVER_SECRET_KEY,
    )
    CLOUD_RECO_CLIENT = CloudRecoService(
        client_access_key=CLIENT_ACCESS_KEY,
        client_secret_key=CLIENT_SECRET_KEY,
    )

    # checks if the database is empty: if it is, perform the initialisation
    LIST_OF_TARGETS = VWS_CLIENT.list_targets()
    if not LIST_OF_TARGETS:
        shutil.rmtree("/logos/")
        os.remove("existing_restaurants.txt")
        os.remove("imagehashes.txt")
        print("Database is empty, performing initialisation")
        initialise(VWS_CLIENT, HEADERS)
    else:
        # Find the new restaurants
        FILE = 'existing_restaurants.txt'
        NEW_RESTAURANTS_LIST = check_for_new_restaurants(HEADERS, FILE)

        # Get and save the new restaurants to the /new/ directory
        NEW_IMAGES = get_images(NEW_RESTAURANTS_LIST, HEADERS)
        path = "/new/"
        save_images(NEW_IMAGES, path)