Exemplo n.º 1
0
 def get(self):
     self.response.out.write(
         '<html><head><title>eggs</title></head><body><pre>')
     files = Package.query()
     for file in files:
         self.response.out.write(
             '<a href="/gs/{bucket}/{filename}">{filename}</a>\n'.format(
                 bucket=app_identity.get_default_gcs_bucket_name(),
                 filename=file.content))
     self.response.out.write('</pre></body></html>')
Exemplo n.º 2
0
    def doPackage(self):
        requested_package = self.request.path.strip('/')

        package = Package.query(Package.fullname == requested_package).get()

        if package and blobstore.get(package.blob):
            self.response.headers['Content-Type'] = 'application/octet-stream'
            self.send_blob(package.blob)
        else:
            self.error(404)
            self.response.write('That package does not exist.')
Exemplo n.º 3
0
    def doIndex(self):
        self.response.headers['Content-Type'] = 'text/html'

        query = Package.query(projection=['architecture'], distinct=True)
        archs = [x.architecture for x in query]

        # Load graphs.
        graphs = {}
        for dep in DepsModel.query().iter():
            graphs[dep.deps_arch] = True

        packages = dedup_packages(Package.query().fetch(None))

        template_data = {
            # TODO(miselin): this should be figured out from datastore.
            'archs': archs,
            'packages': packages,
            'graphs': graphs,
        }

        template = JINJA_ENVIRONMENT.get_template('templates/index.html')
        self.response.write(template.render(template_data))
Exemplo n.º 4
0
    def doDatabase(self):
        packages = Package.query().iter()
        all_packages = dedup_packages(packages)

        result = {}
        for package in all_packages:
            name = package.package_name
            arch = package.architecture
            vers = package.version
            sha1 = package.sha1

            result['%s-%s' % (name, arch)] = {
                'architecture': arch,
                'version': vers,
                'name': name,
                'sha1': sha1,
            }

        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(json.dumps(result))
Exemplo n.º 5
0
    def post(self):
        # OK, we can process the rest now.
        name = self.request.get('name')
        arch = self.request.get('arch')
        vers = self.request.get('vers')
        sha1 = self.request.get('sha1')
        if not (name and arch and vers and sha1):
            self.badrequest()
            return

        try:
            uploaded = self.get_uploads()[0]
            uploaded_key = uploaded.key()
        except:
            self.badrequest()
            return

        fullname = '%s-%s-%s.pup' % (name, vers, arch)

        # Do we already know of a package like this?
        known_package = Package.query(Package.fullname == fullname).get()

        if not known_package:
            # Now create the record.
            package = Package(fullname=fullname, package_name=name,
                              architecture=arch, version=vers, sha1=sha1,
                              blob=uploaded_key)
            package.put()
        else:
            # Wipe out the created item in blobstore, we don't need it.
            item = blobstore.get(known_package.blob)
            item.delete()

            # Update the package contents.
            known_package.sha1 = sha1
            known_package.blob = uploaded_key
            known_package.put()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('ok')