MCPcopy Index your code
hub / github.com/aptly-dev/aptly / resourceForURL

Method resourceForURL

s3/server_test.go:237–285  ·  view source on GitHub ↗

resourceForURL returns a resource object for the given URL.

(u *url.URL)

Source from the content-addressed store, hash-verified

235
236// resourceForURL returns a resource object for the given URL.
237func (srv *Server) resourceForURL(u *url.URL) (r resource) {
238
239 if u.Path == "/" {
240 return serviceResource{
241 buckets: srv.buckets,
242 }
243 }
244
245 m := pathRegexp.FindStringSubmatch(u.Path)
246 if m == nil {
247 fatalError(404, "InvalidURI", "Couldn't parse the specified URI")
248 }
249 bucketName := m[2]
250 objectName := m[4]
251 if bucketName == "" {
252 return nullResource{} // root
253 }
254 b := bucketResource{
255 name: bucketName,
256 bucket: srv.buckets[bucketName],
257 }
258 q := u.Query()
259 if objectName == "" {
260 for name := range q {
261 if unimplementedBucketResourceNames[name] {
262 return nullResource{}
263 }
264 }
265 return b
266
267 }
268 if b.bucket == nil {
269 fatalError(404, "NoSuchBucket", "The specified bucket does not exist")
270 }
271 objr := objectResource{
272 name: objectName,
273 version: q.Get("versionId"),
274 bucket: b.bucket,
275 }
276 for name := range q {
277 if unimplementedObjectResourceNames[name] {
278 return nullResource{}
279 }
280 }
281 if obj := objr.bucket.objects[objr.name]; obj != nil {
282 objr.object = obj
283 }
284 return objr
285}
286
287// nullResource has error stubs for all resource methods.
288type nullResource struct{}

Callers 1

serveHTTPMethod · 0.95

Calls 3

fatalErrorFunction · 0.85
QueryMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected