Changeset 82 for fizzjik

Show
Ignore:
Timestamp:
07/02/08 01:19:31 (5 months ago)
Author:
devja..@anarkystic.com
Message:

hub has a name now, resterizer handles hubs

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • fizzjik/fizzjik/hub.py

    r79 r82  
    1616    config = None 
    1717 
     18 
    1819    def __init__(self, config=None, *args, **kw): 
    1920        service.MultiService.__init__(self, *args, **kw) 
     
    2526            self.config = ConfigParser() 
    2627            self.config.read(config) 
     28 
     29    @property 
     30    def name(self): 
     31      return self.__class__.__name__ 
    2732 
    2833    def startService(self, *args, **kw): 
  • fizzjik/fizzjik/io/rest.py

    r79 r82  
    11import inspect 
     2import logging 
    23 
    34from twisted.web2 import server, channel 
     
    3536 
    3637    return None 
    37  
     38   
     39  def child_(self, request): 
     40    return self 
    3841 
    3942  def render(self, ctx): 
    40  
    4143    if self.method: 
    4244      return self.renderMethod(ctx) 
     45    elif hasattr(self.service, 'getServiceNamed'): 
     46      return self.renderHub(ctx) 
    4347    elif self.service: 
    4448      return self.renderService(ctx) 
     49   
     50  def renderHub(self, ctx): 
     51    services = {} 
     52    for k, s in self.service.namedServices.iteritems(): 
     53      services[k] = self._getPublicMethods(s) 
     54    out_methods = self._getPublicMethods(self.service) 
    4555 
     56    resp = {'service': self.service.name, 
     57            'sub_services': services, 
     58            'public_methods': out_methods} 
     59 
     60    return http.Response(stream=simplejson.dumps(resp, sort_keys=True, 
     61                                                 indent=2)) 
    4662 
    4763  def renderService(self, ctx): 
    48     public_methods = {} 
    49  
    50     for k in dir(self.service): 
    51       a = getattr(self.service, k) 
    52       if hasattr(a, 'public'): 
    53         public_methods[k] = a 
    54  
    55     out_methods = {} 
    56     for k, f in public_methods.iteritems(): 
    57       out_methods[k] = {} 
    58       out_methods[k]['spec'] = inspect.formatargspec( 
    59           inspect.getargspec(f.im_func)) 
    60       out_methods[k]['doc'] = getattr(f, '__doc__', '') 
     64    out_methods = self_getPublicMethods(self.service) 
    6165 
    6266    resp = {'service': self.service.name, 
     
    8387    return http.Response(stream=s) 
    8488 
     89  def _getPublicMethods(self, svc): 
     90    public_methods = {} 
     91 
     92    for k in dir(svc): 
     93      a = getattr(svc, k) 
     94      if hasattr(a, 'public'): 
     95        public_methods[k] = a 
     96 
     97    out_methods = {} 
     98    for k, f in public_methods.iteritems(): 
     99      out_methods[k] = {} 
     100      out_methods[k]['spec'] = inspect.formatargspec( 
     101          inspect.getargspec(f.im_func)) 
     102      out_methods[k]['doc'] = getattr(f, '__doc__', '') 
     103    return out_methods 
     104 
    85105class ResterizerFactory(channel.HTTPFactory): 
    86106  def __init__(self, parent):