- Add comment explaining why appendFloat64Prop doesn't check for zero
(GPS coordinates 0.0 are valid for equator/prime meridian)
- Fix changelog to list only implemented fields (removed exposureTime,
exposureBias, flash, meteringMode, whiteBalance; added exposureNumerator,
exposureDenominator)
The context parameter was not being used in the function.
Also removed from multistatusResponse and removed unused context import.
Addresses SonarCloud issue go:S1172.
Extract repetitive nil/zero checks into reusable helper functions:
- appendStringProp: handles *string with nil and empty checks
- appendFloat32Prop: handles *float32 with nil and zero checks
- appendFloat64Prop: handles *float64 with nil check
- appendInt32Prop: handles *int32 with nil and zero checks
This reduces appendPhotoProps complexity from 18 to under 15 and
appendLocationProps complexity as well.
Addresses SonarCloud issue go:S3776.
Extract photo and location property building into separate helper
functions (appendPhotoProps, appendLocationProps) to reduce cognitive
complexity from 41 to under 15.
This addresses SonarCloud issue go:S3776.
- Add exposure numerator/denominator to search results
- Add altitude extraction from Tika GPS metadata
- All photo EXIF fields now fully exposed via WebDAV search
- Add location field mappings with Store=true in Bleve index
- Rename properties to oc:photo-location-* for consistency
- Add altitude support alongside latitude/longitude
- Requires index rebuild to take effect
This change enables photo gallery applications to access EXIF metadata
through the search API.
Changes:
- Add KQL query support for photo fields:
- photo.takenDateTime (datetime range queries)
- photo.cameraMake, photo.cameraModel (keyword queries)
- photo.fNumber, photo.focalLength, photo.iso (numeric queries)
- Configure Bleve index to store photo fields (Store=true)
- Map photo metadata from Bleve hits to Entity.Photo protobuf
- Add oc:photo-* properties to WebDAV search responses
- Add unit tests for photo field queries
The photo metadata is extracted by Tika during indexing and stored
in the Bleve search index. This enables queries like:
photo.takenDateTime:[2023-01-01 TO 2023-12-31]
photo.cameraMake:Canon
Signed-off-by: Paul Faure <paul@faure.ca>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Previously, the search service would limit the search
to the according space when searching `/dav/spaces/`.
This was not correct, as the search should be limited
to the according space when a `scope` is passed in the search pattern instead.
Middleware in the webdav service was missing. Telemetry for webdav was
relying on the otelchi middleware that was added afterwards and removed
in the previous commit. New (otelhttp) telemetry has been added to the
middlewares for the service.
Incoming telemetry data from HTTP (captured with otelhttp) with also be
stored so the telemetry for go-micro's requests can be picked up and
propagate properly.
otelchi and other custom solutions have been replaced with otelhttp to
trace HTTP requests; new middleware is provided to be used across the
platform.
The proxy service will use a custom HTTP client to forward the headers
needed for telemetry automatically (also based on otelhttp)
The "tracing.GetNewRequest" and "tracing.GetNewRequestWithContext" aims
to replace the "http.NewRequest" and "http.NewRequestWithContext"
respectively by including tracing data.
For requests that have been already created, such as the case of some
reva requests, "tracing.InjectTracingHeaders" is provided.
Note that some outgoing requests might be required NOT to use tracing
headers.
We're now setting a 'Retry-After' in the webdav response when the
thunbnailer is rate limiting the requests. For now the timeout is just
a random number between 1 and 15 seconds.
This moves the ratelimit ('THUMBNAILS_MAX_CONCURRENT_REQUESTS') from the
HTTP endpoint to the GRPC endpoint. The HTTP endpoint is just used for
downloading already created thumbnails. But the resource consuming part of
thumbnail generation happens in the GRPC service.
Adds the remote item id to search `REPORT` responses for shared resources and resources that are part of such. This id represents the id of the original resource that has been shared (= the remote item) and is needed for clients to correctly resolve their locations.
* feat: add CSP and other security related headers in the oCIS proxy service
* fix: consolidate security related headers - drop middleware.Secure
* fix: use github.com/DeepDiver1975/secure
* fix: acceptance tests
* feat: support env var replacements in csp.yaml