* create needed field in sqlite database
* update account model
* update Account struct for save Account options
* update sqlite database return account settings
* save configure in sqlite as text and return that
* read configure from user account and defualt configure for shiori
* add api/ui for update settings in database user can save settings in database (in sqlite database)
* check configures be in json format before save in database
* support MariaDB
* fix wrong comment
* support PostgreSQL
* revert unneeded change in new logic
* change configures to config
* change SaveAccount to SaveAccountSettings
* add migrate database scripts
* change default in migration scrtipts
* update model
* read config field as json from database
* fix parse value config value & update config update
* update default value for new user
* update settings variable name to reflect database value in UI
* fix typo
* not panic if user not exist and update worng comment
* visitor user can update there settings now
* remove unneeded loading dialog
* fix typo
* update function for pg and mysql
* remove IsJson
* move scan method to model
* simplify jsonify
* simplify assignees value to account.Config
* missing part of function
* fix some typo and unneeded field in struct
* add down migrate script for all database
* change createEbook to CreateEbook
* use json instead of text in mysql and postgres
* implement
* remove unneeded part
* remove unneeded jsonify in code
* return SelectContext and GetContext
* remove defualt config in reques for new user it will be set in backend
* New API
* remove legacy API
* remove validateSessionWithoutOwnerStatus
* remove Jsonify function don't need that anymore
* add unit test for database
* update migrate script name
* change put to patch
* return PUT
* fix Patch problem and now use PATCH instead of PUT
* remove unneeded retuen
* more cleaner code for request new settings
* fix bug to handle string in Scan method thanks to fmartingr
* fix Authorization & use GetAccount & remove username from request
* shiori-settings remove and it read from shiori-account
* add swagger documentation
* API unit test
* fix typo
* remove unneeded coment
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* better Documentation
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* shiori-toke remove on logout
* fix typo
* add unit test check update config in database
* update swag documentation
* fix swag formaing error
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* resize dialogbox with drag corner of box
* update style.css
* resizable just for more than full HD display
* fix size for initial size for small and big size
* full screen dialog box on mobile device - wider dialogbox on device
* remvoe custom-dialog.css that combine with style.css
* disable resize for moile device
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* use new generated style.css
* not limit minimum size to 400px
* set default value in .custom-dialog
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* go 1.21
* update dependencies
* Updated direct dependencies
* -count=1 to test flags
* group dependabot updates into one PR
* get swag version from go.mod
* show changes in swagger check
* go mod tidy
* updated swag generated files
* use go version from go.mod
* remove stray \
* proper grep
* generate ebook get dstPath
* Archive and ebook can recover if download faild
* recover thumb if download faild
* thumb image create just if image processing is sucssesful
* create epub in tmp if it sucssesful copy to destination
* archive file create in tmp if it successful move to destination
* move to destination as function
* update ebook download api and remove .epub from file name
* report faild item to user
* not show dialog if error not happen
* update thumbnail based on last status of bookmark fix#524
* better warning massage
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* tmpFile without .epub
* MoveToDestination change to MoveFileToDestination
* return .epub
* log if downloadBookImage return error
* fix bug remove imgPath just if download last image be unsuccessful
* update old unit test
* add processing.go unit test
* small massage for report failded item to the user
* add some more unit test and samplefile
* use sample image in unit test
* use local sample file and unit test not need internet connection anymore
* update error to user and log that too
* add more comment
* update comment
* change variable name parentDir to dstDir
* more simpler error handling
* remove unneeded defer
* remvoe unneeded epubWriter.Close()
* more readable unit test in processing
* more readable unit test for ebooks
* delete all defer os.RemoveAll from unit tests
* Better comment
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* Better Error output
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* fix err.String() method
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* refactor: swagger docs into a folder
* added scripts for the swaggger tasks
* check version and fmt
* CI
* formatted swag comments
* using custom delims
* revert custom delims
* swag 1.16.1
* update swagger docs
* avoid make swagger output
* swagger check
* test
* swag-fmt
* swagger run
* gofmt
* avoid swag-fmt check for now due to inconsistencies with gofmt
* re-enabled by using go fmt afterwards
* use newer swag in CI
* add gopath to path
* using go binary instead of unset env
* alternative
* correct swag version
* formatted
* formatted
* correct go fmt command
* make swagger
* swagger-check -> swag-check
* run swag-check on lint
* config: backwards comptabile dir
* remove duplicated frontend
* frontend: move assets to assets folder
* legacy routes handler in gin
* templates and asset in different embed
* new routes
* frontend routes serve old views
* added DTO for account object
* api auth calls legacy handler
* frontend: handle new error messages
* frontend: update urls
* frontend: login using new api
* updated frontend tests
* chore: remove debug route
* create shiori/gopher user if no owner is present
* server as default command
* serve -> server
* refactored database logic, allow database url
* removed unused configuration
* storage docs
* refactor cli to use cfg and deps
* check errors only in server
* log fatal instead of os exit
* dont default data directory to current dir
* fixed sqlite path
* trigger build on prs
* avoid releasing if lint/test fails
* pull request condition
* event -> event_name
* Get correct pull request number
* added workflow to delete dangling tags
* fix: nil error checking
* set gin mode first
* set gin mode before initialization
* fix logger
* allow version bump from custom ref
* Updated matrix link to workspace
* feat: add SHIORI_PG_SSLMODE
Some managed hosting providers don't support sslmode=disabled.
* handle empty value
---------
Co-authored-by: Felipe M <me@fmartingr.com>
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* generate ebook
* serve ebook file
* Update ebook.go not download same image twice anymore
* download ebook request api/ui part
* fix typo
* add stylesheet
* update hasEbook status
* download link update after ebook generate
update bookmark command in ui
* download ebook with bookmark title
* Apply suggestions from code review for better error handling
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* Update internal/view/js/page/home.js fix typo
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* import error lib and retuen missing error
* move ebook download action to update cache
* replace io/ioutil with io
* add missing error handling
* update Archive now always update ebook
* replace panic error with 404
* remove ebook with delete action
* add download ebook link to content page
* remove tags that not work correctly right now
* if file is pdf not generate ebook
* update style.css
* Revert "update style.css"
This reverts commit 519e10d6ce.
* remove download limit for api
* fix missing fmt.Errorf and change to errors.Wrap
* fix double panic
* return 404 if bookmark not exist
* change function name to GenerateEbook
* not isFatalErr anymore
* add unit test
* remove uneeded field for unit test
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* thumb image will be not accesable anymore if it is private fix#578
* Update internal/webserver/handler-ui.go better error handling
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* fix(real_ip): get user real ip from headers of request
* fix(real_ip): compatible with those header with multiple IP values separated by commas
* test(real_ip): add benchmark for IPv4 and IPv6 private address check
* fix(real_ip): check empty, then remove leading and tailing comma char, finally locate first IP field
* test(real_ip): move checker logic into utils and add more unit test cases
* test(real_ip): write unit tests covering all code branches of the `util-ip` module
* refactor(real_ip): use one-line `testify.assert.Panics` to capture intended panic in test case
* chore(real_ip): add module private variable `UserRealIpHeaderCandidates`
put those headers together, make it easy to manage in one place
* doc(real_ip): write docstring for each function in the `utils-ip` module
* chore(real_ip): choose more concrete and unambiguous name for test helper function
It is to avoid polluting the module name-space with too general names.
* chore(naming): change function names according to code style
* refactor(real_ip): simplify the code indicated by 'gosimple' and `golangci`
* chore(naming): rename the `utils-ip` file to `utils_ip` to match with the rest of the file structure
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>