def fetch_gref(channel, identifier): crypto_adaptor = station.get_crypto_adaptor() adaptor = GithubReadAdaptor(station, channel) gref = Gref(station.store, channel, identifier) log.info("Trying to fetch channel: %s identifier: %s" % (channel, identifier)) marshalled_thread = adaptor.get_issue(gref, crypto_adaptor=crypto_adaptor) root_obj = marshalled_thread["roots"].pop() root = root_obj.as_json() root["hash"] = oid2hex(pygit2.hash(root_obj.as_object())) response = [] while marshalled_thread["thread"]: node = marshalled_thread["thread"].pop() data = json.loads(node.data) data["parents"] = list(node.parents) data["hash"] = oid2hex(pygit2.hash(node.as_object())) response.append(data) return jsonate( { "content": response, "root": root, "tips": marshalled_thread["tips"], "signatures": marshalled_thread["signatures"] }, False)
def test_transfer_object(self): self.station.set_real_id(True) object_body = "foo bar baz butts lol" oid = pygit2.hash(object_body) req = MockRequest(self.station.id) req.payload = oid2hex(oid) self.station.station.registry.register(req) git_pb = GitObject() git_pb.data = object_body git_pb.type = pygit2.GIT_OBJ_BLOB self.station.payload = git_pb.SerializeToString() handle_transfer(self.station) self.assertTrue(self.station.station[oid2hex(oid)], object_body)
def fetch_gref(channel, identifier): adaptor = github_protocol.GithubReadAdaptor(station, channel) gref = Gref(station.store, channel, identifier) log.info("Trying to fetch channel: %s identifier: %s" % (channel, identifier)) marshalled_thread = adaptor.get_issue(gref) root_obj = marshalled_thread["roots"].pop() root = root_obj.as_json() root["hash"] = oid2hex(pygit2.hash(root_obj.as_object())) response = [] while marshalled_thread["thread"]: node = marshalled_thread["thread"].pop() data = json.loads(node.data) data["parents"] = list(node.parents) data["hash"] = oid2hex(pygit2.hash(node.as_object())) response.append(data) return jsonate({"content": response, "root": root, "tips": marshalled_thread["tips"]}, False)
def handle_transfer(self): git_pb = GitObject() git_pb.ParseFromString(self.payload) log.info("Handling TRANSFER of %s" % (git_pb.type)) try: req = self.station.get_request(self.id) except KeyError: raise UnsolicitedTransfer if git_pb.type == pygit2.GIT_OBJ_BLOB: data_hash = utils.oid2hex(pygit2.hash(git_pb.data)) assert req.payload == data_hash, \ "Attempted to be sent invalid object for %s; got %s" % (req.payload, data_hash) ret = self.station.store.write(git_pb.type, git_pb.data) log.info("Wrote object %s into local db" % logger.fix_oid(ret))
def sha1(self): if self._sha1: return self._sha1 else: self._sha1 = oid2hex(pygit2.hash(self.as_object())) return self._sha1
def write(self, typ, data): return oid2hex(self.repo.write(typ, data))