1

When I use the category property I see this error:

Fatal error: Uncaught CloudRail\Error\IllegalArgumentError: Illegal argument used: Unknown category. in ...\vendor\cloudrail\library-php\src\Service\GooglePlaces.php

Without category all work fine. My code:

$cr_service = load_cloudrail_service('GooglePlaces');
$retrievedPOIs = $cr_service->getNearbyPOIs(50.45594, 30.465612, 40000, '', ['restaurant']);

function load_cloudrail_service($serviceName = 'Foursquare') {
  global $options;

  Settings::$licenseKey = $options['cr_key'];

  switch ($serviceName) {
    case 'Foursquare':
    $result = new Foursquare( $options['fsquare_id'], $options['fsquare_secret'] );
    break;
    case 'Yelp':
    $result = new \CloudRail\Service\Yelp( $options['yelp_key'] );
    break;
    case 'GooglePlaces':
    $result = new GooglePlaces( $options['gplaces_key'] );
    break;
  }
  return $result;
}

The same error with other services. What wrong? Thank you.

Bram Houben
  • 180
  • 2
  • 15
Yura Kosyak
  • 401
  • 3
  • 16

2 Answers2

0

I dont know if you posted the whole class code, but it seems that the import is not being done properly. To avoid the unknown category error be sure that you loaded the proper classes:

If integrated through composer you can load all classes using the default autoloader, and you just need to specify what categories are you using with the require (or require_once) statement and make sure that you have installed the SDK using composer install or equivalent. Test the following code (I have already tested for CloudRail v1.0.1), if it is not working properly, then it should be something either on the autoload or the composer:

<?php

require_once __DIR__ . '/vendor/autoload.php';

use CloudRail\Service\Foursquare;
use CloudRail\Service\GooglePlaces;
use CloudRail\Service\Yelp;

use CloudRail\Settings;

Settings::$licenseKey = "[CLOUDRAIL_KEY]";

/**
 * @var \CloudRail\Interfaces\PointsOfInterest
 */
$service = null;

/**
 * @var string
 */
$serviceName = "GooglePlaces"; //TODO:Just change the interface name :)

switch ($serviceName){
    case "Foursquare":
        $service = new Foursquare( "[FOURSQUARE_KEY]","[FOURSQUARE_SECRET]]");
        break;
    case "Yelp":
        $service = new Yelp( "[API_KEY]");
        break;
    case "GooglePlaces":
        $service = new GooglePlaces( "[API_KEY]");
        break;
}

$retrievedPOIs = $service->getNearbyPOIs( -15.7662,-47.8829,3000,"cafe",[]);

var_dump($retrievedPOIs);
  • I included class as shown in CloudRail examples: `require_once 'vendor/autoload.php'; use CloudRail\Settings; use CloudRail\Service\Foursquare; use CloudRail\Service\GooglePlaces; ` To install CloudRail service I used composer. – Yura Kosyak Jun 05 '18 at 13:23
0

Thank you for update to 1.0.2 version. It helped. But when I had tried to update version I have received incorrect version of cloudrail. To avoid this issue just remove composer.lock or use command composer install update to update dependencies in lock file.

david
  • 3,225
  • 9
  • 30
  • 43
Yura Kosyak
  • 401
  • 3
  • 16