Пример #1
0
 /**
  * Fetches the gadget xml for the requested URL using the http fetcher
  *
  * @param unknown_type $gadgetUrl
  * @return string gadget's xml content
  */
 protected function fetchGadget($gadgetUrl)
 {
     $request = new RemoteContentRequest($gadgetUrl);
     $request->setToken($this->token);
     $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
     $xml = $this->context->getHttpFetcher()->fetch($request);
     if ($xml->getHttpCode() != '200') {
         throw new GadgetException("Failed to retrieve gadget content (recieved http code " . $xml->getHttpCode() . ")");
     }
     return $xml->getResponseContent();
 }
 public function getFeatureContent($feature, GadgetContext $context, $isGadgetContext)
 {
     if (empty($feature)) {
         return '';
     }
     if (!isset($this->features[$feature])) {
         throw new GadgetException("Invalid feature: " . htmlentities($feature));
     }
     $featureName = $feature;
     $feature = $this->features[$feature];
     $filesContext = $isGadgetContext ? 'gadgetJs' : 'containerJs';
     if (!isset($feature[$filesContext])) {
         // no javascript specified for this context
         return '';
     }
     $ret = '';
     if (Config::get('compress_javascript')) {
         $featureCache = Cache::createCache(Config::get('feature_cache'), 'FeatureCache');
         if ($featureContent = $featureCache->get(md5('features:' . $featureName . $isGadgetContext))) {
             return $featureContent;
         }
     }
     foreach ($feature[$filesContext] as $entry) {
         switch ($entry['type']) {
             case 'URL':
                 $request = new RemoteContentRequest($entry['content']);
                 $request->getOptions()->ignoreCache = $context->getIgnoreCache();
                 $response = $context->getHttpFetcher()->fetch($request);
                 if ($response->getHttpCode() == '200') {
                     $ret .= $response->getResponseContent() . "\n";
                 }
                 break;
             case 'FILE':
                 $file = $feature['basePath'] . '/' . $entry['content'];
                 $ret .= file_get_contents($file) . "\n";
                 break;
             case 'INLINE':
                 $ret .= $entry['content'] . "\n";
                 break;
         }
     }
     if (Config::get('compress_javascript')) {
         $ret = JsMin::minify($ret);
         $featureCache->set(md5('features:' . $featureName . $isGadgetContext), $ret);
     }
     return $ret;
 }
 /**
  * Tests GadgetContext->getHttpFetcher()
  */
 public function testGetHttpFetcher()
 {
     $this->assertNotNull($this->GadgetContext->getHttpFetcher());
 }