示例#1
0
def createBoard(user_id):
    print "Inside the creating board  %s" %user_id
    jsonBody=request.body.read()
    jsonObj=json.loads(jsonBody)

    for key in sorted(request.forms.iterkeys()):
       print "%s=%s" % (key, request.forms[key])
    if(db.isvaliduser(user_id)):
        print "Creating board for user -> " + user_id
        id = random.randint(1, 100)
        board._board_id = id
        print str(board._board_id) + "\n"

        board._board_name = jsonObj['boardname'] # request.forms.get('boardName')
        print "BoardName: " + board._board_name
        board._userId = user_id
        new_board = db.insertBoard(board)
        response.set_header("content-type","application/json")
        response.body = new_board
        print "***Response returned is:\n"
        print response.status
        print response.body
        print "\n***"
        return response
    else:
        return erroruser()
示例#2
0
def get_cal():
    """
    Test of the Calendar class via API.
    Path: GET /cal
    """
    response.set_header('Content-Type', 'application/json')
    return Calendar(config).get_events()
示例#3
0
    def check_refer_redirect(self):
        referer = request.headers.get('Referer')
        if not referer:
            return

        host = request.headers.get('Host')
        if host not in referer:
            return

        inx = referer[1:].find('http')
        if not inx:
            inx = referer[1:].find('///')
            if inx > 0:
                inx + 1

        if inx < 0:
            return

        url = referer[inx + 1:]
        host = referer[:inx + 1]

        orig_url = request.urlparts.path
        if request.urlparts.query:
            orig_url += '?' + request.urlparts.query

        full_url = host + urljoin(url, orig_url)
        response.status = 302
        response.set_header('Location', full_url)
        return True
def resolve_meokanal_item(aid, idx):
    """Resolves a MEO Kanal item to a load balancer URI, ensuring freshness."""

    link = alc.resolve_meo_item(aid, idx)
    log.error(link)
    response.status = 301
    response.set_header("Location", link)
示例#5
0
def getrandom():
    print 'rand??'
    print 'getrandom req...'
    obj = get_bbbblinken_json()
    print 'got object'

    candidates = []
    for child in obj['data']['children']:
        c = child['data']
        if c['is_self']:
            continue
        candidates.append(c)
        #urls.append(show_url(c['url']))
 
    winner = random.choice(candidates)
    url = show_url(winner['url'])
    print url

    response.set_header('Content-Type', 'application/javascript')
    
    output = {}
    output['code'] = js_code(url)
    output['url'] = url
    output['name'] = winner['title']
    return json.dumps(output)
示例#6
0
def get_handicappers():
    response.set_header('Content-Type', 'application/json')

    prefix = get_prefix(request)

    result = [{'id': 1, 'name': 'Frank'}, {'id': 2, 'name': 'Martin'}, {'id': '3', 'name': 'Jason'}]
    return json.dumps(result) #'[' + ',\n'.join(result) + ']'
示例#7
0
def permanent(euid):
    location = 'http://lorempixel.com/100/100/'
    response.set_header('Location', location)

    response.status = 301

    return 'Moved Permanently'
示例#8
0
文件: main.py 项目: motord/lemonade
def _output(content):
    """Output the content in the datastore as a HTTP Response"""
    serve = True
    # check modifications and etag
    if "If-Modified-Since" in request.headers:
        last_seen = datetime.datetime.strptime(request.headers["If-Modified-Since"], HTTP_DATE_FMT)
        if last_seen >= content.modified.replace(microsecond=0):
            serve = False
    if "If-None-Match" in request.headers:
        etags = [x.strip('" ') for x in request.headers["If-None-Match"].split(",")]
        if content.etag in etags:
            serve = False

    headers = {}
    if content.content_type:
        headers["Content-Type"] = content.content_type
    last_modified = content.modified.strftime(HTTP_DATE_FMT)
    headers["Last-Modified"] = last_modified
    headers["ETag"] = '"%s"' % (content.etag,)
    for header in content.headers:
        key, value = header.split(":", 1)
        headers[key] = value.strip()
    if serve:
        response.body = content.body
        for key, value in headers.iteritems():
            response.set_header(key, value)
        response.content_type = content.content_type
        response.status = int(content.status)
    else:
        response.status = 304
    return response
示例#9
0
def doGetCaseResultLog(sid, tid):
    """
    URL:/test/caseresult/<sid>/<tid>/log
    TYPE:http/POST

    Get detail of a test case result by sid&tid

    @type sid:string
    @param sid:the id of test session
    @type  tid: string
    @param tid: the id of case result
    @type data:JSON
    @param data:{'token':(string)value}
    @rtype: JSON
    @return:ok-{'results':{'sid':(string)value,'tid':(string)value,'casename':(string)value,'starttime':(string)value,'endtime':(string)value,'result':(string)value ['Pass'/'Fail'/'Error'],'log':(GridFsId)value,'snapshots':(arrary of GridFsId)}}
            error-{'errors':{'code':value,'msg':(string)info}}
    """
    content_type = request.headers.get("Content-Type")
    if not (content_type):
        # return {'errors':{'code':500, 'msg':'Missing Content-Type'}}
        # else:
        json = request.json
        if not json is None:
            token = json["token"]
        else:
            token = "1122334455667788"
        record_id = sid + "_" + tid
        response.set_header("Content-Type", "application/x-download")
        response.set_header("Content-Disposition", "attachment; filename=log_" + record_id + ".zip", True)
        return getTestCaseLog(token, sid, tid)
示例#10
0
文件: main.py 项目: andyhmltn/gifclit
def home(query=None):
    response.set_header("Server", "GIF.CL.IT")
    response.set_header("Cache-Control", "no-cache, Expires=-1")
    vhost = request.urlparts.netloc.split('.')[0]
    if query == 'random':
        query = random_line(open('/usr/share/dict/words', 'r'))
    if vhost != 'gif':
        query = vhost
    if query is None or query == 'about':
        with open('USAGE.TXT', 'r') as f:
            return "<pre>" + ''.join(f.readlines()) + "</pre>"
    request_uri = ROOT_URI + '?$format=json&Query=' + quote_plus("'"+query+" gif'")
    data = requests.get(request_uri, auth=(ACCT_KEY, ACCT_KEY))
    data = json.loads(data.text)['d']['results']
    max_attempts = len(data)-1
    attempts = 0
    serp_idx = 0
    good_image = False

    try:
        while not good_image:
            if data[serp_idx]['ContentType'] == "image/animatedgif" and \
               data[serp_idx]['Width'] >= 250 and \
               data[serp_idx]['Height'] >= 250 and \
               data[serp_idx]['FileSize'] >= 250000:
                good_image = True
            else:
                serp_idx = serp_idx + 1
                if attempts > max_attempts:
                    raise
    except Exception:
        return "Unable to reticulate splines"

    return '<img style="margin:0;position:absolute;top:0;left:0;" src="' + data[serp_idx]['MediaUrl'] + '" />'
def proxy_influx_query(path):
    """
    Capture the query events comming from Grafana.
    Investigate the query and replace the measurement name with a Retention Policy measurement name if possible.
    Send out the (modified or unmodified) query to Influx and return the result
    """

    forward_url = CONFIG['influxdb_http']  # The local influx host

    params = dict(request.query) # get all query parameters

    try:
        params['q'] = modify_query(params, rp_db_map)

    except Exception as e:
        print "EXC:", e
        pass
    headers = request.headers
    cookies = request.cookies
    r = requests.get(url=forward_url +'/'+ path, params=params, headers=headers, cookies=cookies, stream=True) # get data from influx

    if r.status_code == 200:
        for key, value in dict(r.headers).iteritems():
             response.set_header(key, value)

        for key, value in dict(r.cookies).iteritems():
            response.cookies[key] = value
        pass
    else:
        abort(r.status_code, r.reason) # NOK, return error

    return r.raw
示例#12
0
def paste():
	isBrowser = False
	text = request.forms.get(app.config["POST_FIELD"])
	if not text:
		text = request.forms.get("browser_text")
		isBrowser = True
	if not text:
		response.status = 400
		return 'No data\n'
		
	try:
		storage = Storage (app.config)
		hashname = storage.store (text)
		redirect = '{0}/{1}'.format(app.config["URL"], hashname)
		if isBrowser:
			response.status = 303
			syntax = request.forms.get("syntax", "")
			if nameRe.match (syntax):
				redirect += "?"+syntax
			response.set_header ('Location', redirect)
		else:
			storage.markviewed (hashname)
		return redirect+"\n"
	except Exception as ex:
		logging.error(ex)
		response.status = 400
		return 'Bad request\n'.format(ex)
示例#13
0
def get_current_time():
    cur_time = re.sub(r'\.[0-9]*$', '+08:00', datetime.isoformat(datetime.now()))
    print('>> current-time: %s' % cur_time)

    response.set_header('Cache-Control', 'no-cache')
    response.content_type = 'application/json'
    return { 'status': 'OK', 'time': cur_time }
示例#14
0
文件: vcc.py 项目: cfsgeeks/vcc
def index(office):
    response.set_header('Access-Control-Allow-Origin','*')
    response.set_header('Content-type','text/xml')
    ip = offices[office]['ip']
    vctype = offices[office]['type']
    req = requests.get('http://%s/status.xml' % ip,auth=auth)
    return req.content
示例#15
0
文件: views.py 项目: zZLOiz/watom
def view_edit(name=None):
    """edit or creates a new page

    .. note:: this is a bottle view

    if no page name is given, creates a new page.

    Keyword Arguments:
        :name: (str) -- name of the page (OPTIONAL)

    Returns:
        bottle response object
    """
    response.set_header('Cache-control', 'no-cache')
    response.set_header('Pragma', 'no-cache')

    filename = get_filename(name)

    if os.path.exists(filename):
        file_handle = open(filename, 'r', encoding='utf-8')
        content = file_handle.read()
    else:
        content = get_default_view(name)

    return template('edit',
                    type="edit",
                    name=get_id(name),
                    breadcrumbs=get_breadcrumbs(name),
                    content=content)
示例#16
0
def track(id):
  details = Tracker().track(id)
  if details != None:
    response.set_header('Content-Type', 'application/json')
    return json.dumps(details, cls=DateTimeEncoder, sort_keys=True, indent=4, separators=(',', ': '))
  else:
    abort(404, 'Consignment details not Found')
示例#17
0
def view_history(name, gitref):
    """serve a page name from git repo (an old version of a page)

    .. note:: this is a bottle view

    * this is a GET only method : you can not change a committed page

    Keyword Arguments:
        :name: (str) -- name of the rest file (without the .rst extension)
        :gitref: (str) -- hexsha of the git commit to look into

    Returns:
        bottle response object or 404 error page
    """
    response.set_header('Cache-control', 'no-cache')
    response.set_header('Pragma', 'no-cache')
    content = read_committed_file(gitref, name + '.rst')
    if content:
        html_body = publish_parts(content,
                                  writer=HisWriter(),
                                  settings=None,
                                  settings_overrides=None)['html_body']
        history = commit_history(name + '.rst')
        return template('page',
                        type="history",
                        name=name,
                        extended_name=None,
                        is_repo=check_repo(),
                        history=history,
                        gitref=gitref,
                        content=html_body)
    else:
        return abort(404)
示例#18
0
def aggregate_discursos(word):
    response.set_header('Content-Type', 'application/json')
    response.set_header('Access-Control-Allow-Origin', '*')
    entity = db['discursos'].find({ "keywords" : word}, { "integra" : 1, "orador_nome" : 1, "orador_uf" : 1, "orador_partido" : 1 })
    discursos = {}
    for d in entity:
	discurso_stripped = ''
	for line in d['integra'].split('\n'):
	    try:
		line.index(word)
		discurso_stripped = discurso_stripped + line + "\n"
	    except:
		pass
	deputado = d['orador_nome']+d['orador_partido']+d['orador_uf']
	if discursos.has_key(deputado):
	    discursos[deputado]['discursos'].append(discurso_stripped)
	else:
	    discursos[deputado] = {}
	    discursos[deputado]['orador_nome'] = d['orador_nome']
	    discursos[deputado]['orador_uf'] = d['orador_uf']
	    discursos[deputado]['orador_partido'] = d['orador_partido']
	    discursos[deputado]['discursos'] = [discurso_stripped]
    
    resposta = []
    for d in discursos:
	tmp = discursos[d]
	tmp["id"] = d
	resposta.append(tmp)
    resposta = json.dumps(resposta, default=json_util.default)
    if not entity:
        abort(404, 'No document with id %s' % query)
    return resposta
示例#19
0
def upload():
    metainfo_file = request.files.get("metainfo-file")
    swarm = Swarm.from_metainfo_file(metainfo_file.file, metainfo_file.filename)
    response.set_header("Content-Type", "application/x-bittorrent")
    response.set_header("Content-Disposition",
                        "filename={name}.torrent".format(name=swarm.name()))
    return swarm.to_metainfo()
示例#20
0
        def wrapper(*args, **kwargs):

            def expire(when):
                for t in [k for k in _times.keys()]:
                    if (when - t) > timeout:
                        del(_cache[_times[t]])
                        del(_times[t])

            now = time.time()
            try:
                item = _cache[request.urlparts]
                if 'If-Modified-Since'  in request.headers:
                    try:
                        since = time.mktime(email.utils.parsedate(request.headers['If-Modified-Since']))
                    except:
                        since = now
                    if item['mtime'] >= since:
                        expire(now)
                        abort(304,'Not modified')
                for h in item['headers']:
                    response.set_header(str(h), item['headers'][h])
                body = item['body']
                response.set_header('X-Source', 'Worker Cache')
            except KeyError:
                body = callback(*args, **kwargs)
                item = {
                    'body': body,
                    'headers': response.headers,
                    'mtime': int(now)
                }
                _cache[request.urlparts] = item
                _times[now] = request.urlparts

            expire(now)
            return body
示例#21
0
文件: http.py 项目: konker/isoveli
    def master_json(self):
        ret = {"status": "OK",
                "body": self.helper_get_master_struct()
        }

        response.set_header('Cache-Control', 'No-store')
        return json.dumps(ret)
示例#22
0
文件: view.py 项目: TMcKinley/DoFler
def random_image(db):
    '''
    Returns a random image from the database.  This is MySQL-specific at the moment.
    '''
    image = db.query(Image).order_by(func.rand()).first()
    response.set_header('Content-Type', 'image/%s' % image.filetype)
    return str(image.data)
示例#23
0
def view_quick_save_page(name=None):
    """quick save a page

    .. note:: this is a bottle view

    * this view must be called with the PUT method
      write the new page content to the file, and not not commit or redirect

    Keyword Arguments:
        :name: (str) -- name of the rest file (without the .rst extension)

    Returns:
        bottle response object (200 OK)
    """
    response.set_header('Cache-control', 'no-cache')
    response.set_header('Pragma', 'no-cache')
    if request.method == 'PUT':
        if name is None:
            # new file
            if len(request.forms.filename) > 0:
                name = request.forms.filename

        if name is not None:
            filename = "{0}.rst".format(name)
            file_handle = open(filename, 'w')
            content = request.body.read()
            content = content.decode('utf-8')
            file_handle.write(content.encode('utf-8'))
            file_handle.close()
            return "OK"
        else:
            return abort(404)
示例#24
0
def paper_summary_bets(strategy_id):
    bets = list(db[PAPER_BETS].find({'strategy_id': ObjectId(strategy_id)}, fields={'_id': 0}))
    for bet in bets:
        bet['strategy_id'] = str(bet['strategy_id'])
    json_bets = json.dumps(bets, default=to_json)
    response.set_header('Content-Type', 'text/html')
    return template('templates/paper-bets', json_bets=json_bets)
示例#25
0
def picture(name):
    rows=session.query(People).filter(People.name==name)
    if rows:
        response.set_header('content_type', 'image/jpeg')
        return rows[0].picture
    else:
        raise bottle.HTTPError(500,'No picture')
示例#26
0
def nocacheheaders(euid):
    location = 'http://lorempixel.com/100/100/'
    response.set_header('Location', location)

    response.status = 302

    return 'Found'
示例#27
0
    def service(self):
        base = self.getBaseUrl()

        response.set_header('Content-type', 'text/xml')
        ret = ''
        ret += "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
        ret += "\n<TileMapService version=\"1.0.0\" services=\"%s\">" % (base,)
        ret += "\n\t<Title>%s v%s</Title>" % (self.server_name, self.server_version)
        ret += "\n\t<Abstract />"

        ret += "\n\t<TileMaps>"

        for dbfile in glob.glob('*.mbtiles'):
            if not os.path.isfile(dbfile):
                continue
            try:
                db = sqlite3.connect(dbfile)
                params = self.readparams(db)
                name = htmlspecialchars(params['name'])
                identifier = dbfile.replace('.mbtiles', '')
                ret += ('\n\t\t<TileMap title="%s" srs="OSGEO:41001" ' +
                    'profile="global-mercator" href="%s1.0.0/%s" />'
                    ) % (name, base, identifier)
            except sqlite3.DatabaseError:
                pass

        ret += "\n\t</TileMaps>"
        ret += "\n</TileMapService>"
        return ret
示例#28
0
def get_image(md5sum):
    '''
    Returns the image from the database.
    '''
    image = db.images.find_one({'md5': md5sum})
    response.set_header('Content-Type', 'image/%s' % image['filetype'])
    return str(image['data'])
示例#29
0
文件: api.py 项目: jonnyboy/pynab
def api():
    log.debug('Handling request for {0}.'.format(request.fullpath))

    # these are really basic, don't check much
    function = request.query.t or pynab.api.api_error(200)

    for r, func in pynab.api.functions.items():
        # reform s|search into ^s$|^search$
        # if we don't, 's' matches 'caps' (s)
        r = '|'.join(['^{0}$'.format(r) for r in r.split('|')])
        if re.search(r, function):
            dataset = dict()
            dataset['get_link'] = get_link
            data = func(dataset)
            output_format = request.query.o or 'xml'
            if output_format == 'xml':
                # return as xml
                response.set_header('Content-type', 'application/rss+xml')
                return data
            elif output_format == 'json':
                # bottle auto-converts into json
                return xmltodict.parse(data)
            else:
                return pynab.api.api_error(201)

    # didn't match any functions
    return pynab.api.api_error(202)
示例#30
0
def get(name=None):
    query = {}
    if name is not None:
        query['name'] = name

    response.set_header('Content-Type', 'application/json')
    return json.dumps(list(db.phrases.find(query)), default=default)
示例#31
0
def events_json():
    '''
    much like http://localhost:9200/anthracite/event/_search?q=*:*&pretty=true
    but: displays only the actual events, not index etc, they are sorted, and uses unix timestamps
    '''
    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Credentials", "true")
    response.set_header("Access-Control-Allow-Methods", "OPTIONS, GET, POST")
    response.set_header(
        "Access-Control-Allow-Headers",
        "Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"
    )
    return {"events": backend.get_events_raw()}
示例#32
0
def short():
    fortune = subprocess.run (
        ['fortune', '-s'],
        stdout = subprocess.PIPE,
    ).stdout.decode()

    r = res()
    r.get('collection').update (dict (
        items = [
            dict (
                href  = mk_url ('/'),
                data = [
                    dict (name = 'fortune', value = fortune)
                ],
            )
        ],
    ))

    response.set_header ('Content-Type', 'application/vnd.collection+json')
    return json.dumps (r)
示例#33
0
def disk_create(hypervisor, host, guest_id):
    """
    Create a disk for a given guest

    ::

      POST /:hypervisor/:host/guests/:guest_id/disks

    """
    response.content_type = "application/json"
    manager = create_manager(hypervisor, host)
    data = request.body.readline()
    if not data:
        abort(400, 'No data received')
    data = json.loads(data)
    disk = manager.disk_create(guest_id, data)
    location = "/%s/%s/guests/%s/disks/%s" % (hypervisor, host, guest_id,
                                              disk["id"])
    response.set_header("Location", location)
    return json.dumps(disk)
示例#34
0
def snapshot_create(hypervisor, host, guest_id):
    """
    Create a snapshot for a given guest

    ::

      POST /:hypervisor/:host/guests/:guest_id/snapshots

    """
    response.content_type = "application/json"
    manager = create_manager(hypervisor, host)
    data = request.body.readline()
    if not data:
        abort(400, 'No data received')
    data = json.loads(data)
    snapshot = manager.snapshot_create(guest_id, data.get('name'))
    location = "/%s/%s/guests/%s/snapshots/%s" % (hypervisor, host, guest_id,
                                                  snapshot["id"])
    response.set_header("Location", location)
    return json.dumps(snapshot)
示例#35
0
def proxy_request():
    """ Called from a bottle request context.
        Proxies the call transparently to the graphite server.
    """
    url = config.graphite_url + request.path + '?' + request.query_string
    if request.method == 'POST':
        r = requests.post(url,
                          data=request.body.read(),
                          headers=request.headers,
                          stream=True)
    else:
        r = requests.get(url, headers=request.headers, stream=True)

    # Relay headers intact
    for k, v in r.headers.items():
        if not is_hop_by_hop(k):
            response.set_header(k, v)

    response.status = r.status_code
    return r.raw.read()
    def wrapper(*args, **kwargs):
        response.set_header("Access-Control-Allow-Origin", "*")
        response.set_header("Content-Type", "application/json")
        response.set_header("Access-Control-Allow-Methods",
                            "GET, POST, OPTIONS")
        response.set_header("Access-Control-Allow-Headers",
                            "Access-Control-Allow-Origin, Content-Type")

        # skip the function if it is not needed
        if request.method == 'OPTIONS':
            return

        return func(*args, **kwargs)
示例#37
0
文件: aa.py 项目: hknochi/el_aap
 def check_auth(self):
     user, password = request.auth or (None, None)
     if user is None or password is None:
         response.set_header('WWW-Authenticate',  'Basic realm="private"')
         raise BasicAuthenticationError
     credentials = {
         "user": user,
         "password": password
     }
     with self.cache_user_password_lock:
         if (user, password) in self.cache_user_password:
             return user
     try:
         self.users.check_credentials(credentials)
         with self.cache_user_password_lock:
             self.cache_user_password[(user, password)] = user
         return user
     except AuthenticationError:
         response.set_header('WWW-Authenticate',  'Basic realm="private"')
         raise BasicAuthenticationError
示例#38
0
def getTotalUploaders():
    response.set_header("Access-Control-Allow-Origin", "*")
    db = sqlite3.connect(Settings.MONITOR_DB)
    uploaders = collections.OrderedDict()

    limit = request.GET.get('limit', '20').strip()

    query = """SELECT name, SUM(hits) AS total
               FROM uploaders
               GROUP BY name
               ORDER BY total DESC
               LIMIT """ + limit
    results = db.execute(query)

    for row in results:
        uploaders[row[0].encode('utf8')] = row[1]

    db.close()

    return simplejson.dumps(uploaders)
示例#39
0
def callback():
    response.set_header('Content-Type', 'application/json; charset=utf-8')

    lat = request.query.lat
    lon = request.query.lon

    if lat is None or lon is None:
        return "{'error': 'both lat and lon parameters are required'}"

    try:
        lat = float(lat)
        lon = float(lon)
    except:
        return "{'error': 'both lat and lon must be numbers'}"

    result = polyPoint(lat, lon)
    if result is False:
        return "{'error': 'unknown location'}"

    return json.dumps(result, ensure_ascii=False)
示例#40
0
def save_posto():
    """
    Processa o POST para salvar um novo registro de posto
    """
    # Le o parametro api_key, enviado no POST
    api_key = request.forms.api_key
    if not api_key:
        return abort(code=401, text="Unauthorized. API Key is mandatory")

    # Busca um usuario pela chave da API passado no POST
    usuario = Usuario.get(Usuario.api_key == api_key)
    if not usuario:
        return abort(code=401, text="Unauthorized. Invalid API Key")

    # Le o parametro nome, enviado no POST
    nome = request.forms.name
    if not nome:
        return abort(code=400, text="Bad Request. Field \"name\" is required")

    # Le o parametro latitude, enviado no POST
    latitude = request.forms.latitude
    if not latitude:
        return abort(code=400,
                     text="Bad Request. Field \"latitude\" is required")

    # Le o parametro longitude, enviado no POST
    longitude = request.forms.longitude
    if not longitude:
        return abort(code=400,
                     text="Bad Request. Field \"longitude\" is required")

    posto = Posto(nome=nome, latitude=latitude, longitude=longitude)
    posto.save()

    last_id = get_last_id(table='posto')

    response.set_header('Content-Type', 'text/plain')
    response.status = 201
    response.body = "/postos/%d" % last_id

    return response
示例#41
0
def view_edit(name=None):
    """Edit or creates a new page.

    .. note:: this is a bottle view

    if no page name is given, creates a new page.

    Keyword Arguments:
        :name: (str) -- name of the page (OPTIONAL)

    Returns:
        bottle response object
    """
    response.set_header('Cache-control', 'no-cache')
    response.set_header('Pragma', 'no-cache')
    if name is None:
        # new page
        return template('edit',
                        type="edit",
                        name=name,
                        extended_name=None,
                        is_repo=check_repo(),
                        history=[],
                        gitref=None,
                        today=datetime.datetime.now().strftime("%Y%m%d"),
                        content="")
    else:
        files = glob.glob("{0}.rst".format(name))
        if len(files) > 0:
            file_handle = open(files[0], 'r')
            return template('edit',
                            type="edit",
                            name=name,
                            extended_name=None,
                            is_repo=check_repo(),
                            history=[],
                            gitref=None,
                            today=datetime.datetime.now().strftime("%Y%m%d"),
                            content=file_handle.read())
        else:
            return abort(404)
示例#42
0
def getprimarycolor():
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.content_type = "text/plain"
    response.set_header("Cache-Control", "public, max-age=600")
    url = request.query["url"]  # pylint: disable=unsubscriptable-object
    filecache = ""
    filename = "files/" + url.split("/")[len(url.split("/")) - 1]
    if "/api/v1/getbanner" in url:
        filename = "banners/" + url.split("/")[len(url.split("/")) -
                                               1] + ".jpg"
    if os.path.exists("filecache"):
        f = open("filecache", "r")
        x = f.readlines()
        f.close()
        for i in x:
            if i.split("#")[0] == filename:
                filecache = i.split("#")[1]
        if not filecache == "":
            return filecache
        else:
            if not "/api/v1/getbanner" in url:
                subprocess.Popen(["wget", "-O", filename, url],
                                 shell=False).wait()
            color_thief = ColorThief(filename)
            dominant_color = color_thief.get_color()
            x = str(dominant_color).replace("(",
                                            "").replace(" ",
                                                        "").replace(")", "")
            f = open("filecache", "a+")
            f.write(filename + "#" + x + "\n")
            return x
    else:
        if not "/api/v1/getbanner" in url:
            subprocess.Popen(["wget", "-O", filename, url], shell=False).wait()
        color_thief = ColorThief(filename)
        dominant_color = color_thief.get_color()
        x = str(dominant_color).replace("(", "").replace(" ",
                                                         "").replace(")", "")
        f = open("filecache", "a+")
        f.write(filename + "#" + x + "\n")
        return x
示例#43
0
        def topic_json(k, topic_no, N=40):
            
            etag = _generate_etag(self.v[k])
            
            #Check for an "If-None-Match" in the request
            if request.get_header('If-None-Match', '') == etag:
                response.status = 304
                return "Not Modified"

            if k not in self.topic_range:
                response.status = 400  # Not Found
                return "No model for k = {}".format(k)

            #response.set_header('Cache-Control', 'max-age=120')
            response.set_header('Etag', etag)

            response.content_type = 'application/json; charset=UTF8'
            try:
                N = int(request.query.n)
            except:
                pass

            if N > 0:
                data = self.v[k].dist_top_doc([topic_no])[:N]
            else:
                data = self.v[k].dist_top_doc([topic_no])[N:]
                data = reversed(data)

            docs = [doc for doc, prob in data]
            doc_topics_mat = self.v[k].doc_topics(docs)
            docs = self.get_docs(docs, id_as_key=True)

            js = []
            for doc_prob, topics in zip(data, doc_topics_mat):
                doc, prob = doc_prob
                struct = docs[doc]
                struct.update({'prob': float(1 - prob),
                               'topics': dict([(text(t), float(p)) for t, p in topics])})
                js.append(struct)

            return json.dumps(js)
示例#44
0
文件: server.py 项目: dgijzen/webtech
def put_one(url_params, db):
    # get & check the json from the body
    while True:
        try:
            item = request.json
            if item is None:
                raise ValueError
            if not item.viewkeys() & {
                    'model', 'brand', 'image', 'screensize', 'os'
            }:
                raise ValueError
            if not is_float(item['screensize']):
                raise ValueError
            if not is_integer(url_params):
                raise KeyError
            else:
                break
        except ValueError:
            # send 400, when incorrect json
            abort(400,
                  "Incorrect JSON (also make sure screensize is a number)")
        except KeyError:
            # send 400, when id is not an integer
            abort(400, "Id is not an integer")

    # go do sQl
    db.execute(
        """UPDATE phones
                    SET brand=?, model=?, os=?, image=?,
                    screensize=? WHERE id=?""",
        (item['brand'], item['model'], item['os'], item['image'],
         item['screensize'], url_params))

    # set headers for response
    response.content_type = 'application/json'
    response.set_header('Content-Language', 'en')
    # return a response
    model = item.get('model')
    brand = item.get('brand')
    responsJ = {"Updated": "item", "model": model, "brand": brand}
    return json.dumps(responsJ)
示例#45
0
        def wrapper(*args, **kwargs):
            config = Config()
            if self.name in route.skiplist:
                return callback(*args, **kwargs)

            try:
                data = callback(*args, **kwargs)
            # catch validation errors from the controller
            except (BaseError, ValidationError, ConnectionError, Exception) as e:
                # create a standardized error object
                data = {
                    'opstat': 'error'
                }
                if hasattr(e, 'message') and e.message:
                    data['error'] = e.message
                elif hasattr(e, 'msg') and e.msg:
                    data['error'] = e.msg
                else:
                    data['error'] = unicode(e)
                if hasattr(e, 'fields') and isinstance(e.fields, dict):
                    data['fields'] = e.fields
                if hasattr(e, 'returned') and isinstance(e.returned, dict):
                    data['response'] = e.returned

                if not isinstance(e, ValidationError):
                    Log.get_instance().exception(
                        "Error tracked: \Request: %s\nMessage: %s\nFields: %s\nResponse: %s" % (
                            request,
                            e.message,
                            getattr(e, 'fields', None),
                            getattr(e, 'response', None)
                        )
                    )
                    # return server error response
                    response.status = 500

                if config.debug is True:
                    data['traceback'] = traceback.format_exc()

            response.set_header('Content-Type', 'application/json')
            return json.dumps(data)
示例#46
0
def gen():
    global pdf
    global pdf_key
    global pdf_name

    print("gen")

    del pdf
    pdf = io.BytesIO()

    profil = {}
    for (k, v) in request.params.allitems():
        if (k == 'raisons'):
            profil['RAISONS'] = [v]
        else:
            profil[k.upper()] = v

    if ('AUTO' in profil):
        if ('FAIT_LE' in profil):
            del profil['FAIT_LE']
        del profil['FAIT_H']
        del profil['FAIT_M']
        del profil['SORT_LE']
        del profil['SORT_H']
        del profil['SORT_M']

    pdf.seek(0)
    pdf.write(make_attestation(profil).read())
    print(type(pdf))
    pdf_name = "attestation-%s.pdf" % make_pdf_name(profil)
    pdf_key = "%s.pdf" % uuid.uuid4().hex

    if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
        return pdf_key
    else:
        response.set_header('Content-type', 'application/pdf')
        response.set_header("Content-Disposition",
                            "attachment; filename=%s" % pdf_name)
        response.content_length = len(pdf.getvalue())
        pdf.seek(0)
        return pdf.getvalue()
示例#47
0
def agregarRegistro():
    response.set_header('Content-Type', 'application/json')
    if not request.json:
        return '{"R":400,"D":"Cuerpo Vacio"}'
    if not 'personas' in request.json:
        return '{"R":400,"D":"No hay personas"}'

    if not str(request.json['personas']).isnumeric():
        return '{"R":400,"D":"personas no es un número"}'

    #Si llega aqui es que si hay personas
    con_bd = sqlite3.connect('database.sqlite')
    cursor_principal = con_bd.cursor()
    SQL = "insert into registro values (?, datetime('now'))"
    cursor_principal.execute(SQL, (request.json['personas'], ))
    con_bd.commit()
    cursor_principal.close()
    con_bd.close()

    a = {"R": 201}
    return json.dumps(a)
示例#48
0
def get_url_upload():
    import json
    # url = request.forms.get('url')    获取用户为文件定义的名字,一定要发布出去才可以使用
    response.set_header('Access-Control-Allow-Origin','*')
    data = eval((request.body.readlines()[0]).decode('utf8'))
    import requests
    page = requests.get(data['url'] , headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'})
    page.encoding = 'utf8'
    f = page.text
    md5 = hashlib.md5()
    md5.update(data['url'].encode('utf'))
    filename = md5.hexdigest()
    ans = analyse.crawl_sample(filename , f , 1)
    ans['grade'] = data['grade']
    print(ans['grade'])
    number_reader = -1
    if ans != None :
        # 获得了对应文章的标签属性 , ans是一个含有grade但是没有number_reader的字典
        number_reader = get_result(ans)
    # 发送信号单元
    return json.dumps({'result': int(number_reader)} , ensure_ascii = False , skipkeys = True)
示例#49
0
def index():

    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE, OPTIONS'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token'

    command = "none"

    if request.method == 'POST':
      command = request.POST['command']
      print(command)
      arduino_command = None
      if(command):

        print(command+"\n")
        ser.write(command.encode()+"\n")


    response.set_header('Access-Control-Allow-Origin', '*')
    result = "ok: "+command
    return result
示例#50
0
 def showNewAccountPage():
     # check if token is required; if it is and wrong token provided, show login screen instead
     try:
         targetToken = html.escape(self.config.getProperty('UserHandler', 'create_account_token'))
     except:
         # no secret token defined
         targetToken = None
     if targetToken is not None and not(targetToken == ''):
         try:
             providedToken = html.escape(request.query['t'])
             if providedToken == targetToken:
                 response = static_file('templates/newAccountScreen.html', root=self.staticDir)
             else:
                 response = redirect('/login')
         except:
             response = redirect('/login')
     else:
         # no token required
         response = static_file('templates/newAccountScreen.html', root=self.staticDir)
     response.set_header('Cache-Control', 'public, max-age=0')
     return response
示例#51
0
 def get_log(self,record_id): 
     '''
     Get log file for report.
     '''        
     ##print 'querylog()'                
     #db=self.getDB()
     report=self.db["report_data"]    
     record=report.find_one({"_id":int(record_id)});
     if not record:
         abort(400,'No record found!') 
     elif ("log" not in record):
         abort(400,"No log file!")
     else: 
         #fs=self.getfs()
         if not self.fs.exists(record['log']):
             abort(400,'File not found!')
         else:
             log=self.fs.get(record['log'])
             response.set_header('Content-Type','application/x-download')
             response.set_header('Content-Disposition','attachment; filename=log_'+record_id+'.zip',True)
             return log 
示例#52
0
def links(n):
    try:
        n = int(n)
    except:
        n = None
    if n == 1:
        response.set_header('Link',
                            '</links/2>; rel="next", </links/3>; rel="last"')
    elif n == 2:
        response.set_header(
            'Link',
            '</links/3>; rel="next", </links/3>; rel="last", </links/1>; rel="prev", </links/1>; rel="first"'
        )
    elif n == 3:
        response.set_header('Link',
                            '</links/1>; rel="prev", </links/1>; rel="first"')
    elif n is None:
        response.set_header('Link', '</links/none>; rel="self"')
    else:
        response.set_header('Link', '</links/1>')
    return normal_formsdict()
示例#53
0
def tag_create(hypervisor, host, guest_id):
    """
    Create a new tag for a given guest

    ::

      POST /:hypervisor/:host/guests/:guest_id/tags

    """
    response.content_type = "application/json"
    manager = create_manager(hypervisor, host)
    data = request.body.readline()
    if not data:
        abort(400, 'No data received')
    data = json.loads(data)
    tag = manager.tag_create(guest_id, data.get('name'))
    #TODO: Should we return the Location for the first tag?
    location = "/%s/%s/guests/%s/tags/%s" % (hypervisor, host, guest_id,
                                             tag[0])
    response.set_header("Location", location)
    return json.dumps(tag)
示例#54
0
def hit_list():
    try:
        response.set_header("Access-Control-Allow-Origin", "*")
        stub_day = str(request.query.day)
        page = int(request.query.page)
        model = str(request.query.model)
        status = str(request.query.status)
        symbol = str(request.query.symbol)
        size = int(request.query.size)
        retlist = mysql_client.query_stock_hit_page_list(
            symbol, status, model, page)
        total = mysql_client.query_stock_hit_page_count() * size
        #封装当前价格
        if retlist != None and len(retlist) > 0:
            retlist = compose_cur_prices(retlist)
            return '{"total":' + str(
                total) + ', "msg":"success", "res":' + json.dumps(
                    retlist, cls=DateEncoder) + '}'
        return '{"total":20, "msg":"success", "res":[]}'
    except Exception, e:
        traceback.print_exc()
示例#55
0
def query_paginate(resources, arguments):
    """Return the resources paginated

    Args:
        resources(list): List to paginate
        arguments(FormsDict): query arguments

    Returns:
        list: Paginated resource (asc or desc)
    """

    if '_page' not in arguments:
        return resources

    page = int(arguments['_page'])
    limit = 10 if '_limit' not in arguments else int(arguments['_limit'])
    chunk_data = list(chunk_list(resources, limit))
    results = chunk_data[page - 1]
    link_header = build_link_header(request, page, len(chunk_data))
    response.set_header("Link", link_header)
    return results
示例#56
0
def get_nfo(dataset=None):
    if auth():
        id = request.query.guid or None
        if id:
            with db_session() as db:
                release = db.query(Release).join(NFO).filter(
                    Release.id == id).first()
                if release:
                    data = release.nfo.data
                    response.set_header('Content-type', 'application/x-nfo')
                    response.set_header(
                        'Content-Disposition',
                        'attachment; filename="{0}"'.format(
                            release.search_name.replace(' ', '_') + '.nfo'))
                    return gzip.decompress(data)
                else:
                    return api_error(300)
        else:
            return api_error(200)
    else:
        return api_error(100)
示例#57
0
def sync(start_id, count):
    '''
    Data sync interface for other database.Should be invoked locally.
    Paramenters:
    startid=id(start from 1)
    count=count
    
    Return:
    Headers:
    Content-Type:application/json    
    Body:
    A json array and every element in the array is a json document.
    array:[{},{}]
    document:{_id,category,type,name,info,occur_time,receive_time,uuid,sys_info:{}}
    
    '''
    brstore_url = brconfig.BRSTORE + "/record/sync?startid=%d&count=%d" % (
        start_id, count)
    data = json.loads(access(brstore_url))
    response.set_header("Content-Type", "application/json")
    return data
示例#58
0
def raw_access(url, headers=None, data=None):
    req = urllib2.Request(url)
    if data != None:
        req.add_data(data)
    if headers != None:
        for key in headers:
            req.add_header(key, headers[key])
    req.add_header("x-user", "brquery")
    req.add_header("x-password", "Redis123")

    f = urllib2.urlopen(req)
    m = f.info()
    contentType = m.getheader("Content-Type")
    response.set_header("Content-Type", contentType)
    if contentType == "application/x-download":
        d = m.getheader("Content-Disposition")
        if d != None:
            response.set_header("Content-Disposition", d)
        return f
    else:
        return f.readline()
示例#59
0
def getTotalSchemas():
    response.set_header("Access-Control-Allow-Origin", "*")
    db = mariadb.connect(user=Settings.MONITOR_DB['user'],
                         password=Settings.MONITOR_DB['password'],
                         database=Settings.MONITOR_DB['database'])
    schemas = collections.OrderedDict()

    query = """SELECT `name`, SUM(`hits`) AS `total`
               FROM `schemas`
               GROUP BY `name`
               ORDER BY `total` DESC"""

    results = db.cursor()
    results.execute(query)

    for row in results:
        schemas[str(row[0])] = row[1]

    db.close()

    return simplejson.dumps(schemas)
示例#60
0
文件: Gateway.py 项目: z64/EDDN
def upload():
    response.set_header("Access-Control-Allow-Origin", "*")
    try:
        # Body may or may not be compressed.
        message_body = get_decompressed_message()
    except zlib.error as exc:
        # Some languages and libs do a crap job zlib compressing stuff. Provide
        # at least some kind of feedback for them to try to get pointed in
        # the correct direction.
        response.status = 400
        logger.error("gzip error with %s: %s" %
                     (get_remote_address(), exc.message))
        return exc.message
    except MalformedUploadError as exc:
        # They probably sent an encoded POST, but got the key/val wrong.
        response.status = 400
        logger.error("Error to %s: %s" % (get_remote_address(), exc.message))
        return exc.message

    statsCollector.tally("inbound")
    return parse_and_error_handle(message_body)