示例#1
0
    def update_readme(self):
        response = util.github_get('repos',
                                   self.owner,
                                   self.repo,
                                   'readme',
                                   params={"ref": self.sha})
        if response.status_code == 200:
            readme = base64.b64decode(json.loads(response.content)['content'])
            try:
                Content(parent=self.version_key,
                        id='readme',
                        content=readme,
                        status=Status.ready,
                        etag=response.headers.get('ETag', None)).put()
            except db.BadValueError:
                return self.error(
                    "Could not store README.md as a utf-8 string",
                    ErrorCodes.Version_utf)
        elif response.status_code == 404:
            readme = None
        else:
            return self.retry('error fetching readme (%d)' %
                              response.status_code)

        if readme is not None:
            response = util.github_markdown(readme)
            if response.status_code == 200:
                Content(parent=self.version_key,
                        id='readme.html',
                        content=response.content,
                        status=Status.ready,
                        etag=response.headers.get('ETag', None)).put()
            else:
                return self.retry('error converting readme to markdown (%d)' %
                                  response.status_code)
示例#2
0
  def update_pages(self):
    bower = Content.get_by_id('bower', parent=self.version_key)
    if bower is None:
      return

    bower_json = bower.get_json()

    for _, path in bower_json.get('pages', {}).iteritems():
      response = util.github_get('repos', self.owner, self.repo, 'contents/' + path, params={'ref': self.sha})

      if response.status_code == 200:
        response_json = json.loads(response.content)
        markdown = None
        # Ensure a file was returned
        if isinstance(response_json, dict) and response_json.get('type') == 'file':
          markdown = base64.b64decode(response_json.get('content'))
      elif response.status_code == 404:
        markdown = None
      else:
        return self.retry('error fetching page %s (%d)' % (path, response.status_code))

      if markdown is not None:
        response = util.github_markdown(markdown)
        if response.status_code == 200:
          Content(parent=self.version_key, id='page-' + path, content=response.content,
                  status=Status.ready, etag=response.headers.get('ETag', None)).put()
        else:
          return self.retry('error converting page to markdown %s (%d)' % (path, response.status_code))
示例#3
0
  def update_readme(self, is_npm_package):
    if is_npm_package:
      # Load registry metadata to fetch readme path.
      library = Library.get_by_id(Library.id(self.owner, self.repo))
      registry_metadata = json.loads(library.registry_metadata) if library.registry_metadata else None
      readme_path = registry_metadata.get('readmeFilename', 'README.md')
      response = util.unpkg_get(self.owner, self.repo, self.version, readme_path)
      readme = response.content
    else:
      # Load readme from GitHub endpoint.
      response = util.github_get('repos', self.owner, self.repo, 'readme', params={"ref": self.sha})

      if response.status_code == 200:
        readme = base64.b64decode(json.loads(response.content)['content'])
      elif response.status_code == 404:
        readme = None
      else:
        return self.retry('error fetching readme (%d)' % response.status_code)

    if readme is not None:
      # Store the raw readme markdown.
      try:
        Content(parent=self.version_key, id='readme', content=readme,
                status=Status.ready, etag=response.headers.get('ETag', None)).put()
      except db.BadValueError:
        return self.error("Could not store README.md as a utf-8 string", ErrorCodes.Version_utf)

      # Convert markdown to HTML and store the result.
      response = util.github_markdown(readme)
      if response.status_code == 200:
        Content(parent=self.version_key, id='readme.html', content=response.content,
                status=Status.ready, etag=response.headers.get('ETag', None)).put()
      else:
        return self.retry('error converting readme to markdown (%d)' % response.status_code)
示例#4
0
  def update_pages(self):
    bower = Content.get_by_id('bower', parent=self.version_key)
    if bower is None:
      return

    bower_json = bower.get_json()

    for _, path in bower_json.get('pages', {}).iteritems():
      response = util.github_get('repos', self.owner, self.repo, 'contents/' + path, params={'ref': self.sha})

      if response.status_code == 200:
        response_json = json.loads(response.content)
        markdown = None
        # Ensure a file was returned
        if isinstance(response_json, dict) and response_json.get('type') == 'file':
          markdown = base64.b64decode(response_json.get('content'))
      elif response.status_code == 404:
        markdown = None
      else:
        return self.retry('error fetching page %s (%d)' % (path, response.status_code))

      if markdown is not None:
        response = util.github_markdown(markdown)
        if response.status_code == 200:
          Content(parent=self.version_key, id='page-' + path, content=response.content,
                  status=Status.ready, etag=response.headers.get('ETag', None)).put()
        else:
          return self.retry('error converting page to markdown %s (%d)' % (path, response.status_code))
示例#5
0
  def update_readme(self, is_npm_package):
    if is_npm_package:
      # Load registry metadata to fetch readme path.
      library = Library.get_by_id(Library.id(self.owner, self.repo))
      registry_metadata = json.loads(library.registry_metadata) if library.registry_metadata else None
      readme_path = registry_metadata.get('readmeFilename', 'README.md')
      response = util.unpkg_get(self.owner, self.repo, self.version, readme_path)
      readme = response.content
    else:
      # Load readme from GitHub endpoint.
      response = util.github_get('repos', self.owner, self.repo, 'readme', params={"ref": self.sha})

      if response.status_code == 200:
        readme = base64.b64decode(json.loads(response.content)['content'])
      elif response.status_code == 404:
        readme = None
      else:
        return self.retry('error fetching readme (%d)' % response.status_code)

    if readme is not None:
      # Store the raw readme markdown.
      try:
        Content(parent=self.version_key, id='readme', content=readme,
                status=Status.ready, etag=response.headers.get('ETag', None)).put()
      except db.BadValueError:
        return self.error("Could not store README.md as a utf-8 string", ErrorCodes.Version_utf)

      # Convert markdown to HTML and store the result.
      response = util.github_markdown(readme)
      if response.status_code == 200:
        Content(parent=self.version_key, id='readme.html', content=response.content,
                status=Status.ready, etag=response.headers.get('ETag', None)).put()
      else:
        return self.retry('error converting readme to markdown (%d)' % response.status_code)
示例#6
0
文件: manage.py 项目: andymutton/v2
  def update_readme(self):
    response = util.github_get('repos', self.owner, self.repo, 'readme', params={"ref": self.sha})
    if response.status_code == 200:
      readme = base64.b64decode(json.loads(response.content)['content'])
      try:
        Content(parent=self.version_key, id='readme', content=readme,
                status=Status.ready, etag=response.headers.get('ETag', None)).put()
      except db.BadValueError:
        return self.error("Could not store README.md as a utf-8 string")
    elif response.status_code == 404:
      readme = None
    else:
      return self.retry('error fetching readme (%d)' % response.status_code)

    if readme is not None:
      response = util.github_markdown(readme)
      if response.status_code == 200:
        Content(parent=self.version_key, id='readme.html', content=response.content,
                status=Status.ready, etag=response.headers.get('ETag', None)).put()
      else:
        return self.retry('error converting readme to markdown (%d)' % response.status_code)