PHP Classes

File: .ApplicationComposer/apps/frdl/webfan/ApplicationComposer/Repos/PackageFetcher.php

Recommend this page to a friend!
  Classes of Till Wehowski   Package Fetcher   .ApplicationComposer/apps/frdl/webfan/ApplicationComposer/Repos/PackageFetcher.php   Download  
File: .ApplicationComposer/apps/frdl/webfan/ApplicationComposer/Repos/PackageFetcher.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Package Fetcher
Fetch packages from several Composer repositories
Author: By
Last change: auto dev server commit
Date: 8 years ago
Size: 4,039 bytes
 

Contents

Class file image Download
<?php
/**
 * Copyright (c) 2015, Till Wehowski
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 3. Neither the name of frdl/webfan nor the
 * names of its contributors may be used to endorse or promote products
 * derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY frdl/webfan ''AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL frdl/webfan BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
namespace frdl\ApplicationComposer\Repos;

abstract class
PackageFetcher
{
   const
DEF_CLIENT = '\frdl\Broxy';
   protected
$http_class;
   
   protected
$config;
   protected
$Client = null;
  
   protected
$debug = false;

  

   public function
__construct($config = null){
         if(
null !== $config) $this->config = $config;
        
$this->debug = (isset($config['debug']) && true === $config['debug']) ? true : false;
        
$this->Client($client, ((isset($config['http_class'])) ? $config['http_class'] : self::DEF_CLIENT ));
         return
$config;
   }
  
   protected function
url($uri){
      return
$this->purl.$uri;
   }
  
         
   public function
setConfig($config = array()){
           
$this->config = $config;
   }
  
   public function
cache($key, $value){
      
   }
  
    protected function
request($url, &$body = null, &$error = null)
    {
       
$http = &$this->Client->http;
       
$http->debug=0;
       
$http->html_debug=0;
       
$http->follow_redirect=1;
      
// $http->user_agent = $_SERVER['HTTP_USE_AGENT'];
       
$http->user_agent = 'Webfan.de Application Composer';
     
// $arguments['Headers']['Referer']= $_SERVER['HTTP_REFERER'];
       
$arguments['Headers']['Referer']= 'http://frdl.github.io/webfan/';
       
       
$error=$http->GetRequestArguments($url,$arguments);

        if(
$error!=="")return $this;

       
$error=$http->Open($arguments);
        if(
$error!=="")return $this;

      
$arguments['Headers']['X-Forwarded-For']= $_SERVER['REMOTE_ADDR'];
       
$arguments['Headers']['X-frdl-proxy']= 'Webfan';
       
$arguments['RequestMethod']='GET';
       
$error=$http->SendRequest($arguments);
        if(
$error!=="")return $this;
        
$error=$http->ReadReplyHeaders($headers);
        if(
$error!=="")return $this;
       
$error = $http->ReadWholeReplyBody($body);
        if(
$error!=="")return $this;
        
        return
$this;
    }
   
      
   public function
Client(&$client = null, $classname = null, $create = false){
        
$this->http_class = (null !== $classname && '' !== $classname && class_exists($classname)) ? $classname : self::DEF_CLIENT;
         if(
null === $this->Client || true === $create){
         
$this->Client = new $this->http_class;
      }
     
     
$client = $this->Client;
      return
$this;
   }
      
   abstract public function
info();
   abstract public function
all();
   abstract public function
search($query);
   abstract public function
package($vendor, $packagename);
   
}