Backend: Run "make fmt" with Go v1.19

Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
Michael Mayer 2022-08-10 16:09:21 +02:00
parent 33f2c6bbf0
commit b072a18a17
72 changed files with 552 additions and 615 deletions

View file

@ -1,26 +1,24 @@
/* /*
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package main package main

View file

@ -1,28 +1,26 @@
/* /*
Package acl provides access control lists for authorization checking of user actions. Package acl provides access control lists for authorization checking of user actions.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package acl package acl

View file

@ -31,7 +31,8 @@ const (
// GET /api/v1/accounts/:id // GET /api/v1/accounts/:id
// //
// Parameters: // Parameters:
// id: string Account ID as returned by the API //
// id: string Account ID as returned by the API
func GetAccount(router *gin.RouterGroup) { func GetAccount(router *gin.RouterGroup) {
router.GET("/accounts/:id", func(c *gin.Context) { router.GET("/accounts/:id", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionRead) s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionRead)
@ -63,7 +64,8 @@ func GetAccount(router *gin.RouterGroup) {
// GET /api/v1/accounts/:id/folders // GET /api/v1/accounts/:id/folders
// //
// Parameters: // Parameters:
// id: string Account ID as returned by the API //
// id: string Account ID as returned by the API
func GetAccountFolders(router *gin.RouterGroup) { func GetAccountFolders(router *gin.RouterGroup) {
router.GET("/accounts/:id/folders", func(c *gin.Context) { router.GET("/accounts/:id/folders", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionRead) s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionRead)
@ -121,7 +123,8 @@ func GetAccountFolders(router *gin.RouterGroup) {
// GET /api/v1/accounts/:id/share // GET /api/v1/accounts/:id/share
// //
// Parameters: // Parameters:
// id: string Account ID as returned by the API //
// id: string Account ID as returned by the API
func ShareWithAccount(router *gin.RouterGroup) { func ShareWithAccount(router *gin.RouterGroup) {
router.POST("/accounts/:id/share", func(c *gin.Context) { router.POST("/accounts/:id/share", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionUpload) s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionUpload)
@ -230,7 +233,8 @@ func CreateAccount(router *gin.RouterGroup) {
// PUT /api/v1/accounts/:id // PUT /api/v1/accounts/:id
// //
// Parameters: // Parameters:
// id: string Account ID as returned by the API //
// id: string Account ID as returned by the API
func UpdateAccount(router *gin.RouterGroup) { func UpdateAccount(router *gin.RouterGroup) {
router.PUT("/accounts/:id", func(c *gin.Context) { router.PUT("/accounts/:id", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionUpdate)
@ -301,7 +305,8 @@ func UpdateAccount(router *gin.RouterGroup) {
// DELETE /api/v1/accounts/:id // DELETE /api/v1/accounts/:id
// //
// Parameters: // Parameters:
// id: string Account ID as returned by the API //
// id: string Account ID as returned by the API
func DeleteAccount(router *gin.RouterGroup) { func DeleteAccount(router *gin.RouterGroup) {
router.DELETE("/accounts/:id", func(c *gin.Context) { router.DELETE("/accounts/:id", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionDelete) s := Auth(SessionID(c), acl.ResourceAccounts, acl.ActionDelete)

View file

@ -239,7 +239,8 @@ func DeleteAlbum(router *gin.RouterGroup) {
// POST /api/v1/albums/:uid/like // POST /api/v1/albums/:uid/like
// //
// Parameters: // Parameters:
// uid: string Album UID //
// uid: string Album UID
func LikeAlbum(router *gin.RouterGroup) { func LikeAlbum(router *gin.RouterGroup) {
router.POST("/albums/:uid/like", func(c *gin.Context) { router.POST("/albums/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAlbums, acl.ActionLike) s := Auth(SessionID(c), acl.ResourceAlbums, acl.ActionLike)
@ -277,7 +278,8 @@ func LikeAlbum(router *gin.RouterGroup) {
// DELETE /api/v1/albums/:uid/like // DELETE /api/v1/albums/:uid/like
// //
// Parameters: // Parameters:
// uid: string Album UID //
// uid: string Album UID
func DislikeAlbum(router *gin.RouterGroup) { func DislikeAlbum(router *gin.RouterGroup) {
router.DELETE("/albums/:uid/like", func(c *gin.Context) { router.DELETE("/albums/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceAlbums, acl.ActionLike) s := Auth(SessionID(c), acl.ResourceAlbums, acl.ActionLike)

View file

@ -1,28 +1,26 @@
/* /*
Package api provides REST API request handlers. Package api provides REST API request handlers.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package api package api

View file

@ -26,9 +26,10 @@ const (
// GET /api/v1/albums/:uid/t/:token/:size // GET /api/v1/albums/:uid/t/:token/:size
// //
// Parameters: // Parameters:
// uid: string album uid //
// token: string security token (see config) // uid: string album uid
// size: string thumb type, see photoprism.ThumbnailTypes // token: string security token (see config)
// size: string thumb type, see photoprism.ThumbnailTypes
func AlbumCover(router *gin.RouterGroup) { func AlbumCover(router *gin.RouterGroup) {
router.GET("/albums/:uid/t/:token/:size", func(c *gin.Context) { router.GET("/albums/:uid/t/:token/:size", func(c *gin.Context) {
if InvalidPreviewToken(c) { if InvalidPreviewToken(c) {
@ -138,9 +139,10 @@ func AlbumCover(router *gin.RouterGroup) {
// GET /api/v1/labels/:uid/t/:token/:size // GET /api/v1/labels/:uid/t/:token/:size
// //
// Parameters: // Parameters:
// uid: string label uid //
// token: string security token (see config) // uid: string label uid
// size: string thumb type, see photoprism.ThumbnailTypes // token: string security token (see config)
// size: string thumb type, see photoprism.ThumbnailTypes
func LabelCover(router *gin.RouterGroup) { func LabelCover(router *gin.RouterGroup) {
router.GET("/labels/:uid/t/:token/:size", func(c *gin.Context) { router.GET("/labels/:uid/t/:token/:size", func(c *gin.Context) {
if InvalidPreviewToken(c) { if InvalidPreviewToken(c) {

View file

@ -37,7 +37,8 @@ func DownloadName(c *gin.Context) entity.DownloadName {
// GET /api/v1/dl/:hash // GET /api/v1/dl/:hash
// //
// Parameters: // Parameters:
// hash: string The file hash as returned by the files/photos endpoint //
// hash: string The file hash as returned by the files/photos endpoint
func GetDownload(router *gin.RouterGroup) { func GetDownload(router *gin.RouterGroup) {
router.GET("/dl/:hash", func(c *gin.Context) { router.GET("/dl/:hash", func(c *gin.Context) {
if InvalidDownloadToken(c) { if InvalidDownloadToken(c) {

View file

@ -19,8 +19,9 @@ import (
// DELETE /api/v1/photos/:uid/files/:file_uid // DELETE /api/v1/photos/:uid/files/:file_uid
// //
// Parameters: // Parameters:
// uid: string Photo UID as returned by the API //
// file_uid: string File UID as returned by the API // uid: string Photo UID as returned by the API
// file_uid: string File UID as returned by the API
func DeleteFile(router *gin.RouterGroup) { func DeleteFile(router *gin.RouterGroup) {
router.DELETE("/photos/:uid/files/:file_uid", func(c *gin.Context) { router.DELETE("/photos/:uid/files/:file_uid", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceFiles, acl.ActionDelete) s := Auth(SessionID(c), acl.ResourceFiles, acl.ActionDelete)

View file

@ -24,9 +24,10 @@ const (
// GET /api/v1/folders/t/:hash/:token/:size // GET /api/v1/folders/t/:hash/:token/:size
// //
// Parameters: // Parameters:
// uid: string folder uid //
// token: string url security token, see config // uid: string folder uid
// size: string thumb type, see thumb.Sizes // token: string url security token, see config
// size: string thumb type, see thumb.Sizes
func FolderCover(router *gin.RouterGroup) { func FolderCover(router *gin.RouterGroup) {
router.GET("/folders/t/:uid/:token/:size", func(c *gin.Context) { router.GET("/folders/t/:uid/:token/:size", func(c *gin.Context) {
if InvalidPreviewToken(c) { if InvalidPreviewToken(c) {

View file

@ -59,7 +59,8 @@ func UpdateLabel(router *gin.RouterGroup) {
// POST /api/v1/labels/:uid/like // POST /api/v1/labels/:uid/like
// //
// Parameters: // Parameters:
// uid: string Label UID //
// uid: string Label UID
func LikeLabel(router *gin.RouterGroup) { func LikeLabel(router *gin.RouterGroup) {
router.POST("/labels/:uid/like", func(c *gin.Context) { router.POST("/labels/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceLabels, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourceLabels, acl.ActionUpdate)
@ -99,7 +100,8 @@ func LikeLabel(router *gin.RouterGroup) {
// DELETE /api/v1/labels/:uid/like // DELETE /api/v1/labels/:uid/like
// //
// Parameters: // Parameters:
// uid: string Label UID //
// uid: string Label UID
func DislikeLabel(router *gin.RouterGroup) { func DislikeLabel(router *gin.RouterGroup) {
router.DELETE("/labels/:uid/like", func(c *gin.Context) { router.DELETE("/labels/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceLabels, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourceLabels, acl.ActionUpdate)

View file

@ -223,7 +223,7 @@ func TestUpdatePhotoLink(t *testing.T) {
}) })
} }
//TODO Fully assert once functionality exists // TODO Fully assert once functionality exists
func TestDeletePhotoLink(t *testing.T) { func TestDeletePhotoLink(t *testing.T) {
app, router, _ := NewApiTest() app, router, _ := NewApiTest()

View file

@ -73,9 +73,10 @@ func findFileMarker(c *gin.Context) (file *entity.File, marker *entity.Marker, e
// PUT /api/v1/markers/:marker_uid // PUT /api/v1/markers/:marker_uid
// //
// Parameters: // Parameters:
// uid: string Photo UID as returned by the API //
// file_uid: string File UID as returned by the API // uid: string Photo UID as returned by the API
// id: int Marker ID as returned by the API // file_uid: string File UID as returned by the API
// id: int Marker ID as returned by the API
func UpdateMarker(router *gin.RouterGroup) { func UpdateMarker(router *gin.RouterGroup) {
router.PUT("/markers/:marker_uid", func(c *gin.Context) { router.PUT("/markers/:marker_uid", func(c *gin.Context) {
// Abort if workers runs less than once per hour. // Abort if workers runs less than once per hour.
@ -157,9 +158,10 @@ func UpdateMarker(router *gin.RouterGroup) {
// DELETE /api/v1/markers/:marker_uid/subject // DELETE /api/v1/markers/:marker_uid/subject
// //
// Parameters: // Parameters:
// uid: string Photo UID as returned by the API //
// file_uid: string File UID as returned by the API // uid: string Photo UID as returned by the API
// id: int Marker ID as returned by the API // file_uid: string File UID as returned by the API
// id: int Marker ID as returned by the API
func ClearMarkerSubject(router *gin.RouterGroup) { func ClearMarkerSubject(router *gin.RouterGroup) {
router.DELETE("/markers/:marker_uid/subject", func(c *gin.Context) { router.DELETE("/markers/:marker_uid/subject", func(c *gin.Context) {
// Abort if workers runs less than once per hour. // Abort if workers runs less than once per hour.

View file

@ -162,7 +162,8 @@ func GetPhotoDownload(router *gin.RouterGroup) {
// GET /api/v1/photos/:uid/yaml // GET /api/v1/photos/:uid/yaml
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// uid: string PhotoUID as returned by the API
func GetPhotoYaml(router *gin.RouterGroup) { func GetPhotoYaml(router *gin.RouterGroup) {
router.GET("/photos/:uid/yaml", func(c *gin.Context) { router.GET("/photos/:uid/yaml", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionExport) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionExport)
@ -197,7 +198,8 @@ func GetPhotoYaml(router *gin.RouterGroup) {
// POST /api/v1/photos/:uid/approve // POST /api/v1/photos/:uid/approve
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// uid: string PhotoUID as returned by the API
func ApprovePhoto(router *gin.RouterGroup) { func ApprovePhoto(router *gin.RouterGroup) {
router.POST("/photos/:uid/approve", func(c *gin.Context) { router.POST("/photos/:uid/approve", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate)
@ -232,7 +234,8 @@ func ApprovePhoto(router *gin.RouterGroup) {
// POST /api/v1/photos/:uid/like // POST /api/v1/photos/:uid/like
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// uid: string PhotoUID as returned by the API
func LikePhoto(router *gin.RouterGroup) { func LikePhoto(router *gin.RouterGroup) {
router.POST("/photos/:uid/like", func(c *gin.Context) { router.POST("/photos/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionLike) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionLike)
@ -267,7 +270,8 @@ func LikePhoto(router *gin.RouterGroup) {
// DELETE /api/v1/photos/:uid/like // DELETE /api/v1/photos/:uid/like
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// uid: string PhotoUID as returned by the API
func DislikePhoto(router *gin.RouterGroup) { func DislikePhoto(router *gin.RouterGroup) {
router.DELETE("/photos/:uid/like", func(c *gin.Context) { router.DELETE("/photos/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionLike) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionLike)
@ -302,8 +306,9 @@ func DislikePhoto(router *gin.RouterGroup) {
// POST /api/v1/photos/:uid/files/:file_uid/primary // POST /api/v1/photos/:uid/files/:file_uid/primary
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// file_uid: string File UID as returned by the API // uid: string PhotoUID as returned by the API
// file_uid: string File UID as returned by the API
func PhotoPrimary(router *gin.RouterGroup) { func PhotoPrimary(router *gin.RouterGroup) {
router.POST("/photos/:uid/files/:file_uid/primary", func(c *gin.Context) { router.POST("/photos/:uid/files/:file_uid/primary", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate)

View file

@ -19,7 +19,8 @@ import (
// POST /api/v1/photos/:uid/label // POST /api/v1/photos/:uid/label
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// uid: string PhotoUID as returned by the API
func AddPhotoLabel(router *gin.RouterGroup) { func AddPhotoLabel(router *gin.RouterGroup) {
router.POST("/photos/:uid/label", func(c *gin.Context) { router.POST("/photos/:uid/label", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate)
@ -93,8 +94,9 @@ func AddPhotoLabel(router *gin.RouterGroup) {
// DELETE /api/v1/photos/:uid/label/:id // DELETE /api/v1/photos/:uid/label/:id
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// id: int LabelId as returned by the API // uid: string PhotoUID as returned by the API
// id: int LabelId as returned by the API
func RemovePhotoLabel(router *gin.RouterGroup) { func RemovePhotoLabel(router *gin.RouterGroup) {
router.DELETE("/photos/:uid/label/:id", func(c *gin.Context) { router.DELETE("/photos/:uid/label/:id", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate)
@ -157,8 +159,9 @@ func RemovePhotoLabel(router *gin.RouterGroup) {
// PUT /api/v1/photos/:uid/label/:id // PUT /api/v1/photos/:uid/label/:id
// //
// Parameters: // Parameters:
// uid: string PhotoUID as returned by the API //
// id: int LabelId as returned by the API // uid: string PhotoUID as returned by the API
// id: int LabelId as returned by the API
func UpdatePhotoLabel(router *gin.RouterGroup) { func UpdatePhotoLabel(router *gin.RouterGroup) {
router.PUT("/photos/:uid/label/:id", func(c *gin.Context) { router.PUT("/photos/:uid/label/:id", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate)

View file

@ -22,8 +22,9 @@ import (
// POST /api/v1/photos/:uid/files/:file_uid/unstack // POST /api/v1/photos/:uid/files/:file_uid/unstack
// //
// Parameters: // Parameters:
// uid: string Photo UID as returned by the API //
// file_uid: string File UID as returned by the API // uid: string Photo UID as returned by the API
// file_uid: string File UID as returned by the API
func PhotoUnstack(router *gin.RouterGroup) { func PhotoUnstack(router *gin.RouterGroup) {
router.POST("/photos/:uid/files/:file_uid/unstack", func(c *gin.Context) { router.POST("/photos/:uid/files/:file_uid/unstack", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourcePhotos, acl.ActionUpdate)

View file

@ -99,7 +99,8 @@ func UpdateSubject(router *gin.RouterGroup) {
// POST /api/v1/subjects/:uid/like // POST /api/v1/subjects/:uid/like
// //
// Parameters: // Parameters:
// uid: string Subject UID //
// uid: string Subject UID
func LikeSubject(router *gin.RouterGroup) { func LikeSubject(router *gin.RouterGroup) {
router.POST("/subjects/:uid/like", func(c *gin.Context) { router.POST("/subjects/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceSubjects, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourceSubjects, acl.ActionUpdate)
@ -133,7 +134,8 @@ func LikeSubject(router *gin.RouterGroup) {
// DELETE /api/v1/subjects/:uid/like // DELETE /api/v1/subjects/:uid/like
// //
// Parameters: // Parameters:
// uid: string Subject UID //
// uid: string Subject UID
func DislikeSubject(router *gin.RouterGroup) { func DislikeSubject(router *gin.RouterGroup) {
router.DELETE("/subjects/:uid/like", func(c *gin.Context) { router.DELETE("/subjects/:uid/like", func(c *gin.Context) {
s := Auth(SessionID(c), acl.ResourceSubjects, acl.ActionUpdate) s := Auth(SessionID(c), acl.ResourceSubjects, acl.ActionUpdate)

View file

@ -21,9 +21,10 @@ import (
// GET /api/v1/t/:thumb/:token/:size // GET /api/v1/t/:thumb/:token/:size
// //
// Parameters: // Parameters:
// thumb: string sha1 file hash plus optional crop area //
// token: string url security token, see config // thumb: string sha1 file hash plus optional crop area
// size: string thumb type, see thumb.Sizes // token: string url security token, see config
// size: string thumb type, see thumb.Sizes
func GetThumb(router *gin.RouterGroup) { func GetThumb(router *gin.RouterGroup) {
router.GET("/t/:thumb/:token/:size", func(c *gin.Context) { router.GET("/t/:thumb/:token/:size", func(c *gin.Context) {
if InvalidPreviewToken(c) { if InvalidPreviewToken(c) {

View file

@ -20,8 +20,9 @@ import (
// GET /api/v1/videos/:hash/:token/:type // GET /api/v1/videos/:hash/:token/:type
// //
// Parameters: // Parameters:
// hash: string The photo or video file hash as returned by the search API //
// type: string Video format // hash: string The photo or video file hash as returned by the search API
// type: string Video format
func GetVideo(router *gin.RouterGroup) { func GetVideo(router *gin.RouterGroup) {
router.GET("/videos/:hash/:token/:format", func(c *gin.Context) { router.GET("/videos/:hash/:token/:format", func(c *gin.Context) {
if InvalidPreviewToken(c) { if InvalidPreviewToken(c) {

View file

@ -1,28 +1,26 @@
/* /*
Package auto provides workers for background indexing and import operations. Package auto provides workers for background indexing and import operations.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package auto package auto

View file

@ -1,28 +1,26 @@
/* /*
Package classify encapsulates image classification using TensorFlow. Package classify encapsulates image classification using TensorFlow.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package classify package classify

View file

@ -1,28 +1,26 @@
/* /*
Package commands provides photoprism CLI (sub-)commands. Package commands provides photoprism CLI (sub-)commands.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package commands package commands

View file

@ -1,27 +1,25 @@
/* /*
Package config provides global options, command-line flags, and user settings. Package config provides global options, command-line flags, and user settings.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package config package config

View file

@ -136,8 +136,8 @@ type Options struct {
// //
// 1. Load: This will initialize options from a yaml config file. // 1. Load: This will initialize options from a yaml config file.
// //
// 2. SetContext: Which comes after Load and overrides // 2. SetContext: Which comes after Load and overrides
// any previous options giving an option two override file configs through the CLI. // any previous options giving an option two override file configs through the CLI.
func NewOptions(ctx *cli.Context) *Options { func NewOptions(ctx *cli.Context) *Options {
c := &Options{} c := &Options{}

View file

@ -1,28 +1,26 @@
/* /*
Package crop provides image crop data structures and helpers. Package crop provides image crop data structures and helpers.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package crop package crop

View file

@ -229,7 +229,7 @@ func TestAccount_Update(t *testing.T) {
}) })
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestAccount_Save(t *testing.T) { func TestAccount_Save(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
account := Account{AccName: "DeleteAccount", AccOwner: "Delete", AccURL: "test.com", AccType: "test", AccKey: "123", AccUser: "testuser", AccPass: "testpass", account := Account{AccName: "DeleteAccount", AccOwner: "Delete", AccURL: "test.com", AccType: "test", AccKey: "123", AccUser: "testuser", AccPass: "testpass",

View file

@ -143,7 +143,7 @@ func TestNewDetails(t *testing.T) {
}) })
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestDetails_Create(t *testing.T) { func TestDetails_Create(t *testing.T) {
t.Run("error", func(t *testing.T) { t.Run("error", func(t *testing.T) {
details := Details{PhotoID: 0} details := Details{PhotoID: 0}
@ -161,7 +161,7 @@ func TestDetails_Create(t *testing.T) {
}) })
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestDetails_Save(t *testing.T) { func TestDetails_Save(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
details := Details{PhotoID: 123678955432, UpdatedAt: time.Date(2020, 2, 1, 0, 0, 0, 0, time.UTC)} details := Details{PhotoID: 123678955432, UpdatedAt: time.Date(2020, 2, 1, 0, 0, 0, 0, time.UTC)}

View file

@ -245,7 +245,7 @@ func TestMarker_InvalidArea(t *testing.T) {
}) })
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestMarker_Save(t *testing.T) { func TestMarker_Save(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
m := NewMarker(FileFixtures.Get("exampleFileName.jpg"), testArea, "lt9k3pw1wowuy3c4", SrcImage, MarkerLabel, 100, 65) m := NewMarker(FileFixtures.Get("exampleFileName.jpg"), testArea, "lt9k3pw1wowuy3c4", SrcImage, MarkerLabel, 100, 65)

View file

@ -43,7 +43,7 @@ func TestPassword_InvalidPasswordPassword(t *testing.T) {
}) })
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestPassword_Create(t *testing.T) { func TestPassword_Create(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
p := Password{} p := Password{}

View file

@ -57,7 +57,7 @@ func TestFirstOrCreatePhotoAlbum(t *testing.T) {
}) })
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestPhotoAlbum_Save(t *testing.T) { func TestPhotoAlbum_Save(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
p := PhotoAlbum{} p := PhotoAlbum{}

View file

@ -214,7 +214,7 @@ func TestSubject_Update(t *testing.T) {
} }
//TODO fails on mariadb // TODO fails on mariadb
func TestSubject_Updates(t *testing.T) { func TestSubject_Updates(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
m := NewSubject("Update Me", SubjPerson, SrcAuto) m := NewSubject("Update Me", SubjPerson, SrcAuto)

View file

@ -1,27 +1,25 @@
/* /*
Package event provides a publish-subscribe event hub and a global logger. Package event provides a publish-subscribe event hub and a global logger.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package event package event

View file

@ -1,28 +1,26 @@
/* /*
Package face provides face recognition. Package face provides face recognition.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package face package face

View file

@ -1,28 +1,26 @@
/* /*
Package ffmpeg provides FFmpeg video transcoding related types and functions. Package ffmpeg provides FFmpeg video transcoding related types and functions.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package ffmpeg package ffmpeg

View file

@ -1,28 +1,26 @@
/* /*
Package form contains tagged structs for input value validation. Package form contains tagged structs for input value validation.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package form package form

View file

@ -1,28 +1,26 @@
/* /*
Package hub provides privacy-preserving reverse geocoding and other backend services. Package hub provides privacy-preserving reverse geocoding and other backend services.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package hub package hub

View file

@ -1,28 +1,26 @@
/* /*
Package places provides global location information to enrich metadata with location details. Package places provides global location information to enrich metadata with location details.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package places package places

View file

@ -1,28 +1,26 @@
/* /*
Package i18n provides translatable notification and error messages. Package i18n provides translatable notification and error messages.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package i18n package i18n

View file

@ -1,28 +1,26 @@
/* /*
Package maps provides a location lookup abstraction including a normalized list of countries. Package maps provides a location lookup abstraction including a normalized list of countries.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package maps package maps

View file

@ -1,28 +1,26 @@
/* /*
Package meta provides XMP and Exif metadata parsing and normalization. Package meta provides XMP and Exif metadata parsing and normalization.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package meta package meta

View file

@ -1,28 +1,26 @@
/* /*
Package migrate provides database schema migrations. Package migrate provides database schema migrations.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package migrate package migrate

View file

@ -1,28 +1,26 @@
/* /*
Package mutex provides concurrency control for index workers and database operations. Package mutex provides concurrency control for index workers and database operations.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package mutex package mutex

View file

@ -1,28 +1,26 @@
/* /*
Package nsfw provides detection of images that are "not safe for work" based on various categories. Package nsfw provides detection of images that are "not safe for work" based on various categories.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package nsfw package nsfw

View file

@ -1,28 +1,26 @@
/* /*
Package photoprism provides the core functionality of PhotoPrism®. Package photoprism provides the core functionality of PhotoPrism®.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package photoprism package photoprism

View file

@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
//TODO find duplicates // TODO find duplicates
func TestDuplicates(t *testing.T) { func TestDuplicates(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
if files, err := Duplicates(10, 0, ""); err != nil { if files, err := Duplicates(10, 0, ""); err != nil {

View file

@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
//TODO test non empty case // TODO test non empty case
func TestErrors(t *testing.T) { func TestErrors(t *testing.T) {
t.Run("not existing", func(t *testing.T) { t.Run("not existing", func(t *testing.T) {
errors, err := Errors(1000, 0, "notexistingErrorString") errors, err := Errors(1000, 0, "notexistingErrorString")

View file

@ -88,7 +88,7 @@ func TestOrphanPhotos(t *testing.T) {
assert.IsType(t, entity.Photos{}, result) assert.IsType(t, entity.Photos{}, result)
} }
//TODO How to verify? // TODO How to verify?
func TestFixPrimaries(t *testing.T) { func TestFixPrimaries(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
err := FixPrimaries() err := FixPrimaries()

View file

@ -1,28 +1,26 @@
/* /*
Package query provides frequently used database queries for use in commands and API. Package query provides frequently used database queries for use in commands and API.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package query package query

View file

@ -1,28 +1,26 @@
/* /*
Package remote provides detection of remote services for file sharing and synchronization. Package remote provides detection of remote services for file sharing and synchronization.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package remote package remote

View file

@ -1,28 +1,26 @@
/* /*
Package webdav provides WebDAV file sharing and synchronization. Package webdav provides WebDAV file sharing and synchronization.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package webdav package webdav

View file

@ -1,28 +1,26 @@
/* /*
Package search provides search queries to find photos, albums, labels, and subjects. Package search provides search queries to find photos, albums, labels, and subjects.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package search package search

View file

@ -1,27 +1,25 @@
/* /*
Package server provides REST and web server routing, request handling and logging. Package server provides REST and web server routing, request handling and logging.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package server package server

View file

@ -1,28 +1,26 @@
/* /*
Package service provides a registry for common services. Package service provides a registry for common services.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package service package service

View file

@ -1,28 +1,26 @@
/* /*
Package session provides session storage and management. Package session provides session storage and management.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package session package session

View file

@ -1,28 +1,26 @@
/* /*
Package thumb provides JPEG resampling and thumbnail generation. Package thumb provides JPEG resampling and thumbnail generation.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package thumb package thumb

View file

@ -1,27 +1,25 @@
/* /*
Package viewer provides photo viewer data structures and utility functions. Package viewer provides photo viewer data structures and utility functions.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package viewer package viewer

View file

@ -1,28 +1,26 @@
/* /*
Package workers provides index, sync, and metadata optimization background workers. Package workers provides index, sync, and metadata optimization background workers.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package workers package workers

View file

@ -1,27 +1,25 @@
/* /*
Package capture provides profiling functions for testing and debugging. Package capture provides profiling functions for testing and debugging.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package capture package capture

View file

@ -1,28 +1,26 @@
/* /*
Package clean provides validation, sanitation, and normalization of input values. Package clean provides validation, sanitation, and normalization of input values.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package clean package clean

View file

@ -1,28 +1,26 @@
/* /*
Package colors provides types and functions for color classification. Package colors provides types and functions for color classification.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package colors package colors

22
pkg/env/env.go vendored
View file

@ -1,27 +1,25 @@
/* /*
Package env provides runtime environment information. Package env provides runtime environment information.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package env package env

View file

@ -40,12 +40,12 @@ var ErrSkipFiles = errors.New("fastwalk: skip remaining files in directory")
// If fastWalk returns filepath.SkipDir, the directory is skipped. // If fastWalk returns filepath.SkipDir, the directory is skipped.
// //
// Unlike filepath.Walk: // Unlike filepath.Walk:
// * file stat calls must be done by the user. // - file stat calls must be done by the user.
// The only provided metadata is the file type, which does not include // The only provided metadata is the file type, which does not include
// any permission bits. // any permission bits.
// * multiple goroutines stat the filesystem concurrently. The provided // - multiple goroutines stat the filesystem concurrently. The provided
// walkFn must be safe for concurrent use. // walkFn must be safe for concurrent use.
// * fastWalk can follow symlinks if walkFn returns the TraverseLink // - fastWalk can follow symlinks if walkFn returns the TraverseLink
// sentinel error. It is the walkFn's responsibility to prevent // sentinel error. It is the walkFn's responsibility to prevent
// fastWalk from going into symlink cycles. // fastWalk from going into symlink cycles.
func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { func Walk(root string, walkFn func(path string, typ os.FileMode) error) error {

View file

@ -1,28 +1,26 @@
/* /*
Package fs provides filesystem related constants and functions. Package fs provides filesystem related constants and functions.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package fs package fs

View file

@ -1,28 +1,26 @@
/* /*
Package geo provides earth geometry functions and constants. Package geo provides earth geometry functions and constants.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package geo package geo

View file

@ -1,28 +1,26 @@
/* /*
Package list provides a string slice abstraction. Package list provides a string slice abstraction.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package list package list

View file

@ -1,27 +1,25 @@
/* /*
Package media provides general content types and maps them to file formats. Package media provides general content types and maps them to file formats.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package media package media

View file

@ -1,28 +1,26 @@
/* /*
Package pluscode provides an abstraction for Google's Open Location Code package. Package pluscode provides an abstraction for Google's Open Location Code package.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package pluscode package pluscode

View file

@ -1,27 +1,25 @@
/* /*
Package projection provides visual projection types and methods. Package projection provides visual projection types and methods.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package projection package projection

View file

@ -1,27 +1,25 @@
/* /*
Package report provides rendering of report results, for example as Markdown. Package report provides rendering of report results, for example as Markdown.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package report package report

View file

@ -1,27 +1,25 @@
/* /*
Package rnd provides random token generation and validation. Package rnd provides random token generation and validation.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package rnd package rnd

View file

@ -1,30 +1,28 @@
/* /*
Package s2 encapsulates Google's S2 library. Package s2 encapsulates Google's S2 library.
See https://s2geometry.io/ See https://s2geometry.io/
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package s2 package s2

View file

@ -1,28 +1,26 @@
/* /*
Package txt provides text and linguistics related functionality. Package txt provides text and linguistics related functionality.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package txt package txt

View file

@ -1,27 +1,25 @@
/* /*
Package video provides video file related types and functions. Package video provides video file related types and functions.
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved. Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"): it under Version 3 of the GNU Affero General Public License (the "AGPL"):
<https://docs.photoprism.app/license/agpl> <https://docs.photoprism.app/license/agpl>
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
The AGPL is supplemented by our Trademark and Brand Guidelines, The AGPL is supplemented by our Trademark and Brand Guidelines,
which describe how our Brand Assets may be used: which describe how our Brand Assets may be used:
<https://photoprism.app/trademark> <https://photoprism.app/trademark>
Feel free to send an email to hello@photoprism.app if you have questions, Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello. want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide: Additional information can be found in our Developer Guide:
<https://docs.photoprism.app/developer-guide/> <https://docs.photoprism.app/developer-guide/>
*/ */
package video package video