Skip to content

Commit dab9aa1

Browse files
authored
fix: act expose headers (#5024)
1 parent c551bf4 commit dab9aa1

File tree

7 files changed

+41
-13
lines changed

7 files changed

+41
-13
lines changed

pkg/api/accesscontrol.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,32 +154,30 @@ func (s *Service) actDecryptionHandler() func(h http.Handler) http.Handler {
154154
// uploads the encrypted reference, history and kvs to the store.
155155
func (s *Service) actEncryptionHandler(
156156
ctx context.Context,
157-
w http.ResponseWriter,
158157
putter storer.PutterSession,
159158
reference swarm.Address,
160159
historyRootHash swarm.Address,
161-
) (swarm.Address, error) {
160+
) (swarm.Address, swarm.Address, error) {
162161
publisherPublicKey := &s.publicKey
163162
ls := loadsave.New(s.storer.Download(true), s.storer.Cache(), requestPipelineFactory(ctx, putter, false, redundancy.NONE), redundancy.DefaultLevel)
164163
storageReference, historyReference, encryptedReference, err := s.accesscontrol.UploadHandler(ctx, ls, reference, publisherPublicKey, historyRootHash)
165164
if err != nil {
166-
return swarm.ZeroAddress, err
165+
return swarm.ZeroAddress, swarm.ZeroAddress, err
167166
}
168167
// only need to upload history and kvs if a new history is created,
169168
// meaning that the publisher uploaded to the history for the first time
170169
if !historyReference.Equal(historyRootHash) {
171170
err = putter.Done(storageReference)
172171
if err != nil {
173-
return swarm.ZeroAddress, fmt.Errorf("done split key-value store failed: %w", err)
172+
return swarm.ZeroAddress, swarm.ZeroAddress, fmt.Errorf("done split key-value store failed: %w", err)
174173
}
175174
err = putter.Done(historyReference)
176175
if err != nil {
177-
return swarm.ZeroAddress, fmt.Errorf("done split history failed: %w", err)
176+
return swarm.ZeroAddress, swarm.ZeroAddress, fmt.Errorf("done split history failed: %w", err)
178177
}
179178
}
180179

181-
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
182-
return encryptedReference, nil
180+
return encryptedReference, historyReference, nil
183181
}
184182

185183
// actListGranteesHandler is a middleware that decrypts the given address and returns the list of grantees,

pkg/api/bytes.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,9 @@ func (s *Service) bytesUploadHandler(w http.ResponseWriter, r *http.Request) {
118118
}
119119

120120
encryptedReference := reference
121+
historyReference := swarm.ZeroAddress
121122
if headers.Act {
122-
encryptedReference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, headers.HistoryAddress)
123+
encryptedReference, historyReference, err = s.actEncryptionHandler(r.Context(), putter, reference, headers.HistoryAddress)
123124
if err != nil {
124125
logger.Debug("access control upload failed", "error", err)
125126
logger.Error(nil, "access control upload failed")
@@ -154,6 +155,10 @@ func (s *Service) bytesUploadHandler(w http.ResponseWriter, r *http.Request) {
154155
span.LogFields(olog.Bool("success", true))
155156

156157
w.Header().Set(AccessControlExposeHeaders, SwarmTagHeader)
158+
if headers.Act {
159+
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
160+
w.Header().Add(AccessControlExposeHeaders, SwarmActHistoryAddressHeader)
161+
}
157162
jsonhttp.Created(w, bytesPostResponse{
158163
Reference: encryptedReference,
159164
})

pkg/api/bzz.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,9 @@ func (s *Service) fileUploadHandler(
267267
logger.Debug("store", "manifest_reference", manifestReference)
268268

269269
reference := manifestReference
270+
historyReference := swarm.ZeroAddress
270271
if act {
271-
reference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, historyAddress)
272+
reference, historyReference, err = s.actEncryptionHandler(r.Context(), putter, reference, historyAddress)
272273
if err != nil {
273274
logger.Debug("access control upload failed", "error", err)
274275
logger.Error(nil, "access control upload failed")
@@ -303,6 +304,10 @@ func (s *Service) fileUploadHandler(
303304
}
304305
w.Header().Set(ETagHeader, fmt.Sprintf("%q", reference.String()))
305306
w.Header().Set(AccessControlExposeHeaders, SwarmTagHeader)
307+
if act {
308+
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
309+
w.Header().Add(AccessControlExposeHeaders, SwarmActHistoryAddressHeader)
310+
}
306311

307312
jsonhttp.Created(w, bzzUploadResponse{
308313
Reference: reference,

pkg/api/chunk.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,9 @@ func (s *Service) chunkUploadHandler(w http.ResponseWriter, r *http.Request) {
185185
}
186186

187187
reference := chunk.Address()
188+
historyReference := swarm.ZeroAddress
188189
if headers.Act {
189-
reference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, headers.HistoryAddress)
190+
reference, historyReference, err = s.actEncryptionHandler(r.Context(), putter, reference, headers.HistoryAddress)
190191
if err != nil {
191192
logger.Debug("access control upload failed", "error", err)
192193
logger.Error(nil, "access control upload failed")
@@ -217,6 +218,10 @@ func (s *Service) chunkUploadHandler(w http.ResponseWriter, r *http.Request) {
217218
}
218219

219220
w.Header().Set(AccessControlExposeHeaders, SwarmTagHeader)
221+
if headers.Act {
222+
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
223+
w.Header().Add(AccessControlExposeHeaders, SwarmActHistoryAddressHeader)
224+
}
220225
jsonhttp.Created(w, chunkAddressResponse{Reference: reference})
221226
}
222227

pkg/api/dirs.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,9 @@ func (s *Service) dirUploadHandler(
102102
}
103103

104104
encryptedReference := reference
105+
historyReference := swarm.ZeroAddress
105106
if act {
106-
encryptedReference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, historyAddress)
107+
encryptedReference, historyReference, err = s.actEncryptionHandler(r.Context(), putter, reference, historyAddress)
107108
if err != nil {
108109
logger.Debug("access control upload failed", "error", err)
109110
logger.Error(nil, "access control upload failed")
@@ -135,6 +136,10 @@ func (s *Service) dirUploadHandler(
135136
span.LogFields(olog.Bool("success", true))
136137
}
137138
w.Header().Set(AccessControlExposeHeaders, SwarmTagHeader)
139+
if act {
140+
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
141+
w.Header().Add(AccessControlExposeHeaders, SwarmActHistoryAddressHeader)
142+
}
138143
jsonhttp.Created(w, bzzUploadResponse{
139144
Reference: encryptedReference,
140145
})

pkg/api/feed.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,9 @@ func (s *Service) feedPostHandler(w http.ResponseWriter, r *http.Request) {
280280
}
281281

282282
encryptedReference := ref
283+
historyReference := swarm.ZeroAddress
283284
if headers.Act {
284-
encryptedReference, err = s.actEncryptionHandler(r.Context(), w, putter, ref, headers.HistoryAddress)
285+
encryptedReference, historyReference, err = s.actEncryptionHandler(r.Context(), putter, ref, headers.HistoryAddress)
285286
if err != nil {
286287
logger.Debug("access control upload failed", "error", err)
287288
logger.Error(nil, "access control upload failed")
@@ -307,5 +308,9 @@ func (s *Service) feedPostHandler(w http.ResponseWriter, r *http.Request) {
307308
return
308309
}
309310

311+
if headers.Act {
312+
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
313+
w.Header().Set(AccessControlExposeHeaders, SwarmActHistoryAddressHeader)
314+
}
310315
jsonhttp.Created(w, feedReferenceResponse{Reference: encryptedReference})
311316
}

pkg/api/soc.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,9 @@ func (s *Service) socUploadHandler(w http.ResponseWriter, r *http.Request) {
181181
}
182182

183183
reference := sch.Address()
184+
historyReference := swarm.ZeroAddress
184185
if headers.Act {
185-
reference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, headers.HistoryAddress)
186+
reference, historyReference, err = s.actEncryptionHandler(r.Context(), putter, reference, headers.HistoryAddress)
186187
if err != nil {
187188
logger.Debug("access control upload failed", "error", err)
188189
logger.Error(nil, "access control upload failed")
@@ -207,6 +208,10 @@ func (s *Service) socUploadHandler(w http.ResponseWriter, r *http.Request) {
207208
jsonhttp.InternalServerError(ow, "done split failed")
208209
return
209210
}
211+
if headers.Act {
212+
w.Header().Set(SwarmActHistoryAddressHeader, historyReference.String())
213+
w.Header().Set(AccessControlExposeHeaders, SwarmActHistoryAddressHeader)
214+
}
210215

211216
jsonhttp.Created(w, socPostResponse{Reference: reference})
212217
}

0 commit comments

Comments
 (0)