Example #1
0
func handleExport(d *Server, ctx context.Context, cmd *wire.Command) (*wire.Response, error) {
	who := cmd.GetExportCommand().Who

	// Figure out the correct store:
	var st *store.Store
	if who == "" {
		st = d.Repo.OwnStore
	} else {
		whoID, err := id.Cast(who)
		if err != nil {
			return nil, err
		}

		st, err = d.Repo.Store(whoID)
		if err != nil {
			return nil, err
		}
	}

	pbStore, err := st.Export()
	if err != nil {
		return nil, err
	}

	data, err := proto.Marshal(pbStore)
	if err != nil {
		return nil, err
	}

	return &wire.Response{
		ExportResp: &wire.Response_ExportResp{
			Data: data,
		},
	}, nil
}