Exemple #1
0
    def new(self, id, does, match, arg):
        """Create a new Rule for this feed"""

        # import pdb; pdb.set_trace()
        # brand new rule
        rules = [{"does": r.does, "match": r.match, "arg": r.arg, "id": r.id} for r in self.feed.rules]
        existing_ids = [r.id for r in self.feed.rules]
        if id == None:
            rules.append({"does": does, "match": match, "arg": arg})

            payload = {"rules": rules}
            r = self._h._http_resource(method="PUT", resource=("feed", self.feed.id, "rules"), data=payload)

            # what's the new rule.
            for r in json_decode(r.content)["results"]:
                if r["id"] not in existing_ids:
                    return self.feed.rules.get(r["id"])
        else:
            for r in rules:
                if r["id"] == id:
                    r["does"] = does
                    r["match"] = match
                    r["arg"] = arg
                    break
            payload = {"rules": rules}
            r = self._h._http_resource(method="PUT", resource=("feed", self.feed.id, "rules"), data=payload)
            for r in json_decode(r.content)["results"]:
                if r["id"] == id:
                    return self.feed.rules.get(r["id"])
Exemple #2
0
    def _resource_deserialize(s):
        """Returns dict deserialization of a given JSON string."""

        try:
            return json_decode(s)
        except ValueError:
            raise ResponseError("The API Response was not valid.")
Exemple #3
0
    def _resource_deserialize(s):
        """Returns dict deserialization of a given JSON string."""

        try:
            return json_decode(s)
        except ValueError:
            raise ResponseError('The API Response was not valid.')
Exemple #4
0
    def _new(self, has, match, arg):
        '''Create a new Rule'''

        rules = [{'has': r.has,
                  'match': r.match,
                  'arg': r.arg,
                  'id': r.id} \
                 for r in self.feed.rules]
        existing_ids = [r.id for r in self.feed.rules]
        rules.append({'has': has,
                      'match': match,
                      'arg': arg})

        payload = {'rules': rules}

        r = self._h._http_resource(
            method = 'PUT',
            resource = ('feed', self.feed.id, 'rules'),
            data = payload
            )

        # what's the new rule.
        for r in json_decode(r.content)['results']:
            if r['id'] not in existing_ids:
                return self.feed.rules.get(r['id'])
Exemple #5
0
    def new(self, name=None):
        """Create a new engine"""

        payload = {}
        payload["name"] = name

        r = self._h._http_resource(method="POST", resource=("engines",), data=payload)

        id = json_decode(r.content).get("id")
        return self._h.engines.get(id)
Exemple #6
0
    def new(self, id, does, match, arg):
        '''Create a new Rule for this feed'''

        #import pdb; pdb.set_trace()
        # brand new rule
        rules = [{'does': r.does,
                  'match': r.match,
                  'arg': r.arg,
                  'id': r.id} \
                 for r in self.feed.rules]
        existing_ids = [r.id for r in self.feed.rules]
        if id == None:
            rules.append({'does': does,
                          'match': match,
                          'arg': arg})

            payload = {'rules': rules}
            r = self._h._http_resource(
                method = 'PUT',
                resource = ('feed', self.feed.id, 'rules'),
                data = payload
                )

            # what's the new rule.
            for r in json_decode(r.content)['results']:
                if r['id'] not in existing_ids:
                    return self.feed.rules.get(r['id'])
        else:
            for r in rules:
                if r['id'] == id:
                    r['does'] = does
                    r['match'] = match
                    r['arg'] = arg
                    break
            payload = {'rules': rules}
            r = self._h._http_resource(
                method = 'PUT',
                resource = ('feed', self.feed.id, 'rules'),
                data = payload
                )
            for r in json_decode(r.content)['results']:
                if r['id'] == id:
                    return self.feed.rules.get(r['id'])
Exemple #7
0
    def new(self, url, sitemap_url, name=None):
        """Create a new feed"""

        payload = {}
        payload["url"] = url
        payload["sitemap_url"] = sitemap_url
        payload["name"] = name

        r = self._h._http_resource(method="POST", resource=("topic", self.topic.id, "feeds"), data=payload)
        id = json_decode(r.content).get("id")
        return self.topic.feeds.get(id)
Exemple #8
0
    def new(self, **kwargs):
        """Create/Index a new document"""

        payload = {}
        payload.update(kwargs)

        r = self._h._http_resource(method="POST", resource=("topic", self.topic.id, "documents"), data=payload)

        # id = json_decode(r.content).get('id')
        # return self.topic.documents.get(id)
        return json_decode(r.content)
Exemple #9
0
    def new(self, name=None):
        '''Create a new engine'''

        payload = {}
        payload['name'] = name

        r = self._h._http_resource(method='POST',
                                   resource=('engines', ),
                                   data=payload)

        id = json_decode(r.content).get('id')
        return self._h.engines.get(id)
Exemple #10
0
    def new(self, url, label, type, selector_dict):
        """Create a new topic"""

        payload = {}
        payload["url"] = url
        payload["label"] = label
        payload["type"] = type
        payload["selector_dict"] = selector_dict

        r = self._h._http_resource(method="POST", resource=("topic", self.topic.id, "sources"), data=payload)
        id = json_decode(r.content).get("id")
        return self.topic.sources.get(id)
Exemple #11
0
 def call(self, api_operation, api_request):
     try:
         API_OPERATIONS.index(api_operation)
     except ValueError:
         raise RuntimeError("Invalid API operation.")
     url = "%s/%s" % (self._endpoint, api_operation)
     req = http_request(url)
     json_request = json_encode(api_request)
     try:
         response = urlopen(req, json_request)
     except URLError:
         raise RuntimeError("API request failed.")
     return json_decode(response.read())
Exemple #12
0
    def new(self, url, sitemap_url, name=None):
        '''Create a new feed'''

        payload = {}
        payload['url'] = url
        payload['sitemap_url'] = sitemap_url
        payload['name'] = name

        r = self._h._http_resource(method='POST',
                                   resource=('topic', self.topic.id, 'feeds'),
                                   data=payload)
        id = json_decode(r.content).get('id')
        return self.topic.feeds.get(id)
Exemple #13
0
    def new(self, id, does, match, arg):
        '''Create a new Rule for this feed'''

        #import pdb; pdb.set_trace()
        # brand new rule
        rules = [{'does': r.does,
                  'match': r.match,
                  'arg': r.arg,
                  'id': r.id} \
                 for r in self.feed.rules]
        existing_ids = [r.id for r in self.feed.rules]
        if id == None:
            rules.append({'does': does, 'match': match, 'arg': arg})

            payload = {'rules': rules}
            r = self._h._http_resource(method='PUT',
                                       resource=('feed', self.feed.id,
                                                 'rules'),
                                       data=payload)

            # what's the new rule.
            for r in json_decode(r.content)['results']:
                if r['id'] not in existing_ids:
                    return self.feed.rules.get(r['id'])
        else:
            for r in rules:
                if r['id'] == id:
                    r['does'] = does
                    r['match'] = match
                    r['arg'] = arg
                    break
            payload = {'rules': rules}
            r = self._h._http_resource(method='PUT',
                                       resource=('feed', self.feed.id,
                                                 'rules'),
                                       data=payload)
            for r in json_decode(r.content)['results']:
                if r['id'] == id:
                    return self.feed.rules.get(r['id'])
Exemple #14
0
def init_default_filters():
    from hashlib import md5
    from base64 import b64encode, b64decode
    from simplejson import dumps as json_encode, loads as json_decode
    add_filter('md5', lambda v: md5(v).hexdigest())
    add_filter('md5b', lambda v: md5(v).digest())
    add_filter('b64e', lambda v: b64encode(v))
    add_filter('b64d', lambda v: b64decode(v))
    add_filter('jsone', lambda v: json_encode(v))
    add_filter('jsond', lambda v: json_decode(v))
    add_filter('len', lambda v: len(v))

    _to_num = lambda v: (float(v) if '.' in v else int(v)) if isinstance(v, basestring) else v
    add_filter('add', lambda v, arg: _to_num(v) + _to_num(arg))
Exemple #15
0
    def new(self, **kwargs):
        '''Create/Index a new document'''

        payload = {}
        payload.update(kwargs)

        r = self._h._http_resource(method='POST',
                                   resource=('topic', self.topic.id,
                                             'documents'),
                                   data=payload)

        #id = json_decode(r.content).get('id')
        #return self.topic.documents.get(id)
        return json_decode(r.content)
Exemple #16
0
    def new(self, name=None):
        '''Create a new engine'''

        payload = {}
        payload['name'] = name

        r = self._h._http_resource(
            method = 'POST',
            resource = ('engines', ),
            data = payload
            )

        id = json_decode(r.content).get('id')
        return self._h.engines.get(id)
Exemple #17
0
    def new(self, url, sitemap_url, name=None):
        '''Create a new feed'''

        payload = {}
        payload['url'] = url
        payload['sitemap_url'] = sitemap_url
        payload['name'] = name

        r = self._h._http_resource(
            method = 'POST',
            resource = ('topic', self.topic.id, 'feeds'),
            data = payload
            )
        id = json_decode(r.content).get('id')
        return self.topic.feeds.get(id)
Exemple #18
0
    def _new(self, has, match, arg):
        """Create a new Rule"""

        rules = [{"has": r.has, "match": r.match, "arg": r.arg, "id": r.id} for r in self.feed.rules]
        existing_ids = [r.id for r in self.feed.rules]
        rules.append({"has": has, "match": match, "arg": arg})

        payload = {"rules": rules}

        r = self._h._http_resource(method="PUT", resource=("feed", self.feed.id, "rules"), data=payload)

        # what's the new rule.
        for r in json_decode(r.content)["results"]:
            if r["id"] not in existing_ids:
                return self.feed.rules.get(r["id"])
Exemple #19
0
def call_api(api,params,auth='',debug=0):
    domain = 'http://api.jiepang.com/'
    params['source'] = '@pp'
    params = urllib.urlencode(params)
    request = urllib2.Request(domain + api + '?' + params)
    if auth:
        request.add_header("Authorization", "Basic %s" % auth)
    request.add_header("Content-Type","application/json")
    opener = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=debug))
    try:
        response = opener.open(request)
        res = json_decode(response.read())
        return res
    except urllib2.HTTPError,e:
        return {'error': e.code}
Exemple #20
0
    def new(self, **kwargs):
        '''Create/Index a new document'''

        payload = {}
        payload.update(kwargs)

        r = self._h._http_resource(
            method = 'POST',
            resource = ('topic', self.topic.id, 'documents'),
            data = payload
            )

        #id = json_decode(r.content).get('id')
        #return self.topic.documents.get(id)
        return json_decode(r.content)
Exemple #21
0
    def new(self, url, label, type, selector_dict):
        '''Create a new topic'''

        payload = {}
        payload['url'] = url
        payload['label'] = label
        payload['type'] = type
        payload['selector_dict'] = selector_dict

        r = self._h._http_resource(method='POST',
                                   resource=('topic', self.topic.id,
                                             'sources'),
                                   data=payload)
        id = json_decode(r.content).get('id')
        return self.topic.sources.get(id)
Exemple #22
0
    def update(self, name=None, selectors=None):
        if name == None:
            name = self.name
        else:
            self.name = name

        if selectors == None:
            selectors = self.selectors
        else:
            self.selectors = selectors

        payload = {"name": name, "selectors": selectors}
        r = self._h._http_resource(method="PUT", resource=("engine", self.id), data=payload)
        id = json_decode(r.content).get("id")
        return self._h.engines.get(id)
Exemple #23
0
    def update(self, name=None, value_key=None):
        """Update the topic"""
        if name == None:
            name = self.name
        else:
            self.name = name

        if value_key == None:
            value_key = self.value_key
        else:
            self.value_key = value_key

        payload = {"name": name, "value_key": value_key}
        r = self._h._http_resource(method="PUT", resource=("topic", self.id), data=payload)
        id = json_decode(r.content).get("id")
        return self.engine.topics.get(id)
Exemple #24
0
    def new(self, url, label, type, selector_dict):
        '''Create a new topic'''

        payload = {}
        payload['url'] = url
        payload['label'] = label
        payload['type'] = type
        payload['selector_dict'] = selector_dict

        r = self._h._http_resource(
            method = 'POST',
            resource = ('topic', self.topic.id, 'sources'),
            data = payload
            )
        id = json_decode(r.content).get('id')
        return self.topic.sources.get(id)
Exemple #25
0
    def update(self, name=None, selectors=None):
        if name == None:
            name = self.name
        else:
            self.name = name

        if selectors == None:
            selectors = self.selectors
        else:
            self.selectors = selectors

        payload = {'name': name, 'selectors': selectors}
        r = self._h._http_resource(method='PUT',
                                   resource=('engine', self.id),
                                   data=payload)
        id = json_decode(r.content).get('id')
        return self._h.engines.get(id)
Exemple #26
0
    def update(self, name=None, value_key=None):
        '''Update the topic'''
        if name == None:
            name = self.name
        else:
            self.name = name

        if value_key == None:
            value_key = self.value_key
        else:
            self.value_key = value_key

        payload = {'name': name, 'value_key': value_key}
        r = self._h._http_resource(method='PUT',
                                   resource=('topic', self.id),
                                   data=payload)
        id = json_decode(r.content).get('id')
        return self.engine.topics.get(id)
Exemple #27
0
    def update(self, name=None, selectors=None):
        if name == None:
            name = self.name
        else:
            self.name = name

        if selectors == None:
            selectors = self.selectors
        else:
            self.selectors = selectors

        payload = {'name': name, 'selectors': selectors}
        r = self._h._http_resource(
            method='PUT',
            resource=('engine', self.id),
            data = payload
        )
        id = json_decode(r.content).get('id')
        return self._h.engines.get(id)
Exemple #28
0
 def __init__(self, ctx, query, urlbits, db=None):
     utils.autoassign(self, locals())
     self.model = urlbits[1]
     self.op_mode = int(query.pop('_op', ['0'])[0])
     
     if ctx.method in ('POST', 'PUT'):
         if '_data' in query:
             # web.debug('~', query.get('_data'))
             _data = query.pop('_data')[0]
         else:
             _data = web.data()
         if _data:
             try: self.data = json_decode(_data)
             except: raise RestyError('data is invalid')
             del _data
         else:
             raise RestyError('no data!')
     else:
         self.data = None
Exemple #29
0
    def update(self, name=None, value_key=None):
        '''Update the topic'''
        if name == None:
            name = self.name
        else:
            self.name = name

        if value_key == None:
            value_key = self.value_key
        else:
            self.value_key = value_key

        payload = {'name': name, 'value_key': value_key}
        r = self._h._http_resource(
            method='PUT',
            resource=('topic', self.id),
            data = payload
        )
        id = json_decode(r.content).get('id')
        return self.engine.topics.get(id)
Exemple #30
0
    def _new(self, has, match, arg):
        '''Create a new Rule'''

        rules = [{'has': r.has,
                  'match': r.match,
                  'arg': r.arg,
                  'id': r.id} \
                 for r in self.feed.rules]
        existing_ids = [r.id for r in self.feed.rules]
        rules.append({'has': has, 'match': match, 'arg': arg})

        payload = {'rules': rules}

        r = self._h._http_resource(method='PUT',
                                   resource=('feed', self.feed.id, 'rules'),
                                   data=payload)

        # what's the new rule.
        for r in json_decode(r.content)['results']:
            if r['id'] not in existing_ids:
                return self.feed.rules.get(r['id'])
def query (path, params = {}, decode=True):
  defaults = {
      'format': 'json',
    }
  config = load_config()
  defaults.update(config['common'])
  params.update(defaults)

  headers = {
      'User-Agent': 'Weiwo SABot/1.0 ([email protected])',
    }

  domain = 'https://dnsapi.cn/'
  url = domain + path

  resp = requests.post(url, data=params, headers=headers)
  if not decode:
    return resp
  if resp.status_code != 200:
    raise ServiceError("Got response status code `%s` but expected 200." % (resp.status_code, ))
  msg = json_decode(resp.content)
  if int(msg['status']['code']) != 1:
    raise RequestError("You just doing something DNSPod NOT allow: [%s] %s" % (msg['status']['code'], msg['status']['message']))
  return msg
Exemple #32
0
	def decode(cls, data, charset=None, mimetype=None):
		return json_decode(data)
Exemple #33
0
def index(req, data=""):

    _SUCCESS = "0"
    _DATAFORMAT = 1
    _VERSION = 2
    _MISSING = 3
    _DATABASE = 4
    _FLOOD = 5

    # Decode submitted data
    try:
        data = json_decode(data)
    except:
        return _DATAFORMAT
    
    # Check feedback version
    if "version" not in data:
        return _VERSION

    # DB connection
    try:
        sql = mysql(site_config['db_host'], \
                    site_config['db_name'], \
                    site_config['db_user'], \
                    site_config['db_pass'])
    except:
        return _DATABASE

    # Check required fields
    s1 = set(["experience", "question"])
    s2 = set(data.keys())

    if len(s1 - s2) != 0:
        return _MISSING

    # An IP may submit only one feedback in 10 minutes.
    submissions = sql.scalar_query("SELECT Count(*) FROM feedback WHERE ip=%s AND now()-submitdate < 600", req.get_remote_host())
    if submissions > 0:
        return _FLOOD

    if "hw" in data:
        s1 = set(["memtotal", "swaptotal", "cpu_model", "cpu_speed", "kernel"])
        s2 = set(data["hw"].keys())

        if len(s1 - s2) != 0:
            return _MISSING

    values = {
              "ip": req.get_remote_host(),
              "submitdate": time.strftime('%Y-%m-%d %H:%M'),
              "experience": data.get("experience", "0"),
              "purpose": data.get("purpose", "0"),
              "use_where": data.get("use_where", "0"),
              "question": data.get("question", ""),
              "opinion": data.get("opinion", ""),
              "email": data.get("email", ""),
              "email_announce": data.get("email_announce", "F")
              }
    fb = sql.insert("feedback", values)

    if "hw" in data:
        values = {
                  "feedback": fb,
                  "memtotal": data["hw"]["memtotal"],
                  "swaptotal": data["hw"]["swaptotal"],
                  "cpu_model": data["hw"]["cpu_model"],
                  "cpu_speed": data["hw"]["cpu_speed"],
                  "kernel": data["hw"]["kernel"]
                  }
        hw = sql.insert("hardware", values)

    return _SUCCESS