Compare commits
14 Commits
13a58dabbb
...
main
Author | SHA1 | Date | |
---|---|---|---|
b655ac0ab2
|
|||
b01a92fd04
|
|||
4d87654f5a
|
|||
9cfd2378a8
|
|||
0f4245b4d0
|
|||
f1697323fc
|
|||
aa87e8c65f
|
|||
78f09ffcd9
|
|||
e9683b11d0
|
|||
54da8c1244
|
|||
95eea7d886
|
|||
8a90743416
|
|||
bd5360c79b
|
|||
b4dd48ec85
|
30
.drone.yml
30
.drone.yml
@ -1,30 +0,0 @@
|
||||
kind: pipeline
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: test
|
||||
image: golang
|
||||
environment:
|
||||
CGO_ENABLED: 0
|
||||
ARN_ROOT: /drone/src
|
||||
commands:
|
||||
- apt-get update
|
||||
- apt-get -y install nodejs npm make
|
||||
- npm install -g typescript
|
||||
- go version
|
||||
- go mod download
|
||||
- make tools
|
||||
- make assets
|
||||
- make server
|
||||
- curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.43.0
|
||||
- golangci-lint run
|
||||
- make db
|
||||
- go test -v -coverprofile=coverage.txt .
|
||||
|
||||
- name: coverage
|
||||
image: plugins/codecov
|
||||
settings:
|
||||
token:
|
||||
from_secret: codecov-token
|
||||
files:
|
||||
- coverage.txt
|
@ -1,15 +0,0 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.pixy]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@ -1,2 +0,0 @@
|
||||
github: akyoto
|
||||
patreon: eduardurbach
|
21
.github/pull_request_template.md
vendored
21
.github/pull_request_template.md
vendored
@ -1,21 +0,0 @@
|
||||
## 📢 Type of change
|
||||
|
||||
* [ ] Bugfix
|
||||
* [ ] New feature
|
||||
* [ ] Enhancement
|
||||
* [ ] Refactoring
|
||||
|
||||
## 📜 Description
|
||||
|
||||
## 💡 Motivation and Context
|
||||
|
||||
## 💚 How did you test it?
|
||||
|
||||
## 📝 Checklist
|
||||
|
||||
* [ ] I compiled before submitting the PR
|
||||
* [ ] I reviewed the submitted code
|
||||
|
||||
## 🔮 Next steps
|
||||
|
||||
## 📸 Screenshots / GIFs
|
30
.gitignore
vendored
30
.gitignore
vendored
@ -1,24 +1,16 @@
|
||||
# General ignore patterns
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
*.test
|
||||
*.out
|
||||
*.prof
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
# JS files are generated from TS files
|
||||
*.js
|
||||
*
|
||||
!*/
|
||||
!*.go
|
||||
!*.mod
|
||||
!*.sum
|
||||
!*.md
|
||||
!*.pixy
|
||||
!*.scarlet
|
||||
!*.ts
|
||||
!.gitignore
|
||||
|
||||
# Components are generated by the "pack" tool
|
||||
/components
|
||||
|
||||
# Personal startup settings for each contributor
|
||||
/custom.go
|
||||
|
||||
# Server binary
|
||||
/notify.moe
|
||||
/custom.go
|
21
LICENSE
21
LICENSE
@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Eduard Urbach
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
46
README.md
46
README.md
@ -1,10 +1,6 @@
|
||||
# notify.moe
|
||||
|
||||
[![Godoc][godoc-image]][godoc-url]
|
||||
[![Report][report-image]][report-url]
|
||||
[![Tests][tests-image]][tests-url]
|
||||
[![Coverage][coverage-image]][coverage-url]
|
||||
[![Sponsor][sponsor-image]][sponsor-url]
|
||||
Anime tracker, database and community.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@ -15,7 +11,7 @@
|
||||
## Installation
|
||||
|
||||
```shell
|
||||
git clone https://github.com/animenotifier/notify.moe.git
|
||||
git clone https://git.urbach.dev/web/notify.moe.git
|
||||
cd notify.moe
|
||||
go mod download
|
||||
make tools
|
||||
@ -36,41 +32,13 @@ make db
|
||||
* Import the file `security/default/root.crt` as a trusted Root authority
|
||||
* Open `https://beta.notify.moe`
|
||||
|
||||
## What now?
|
||||
## License
|
||||
|
||||
* Try the [example task for newcomers](docs/new-contributor-task.md).
|
||||
* Make some changes and upload them to a new branch on your fork.
|
||||
* Create a pull request on this repository.
|
||||
Please see the [license documentation](https://urbach.dev/license).
|
||||
|
||||
## Find us
|
||||
## Copyright
|
||||
|
||||
* [Discord](https://discord.gg/0kimAmMCeXGXuzNF)
|
||||
* [Facebook](https://www.facebook.com/animenotifier)
|
||||
* [Twitter](https://twitter.com/animenotifier)
|
||||
* [GitHub](https://github.com/animenotifier/notify.moe)
|
||||
|
||||
## Contributing
|
||||
|
||||
Please read [CONTRIBUTING.md](docs/contributing.md) for details on how to contribute to this project.
|
||||
|
||||
## Statistics
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Style
|
||||
|
||||
Please take a look at the [style guidelines](https://github.com/akyoto/quality/blob/master/STYLE.md) if you'd like to make a pull request.
|
||||
|
||||
## Sponsors
|
||||
|
||||
| [](https://github.com/cedricfung) | [](https://github.com/soulcramer) | [](https://eduardurbach.com) |
|
||||
| --- | --- | --- |
|
||||
| [Cedric Fung](https://github.com/cedricfung) | [Scott Rayapoullé](https://github.com/soulcramer) | [Eduard Urbach](https://eduardurbach.com) |
|
||||
|
||||
Want to see [your own name here?](https://github.com/users/akyoto/sponsorship)
|
||||
© 2016 Eduard Urbach
|
||||
|
||||
[godoc-image]: https://godoc.org/github.com/animenotifier/notify.moe?status.svg
|
||||
[godoc-url]: https://godoc.org/github.com/animenotifier/notify.moe
|
||||
@ -81,4 +49,4 @@ Want to see [your own name here?](https://github.com/users/akyoto/sponsorship)
|
||||
[coverage-image]: https://codecov.io/gh/animenotifier/notify.moe/graph/badge.svg
|
||||
[coverage-url]: https://codecov.io/gh/animenotifier/notify.moe
|
||||
[sponsor-image]: https://img.shields.io/badge/github-donate-green.svg
|
||||
[sponsor-url]: https://github.com/users/akyoto/sponsorship
|
||||
[sponsor-url]: https://ko-fi.com/akyoto
|
||||
|
@ -1,59 +0,0 @@
|
||||
# {name}
|
||||
|
||||
{go:header}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
* Install [Linux](https://en.wikipedia.org/wiki/Linux), [MacOS](https://en.wikipedia.org/wiki/MacOS) or [WSL](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux)
|
||||
* Install [Go](https://golang.org/)
|
||||
* Install [TypeScript](https://www.typescriptlang.org/)
|
||||
|
||||
## Installation
|
||||
|
||||
```shell
|
||||
git clone https://github.com/animenotifier/notify.moe.git
|
||||
cd notify.moe
|
||||
go mod download
|
||||
make tools
|
||||
make assets
|
||||
make server
|
||||
make db
|
||||
./notify.moe
|
||||
```
|
||||
|
||||
## Networking
|
||||
|
||||
* Add `beta.notify.moe 127.0.0.1` to your `hosts` file
|
||||
* Run `make ports`
|
||||
|
||||
## In your browser
|
||||
|
||||
* Open the settings, search for certificates
|
||||
* Import the file `security/default/root.crt` as a trusted Root authority
|
||||
* Open `https://beta.notify.moe`
|
||||
|
||||
## What now?
|
||||
|
||||
* Try the [example task for newcomers](docs/new-contributor-task.md).
|
||||
* Make some changes and upload them to a new branch on your fork.
|
||||
* Create a pull request on this repository.
|
||||
|
||||
## Find us
|
||||
|
||||
* [Discord](https://discord.gg/0kimAmMCeXGXuzNF)
|
||||
* [Facebook](https://www.facebook.com/animenotifier)
|
||||
* [Twitter](https://twitter.com/animenotifier)
|
||||
* [GitHub](https://github.com/animenotifier/notify.moe)
|
||||
|
||||
## Contributing
|
||||
|
||||
Please read [CONTRIBUTING.md](docs/contributing.md) for details on how to contribute to this project.
|
||||
|
||||
## Statistics
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
{go:footer}
|
102
arn/AMV.go
102
arn/AMV.go
@ -1,17 +1,14 @@
|
||||
package arn
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/aerogo/nano"
|
||||
"github.com/animenotifier/notify.moe/arn/video"
|
||||
"github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
// AMV is an anime music video.
|
||||
@ -40,13 +37,7 @@ func (amv *AMV) Link() string {
|
||||
|
||||
// VideoLink returns the permalink for the video file.
|
||||
func (amv *AMV) VideoLink() string {
|
||||
domain := "arn.sfo2.cdn"
|
||||
|
||||
if amv.IsDraft {
|
||||
domain = "arn.sfo2"
|
||||
}
|
||||
|
||||
return fmt.Sprintf("https://%s.digitaloceanspaces.com/videos/amvs/%s", domain, amv.File)
|
||||
return fmt.Sprintf("https://notify.moe/videos/amvs/%s", amv.File)
|
||||
}
|
||||
|
||||
// TitleByUser returns the preferred title for the given user.
|
||||
@ -57,17 +48,13 @@ func (amv *AMV) TitleByUser(user *User) string {
|
||||
// SetVideoReader sets the bytes for the video file by reading them from the reader.
|
||||
func (amv *AMV) SetVideoReader(reader io.Reader) error {
|
||||
fileName := amv.ID + ".webm"
|
||||
pattern := amv.ID + ".*.webm"
|
||||
file, err := ioutil.TempFile("", pattern)
|
||||
file, err := os.Create(filepath.Join(Root, "videos", "amvs", fileName))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
filePath := file.Name()
|
||||
defer os.Remove(filePath)
|
||||
|
||||
// Write file contents
|
||||
defer file.Close()
|
||||
_, err = io.Copy(file, reader)
|
||||
|
||||
if err != nil {
|
||||
@ -75,56 +62,59 @@ func (amv *AMV) SetVideoReader(reader io.Reader) error {
|
||||
}
|
||||
|
||||
// Run mkclean
|
||||
optimizedFile := filePath + ".optimized"
|
||||
defer os.Remove(optimizedFile)
|
||||
// optimizedFile := filePath + ".optimized"
|
||||
// defer os.Remove(optimizedFile)
|
||||
|
||||
cmd := exec.Command(
|
||||
"mkclean",
|
||||
"--doctype", "4",
|
||||
"--keep-cues",
|
||||
"--optimize",
|
||||
filePath,
|
||||
optimizedFile,
|
||||
)
|
||||
// cmd := exec.Command(
|
||||
// "mkclean",
|
||||
// "--doctype", "4",
|
||||
// "--keep-cues",
|
||||
// "--optimize",
|
||||
// filePath,
|
||||
// optimizedFile,
|
||||
// )
|
||||
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
cmd.Stdin = os.Stdin
|
||||
// cmd.Stdout = os.Stdout
|
||||
// cmd.Stderr = os.Stderr
|
||||
// cmd.Stdin = os.Stdin
|
||||
|
||||
err = cmd.Start()
|
||||
// err = cmd.Start()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
err = cmd.Wait()
|
||||
// err = cmd.Wait()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// Refresh video file info
|
||||
info, err := video.GetInfo(optimizedFile)
|
||||
// info, err := video.GetInfo(optimizedFile)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// Is our storage server available?
|
||||
if Spaces == nil {
|
||||
return errors.New("File storage client has not been initialized")
|
||||
}
|
||||
// // Is our storage server available?
|
||||
// if Spaces == nil {
|
||||
// return errors.New("File storage client has not been initialized")
|
||||
// }
|
||||
|
||||
// Make sure the file is public
|
||||
userMetaData := map[string]string{
|
||||
"x-amz-acl": "public-read",
|
||||
}
|
||||
// // Make sure the file is public
|
||||
// userMetaData := map[string]string{
|
||||
// "x-amz-acl": "public-read",
|
||||
// }
|
||||
|
||||
// Upload the file to our storage server
|
||||
_, err = Spaces.FPutObject(context.TODO(), "arn", fmt.Sprintf("videos/amvs/%s.webm", amv.ID), optimizedFile, minio.PutObjectOptions{
|
||||
ContentType: "video/webm",
|
||||
UserMetadata: userMetaData,
|
||||
})
|
||||
// // Upload the file to our storage server
|
||||
// _, err = Spaces.FPutObject(context.TODO(), "arn", , optimizedFile, minio.PutObjectOptions{
|
||||
// ContentType: "video/webm",
|
||||
// UserMetadata: userMetaData,
|
||||
// })
|
||||
|
||||
// Refresh video file info
|
||||
info, err := video.GetInfo(fileName)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
@ -191,7 +181,7 @@ func (amv *AMV) Publish() error {
|
||||
}
|
||||
|
||||
// No file uploaded
|
||||
_, err := Spaces.StatObject(context.TODO(), "arn", fmt.Sprintf("videos/amvs/%s", amv.File), minio.StatObjectOptions{})
|
||||
_, err := os.Stat(filepath.Join(Root, "videos", "amvs", amv.File))
|
||||
|
||||
if err != nil {
|
||||
return errors.New("You need to upload a WebM file for this AMV")
|
||||
|
@ -1,14 +1,14 @@
|
||||
package arn
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
|
||||
"github.com/aerogo/aero"
|
||||
"github.com/aerogo/api"
|
||||
"github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
// Force interface implementations
|
||||
@ -104,8 +104,8 @@ func (amv *AMV) Delete() error {
|
||||
}
|
||||
|
||||
// Remove file
|
||||
if amv.File != "" && Spaces != nil {
|
||||
err := Spaces.RemoveObject(context.TODO(), "arn", fmt.Sprintf("videos/amvs/%s", amv.File), minio.RemoveObjectOptions{})
|
||||
if amv.File != "" {
|
||||
err := os.Remove(filepath.Join(Root, "videos", "amvs", amv.File))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1,7 +1,6 @@
|
||||
package arn
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
@ -93,7 +92,7 @@ func init() {
|
||||
}
|
||||
|
||||
// Load API keys
|
||||
data, err := ioutil.ReadFile(apiKeysPath)
|
||||
data, err := os.ReadFile(apiKeysPath)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -111,5 +110,5 @@ func init() {
|
||||
anilist.APIKeySecret = APIKeys.AniList.Secret
|
||||
|
||||
// Initialize file storage
|
||||
initSpaces()
|
||||
// initSpaces()
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package arn_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
|
@ -3,7 +3,7 @@ package arn_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
|
@ -3,7 +3,7 @@ package arn_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
|
@ -3,7 +3,7 @@ package arn_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
@ -274,7 +274,7 @@ func (track *SoundTrack) Download() error {
|
||||
|
||||
// Download
|
||||
cmd := exec.Command(
|
||||
"youtube-dl",
|
||||
"yt-dlp",
|
||||
"--no-check-certificate",
|
||||
"--extract-audio",
|
||||
"--audio-quality", "0",
|
||||
|
@ -1,33 +1,33 @@
|
||||
package arn
|
||||
|
||||
import (
|
||||
"log"
|
||||
// import (
|
||||
// "log"
|
||||
|
||||
"github.com/minio/minio-go/v7"
|
||||
"github.com/minio/minio-go/v7/pkg/credentials"
|
||||
)
|
||||
// "github.com/minio/minio-go/v7"
|
||||
// "github.com/minio/minio-go/v7/pkg/credentials"
|
||||
// )
|
||||
|
||||
// Spaces represents our file storage server.
|
||||
var Spaces *minio.Client
|
||||
// // Spaces represents our file storage server.
|
||||
// var Spaces *minio.Client
|
||||
|
||||
// initSpaces starts our file storage client.
|
||||
func initSpaces() {
|
||||
if APIKeys.S3.ID == "" || APIKeys.S3.Secret == "" {
|
||||
return
|
||||
}
|
||||
// // initSpaces starts our file storage client.
|
||||
// func initSpaces() {
|
||||
// if APIKeys.S3.ID == "" || APIKeys.S3.Secret == "" {
|
||||
// return
|
||||
// }
|
||||
|
||||
go func() {
|
||||
var err error
|
||||
endpoint := "sfo2.digitaloceanspaces.com"
|
||||
// go func() {
|
||||
// var err error
|
||||
// endpoint := "sfo2.digitaloceanspaces.com"
|
||||
|
||||
// Initiate a client using DigitalOcean Spaces.
|
||||
Spaces, err = minio.New(endpoint, &minio.Options{
|
||||
Secure: true,
|
||||
Creds: credentials.NewStaticV4(APIKeys.S3.ID, APIKeys.S3.Secret, ""),
|
||||
})
|
||||
// // Initiate a client using DigitalOcean Spaces.
|
||||
// Spaces, err = minio.New(endpoint, &minio.Options{
|
||||
// Secure: true,
|
||||
// Creds: credentials.NewStaticV4(APIKeys.S3.ID, APIKeys.S3.Secret, ""),
|
||||
// })
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
// }()
|
||||
// }
|
||||
|
@ -112,15 +112,9 @@ func (user *User) Edit(ctx aero.Context, key string, value reflect.Value, newVal
|
||||
}
|
||||
|
||||
if !validate.DiscordNick(newNick) {
|
||||
return true, errors.New("Discord username must include your name and the 4-digit Discord tag (e.g. Yandere#1234)")
|
||||
return true, errors.New("Not a valid Discord username")
|
||||
}
|
||||
|
||||
// Trim spaces
|
||||
parts := strings.Split(newNick, "#")
|
||||
parts[0] = strings.TrimSpace(parts[0])
|
||||
parts[1] = strings.TrimSpace(parts[1])
|
||||
newNick = strings.Join(parts, "#")
|
||||
|
||||
if value.String() != newNick {
|
||||
value.SetString(newNick)
|
||||
user.Accounts.Discord.Verified = false
|
||||
|
@ -3,7 +3,7 @@ package arn_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
|
@ -3,7 +3,7 @@ package autocorrect_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn/autocorrect"
|
||||
)
|
||||
|
||||
|
@ -19,9 +19,9 @@ func (typ *Type) Endpoint() string {
|
||||
return "/api/" + strings.ToLower(typ.Name)
|
||||
}
|
||||
|
||||
// GitHubLink returns link to display the type in GitHub.
|
||||
func (typ *Type) GitHubLink() string {
|
||||
return fmt.Sprintf("https://github.com/animenotifier/notify.moe/blob/go/arn/%s.go#L%d", typ.Name, typ.LineNumber)
|
||||
// GitLink returns link to display the type in Git.
|
||||
func (typ *Type) GitLink() string {
|
||||
return fmt.Sprintf("https://git.urbach.dev/web/notify.moe/src/branch/main/arn/%s.go#L%d", typ.Name, typ.LineNumber)
|
||||
}
|
||||
|
||||
// GetTypeDocumentation tries to gather documentation about the given type.
|
||||
|
@ -3,7 +3,7 @@ package search_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn/search"
|
||||
)
|
||||
|
||||
|
@ -3,7 +3,7 @@ package stringutils_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn/stringutils"
|
||||
)
|
||||
|
||||
|
@ -22,7 +22,7 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
discordNickRegex = regexp.MustCompile(`^([^#]{2,32})#(\d{4})$`)
|
||||
discordNickRegex = regexp.MustCompile(`^([^#]{2,32})$`)
|
||||
emailRegex = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
|
||||
)
|
||||
|
||||
|
@ -3,7 +3,7 @@ package validate_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn/validate"
|
||||
)
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
"https://www.facebook.com/animenotifier",
|
||||
"https://twitter.com/animenotifier",
|
||||
"https://discord.gg/0kimAmMCeXGXuzNF",
|
||||
"https://github.com/animenotifier/notify.moe"
|
||||
"https://git.akyoto.dev/web/notify.moe"
|
||||
],
|
||||
"founder":{
|
||||
"@type":"Person",
|
||||
|
@ -14,7 +14,6 @@ var allCommands = []Command{
|
||||
commands.AnimeList,
|
||||
commands.AnimeSearch,
|
||||
commands.Did,
|
||||
commands.Play,
|
||||
commands.RandomQuote,
|
||||
commands.Roles,
|
||||
commands.Source,
|
||||
@ -32,7 +31,6 @@ func OnMessageCreate(s *discordgo.Session, msg *discordgo.MessageCreate) {
|
||||
_, err := s.ChannelMessageSend(msg.ChannelID, `
|
||||
**!a** [anime search term]
|
||||
**!animelist** [username]
|
||||
**!play** [status text]
|
||||
**!randomquote**
|
||||
**!source**
|
||||
**!verify** [username]`)
|
||||
|
@ -1,23 +0,0 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/akyoto/color"
|
||||
"github.com/bwmarrin/discordgo"
|
||||
)
|
||||
|
||||
// Play changes the status of the bot.
|
||||
func Play(s *discordgo.Session, msg *discordgo.MessageCreate) bool {
|
||||
if !strings.HasPrefix(msg.Content, "!play ") {
|
||||
return false
|
||||
}
|
||||
|
||||
err := s.UpdateStatus(0, msg.Content[len("!play "):])
|
||||
|
||||
if err != nil {
|
||||
color.Red(err.Error())
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -11,7 +11,7 @@ func Source(s *discordgo.Session, msg *discordgo.MessageCreate) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
_, err := s.ChannelMessageSend(msg.ChannelID, msg.Author.Mention()+" B-baaaaaaaka! Y..you...you want to...TOUCH MY CODE?!\n\nhttps://github.com/animenotifier/notify.moe/tree/go/bots/discord")
|
||||
_, err := s.ChannelMessageSend(msg.ChannelID, msg.Author.Mention()+" B-baaaaaaaka! Y..you...you want to...TOUCH MY CODE?!\n\nhttps://git.urbach.dev/web/notify.moe/src/branch/main/bots/discord")
|
||||
|
||||
if err != nil {
|
||||
color.Red(err.Error())
|
||||
|
@ -30,7 +30,7 @@ const (
|
||||
|
||||
// Verify verifies that the given user has an account on notify.moe.
|
||||
func Verify(s *discordgo.Session, msg *discordgo.MessageCreate) bool {
|
||||
discordTag := msg.Author.Username + "#" + msg.Author.Discriminator
|
||||
discordTag := msg.Author.Username
|
||||
|
||||
if msg.Content == "!verify" {
|
||||
_, err := s.ChannelMessageSend(msg.ChannelID, fmt.Sprintf("To verify your account, first add `%s` as your Discord account on https://notify.moe/settings/accounts, then type `!verify` followed by your username on notify.moe, e.g. `!verify MyName`", discordTag))
|
||||
|
@ -12,14 +12,12 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
discord, err := discordgo.New()
|
||||
discord, err := discordgo.New("Bot " + arn.APIKeys.Discord.Token)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
discord.Token = "Bot " + arn.APIKeys.Discord.Token
|
||||
|
||||
// Verify a Token was provided
|
||||
if discord.Token == "" {
|
||||
log.Println("You must provide a Discord authentication token.")
|
||||
|
@ -39,7 +39,7 @@ In the past it was, but not anymore. We're growing bigger by establishing a data
|
||||
* [Facebook](https://www.facebook.com/animenotifier)
|
||||
* [Twitter](https://twitter.com/animenotifier)
|
||||
* [Google+](https://plus.google.com/+AnimeReleaseNotifierOfficial)
|
||||
* [GitHub](https://github.com/animenotifier/notify.moe)
|
||||
* [Git](https://git.urbach.dev/web/notify.moe)
|
||||
* [Discord](https://discord.gg/0kimAmMCeXGXuzNF)
|
||||
|
||||
## Where can I read the Terms of Service?
|
||||
|
@ -5,12 +5,12 @@
|
||||
You do not need to be a developer to contribute. There are multiple ways to help our project:
|
||||
|
||||
- [Database Editing](https://notify.moe/users/editors)
|
||||
- [Donations](https://github.com/users/akyoto/sponsorship)
|
||||
- [Pull Requests](https://github.com/animenotifier/notify.moe/pulls)
|
||||
- [Donations](https://ko-fi.com/akyoto)
|
||||
- [Pull Requests](https://git.urbach.dev/pulls)
|
||||
|
||||
## How do I make a proper pull request?
|
||||
|
||||
- Fork the project on GitHub
|
||||
- Fork the project
|
||||
- Create a new branch
|
||||
- Upload the changes to your branch
|
||||
- Check the [style guidelines](https://github.com/akyoto/quality/blob/master/STYLE.md)
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Task for new contributors
|
||||
|
||||
This task assumes that you have [installed](https://github.com/animenotifier/notify.moe#installation) notify.moe already, started the server with the `run` tool and have the code open in Visual Studio Code. It will teach you the basics by creating an entirely empty page within notify.moe.
|
||||
This task assumes that you have [installed](https://git.urbach.dev/web/notify.moe#installation) notify.moe already, started the server with the `run` tool and have the code open in Visual Studio Code. It will teach you the basics by creating an entirely empty page within notify.moe.
|
||||
|
||||
# Step 1: Create a new page
|
||||
|
||||
|
@ -15,9 +15,9 @@ component SocialMediaLinks
|
||||
Icon("patreon")
|
||||
span Patreon
|
||||
|
||||
a.footer-element(href="https://github.com/animenotifier/notify.moe", target="_blank", rel="noopener")
|
||||
a.footer-element(href="https://git.urbach.dev/web/notify.moe", target="_blank", rel="noopener")
|
||||
Icon("github")
|
||||
span GitHub
|
||||
span Git
|
||||
|
||||
component SocialMediaButtons
|
||||
a.social-media-button.circle-1(href="https://discord.gg/0kimAmMCeXGXuzNF", title="Discord", target="_blank", rel="noopener")
|
||||
@ -32,5 +32,5 @@ component SocialMediaButtons
|
||||
a.social-media-button.circle-4(href="https://patreon.com/eduardurbach", title="Patreon", target="_blank", rel="noopener")
|
||||
RawIcon("patreon")
|
||||
|
||||
a.social-media-button.circle-5(href="https://github.com/animenotifier/notify.moe", title="GitHub", target="_blank", rel="noopener")
|
||||
a.social-media-button.circle-5(href="https://git.urbach.dev/web/notify.moe", title="GitHub", target="_blank", rel="noopener")
|
||||
RawIcon("github")
|
55
go.mod
55
go.mod
@ -1,8 +1,11 @@
|
||||
module github.com/animenotifier/notify.moe
|
||||
|
||||
go 1.21.6
|
||||
go 1.24
|
||||
|
||||
replace github.com/logpacker/PayPal-Go-SDK => github.com/logpacker/PayPal-Go-SDK v1.1.4
|
||||
|
||||
require (
|
||||
git.urbach.dev/go/assert v0.0.0-20250225153414-fc1f84f19edf
|
||||
github.com/aerogo/aero v1.3.59
|
||||
github.com/aerogo/api v0.2.3
|
||||
github.com/aerogo/crawler v0.2.5
|
||||
@ -17,7 +20,6 @@ require (
|
||||
github.com/aerogo/run v1.0.3
|
||||
github.com/aerogo/session-store-nano v0.1.7
|
||||
github.com/aerogo/sitemap v0.1.4
|
||||
github.com/akyoto/assert v0.2.4
|
||||
github.com/akyoto/cache v1.0.6
|
||||
github.com/akyoto/color v1.8.12
|
||||
github.com/akyoto/go-matroska v0.1.1
|
||||
@ -31,27 +33,25 @@ require (
|
||||
github.com/animenotifier/mal v0.2.5
|
||||
github.com/animenotifier/shoboi v0.2.4
|
||||
github.com/animenotifier/twist v0.2.6
|
||||
github.com/bwmarrin/discordgo v0.22.0
|
||||
github.com/bwmarrin/discordgo v0.28.1
|
||||
github.com/dustin/go-humanize v1.0.1
|
||||
github.com/gomodule/oauth1 v0.2.0
|
||||
github.com/itchyny/gojq v0.11.2
|
||||
github.com/itchyny/gojq v0.12.17
|
||||
github.com/json-iterator/go v1.1.12
|
||||
github.com/logpacker/PayPal-Go-SDK v1.1.4
|
||||
github.com/minio/minio-go/v7 v7.0.66
|
||||
github.com/logpacker/PayPal-Go-SDK v2.0.5+incompatible
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
|
||||
github.com/mssola/user_agent v0.6.0
|
||||
github.com/pariz/gountries v0.1.6
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible
|
||||
github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569
|
||||
github.com/ungerik/go-gravatar v0.0.0-20120802094239-6ab22628222a
|
||||
github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e
|
||||
golang.org/x/oauth2 v0.16.0
|
||||
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1
|
||||
golang.org/x/oauth2 v0.28.0
|
||||
)
|
||||
|
||||
require (
|
||||
cloud.google.com/go/compute v1.23.4 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
||||
github.com/PuerkitoBio/goquery v1.8.1 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.6.0 // indirect
|
||||
github.com/PuerkitoBio/goquery v1.10.2 // indirect
|
||||
github.com/aerogo/cluster v0.1.8 // indirect
|
||||
github.com/aerogo/csp v0.1.10 // indirect
|
||||
github.com/aerogo/packet v0.2.2 // indirect
|
||||
@ -60,37 +60,26 @@ require (
|
||||
github.com/akyoto/colorable v0.1.7 // indirect
|
||||
github.com/akyoto/tty v0.1.4 // indirect
|
||||
github.com/akyoto/uuid v1.1.3 // indirect
|
||||
github.com/andybalholm/cascadia v1.3.2 // indirect
|
||||
github.com/andybalholm/cascadia v1.3.3 // indirect
|
||||
github.com/aymerick/douceur v0.2.0 // indirect
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/golang/protobuf v1.5.3 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/gorilla/css v1.0.1 // indirect
|
||||
github.com/gorilla/websocket v1.4.0 // indirect
|
||||
github.com/itchyny/astgen-go v0.0.0-20200815150004-12a293722290 // indirect
|
||||
github.com/itchyny/timefmt-go v0.1.1 // indirect
|
||||
github.com/klauspost/compress v1.17.5 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
|
||||
github.com/microcosm-cc/bluemonday v1.0.26 // indirect
|
||||
github.com/minio/md5-simd v1.1.2 // indirect
|
||||
github.com/minio/sha256-simd v1.0.1 // indirect
|
||||
github.com/gorilla/websocket v1.5.3 // indirect
|
||||
github.com/itchyny/timefmt-go v0.1.6 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
|
||||
github.com/microcosm-cc/bluemonday v1.0.27 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/rs/xid v1.5.0 // indirect
|
||||
github.com/russross/blackfriday v2.0.0+incompatible // indirect
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.13 // indirect
|
||||
github.com/tklauser/numcpus v0.7.0 // indirect
|
||||
github.com/stretchr/testify v1.9.0 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.15 // indirect
|
||||
github.com/tklauser/numcpus v0.10.0 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
github.com/zeebo/xxh3 v1.0.2 // indirect
|
||||
golang.org/x/crypto v0.18.0 // indirect
|
||||
golang.org/x/net v0.20.0 // indirect
|
||||
golang.org/x/sys v0.16.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
google.golang.org/appengine v1.6.8 // indirect
|
||||
google.golang.org/protobuf v1.32.0 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
golang.org/x/crypto v0.36.0 // indirect
|
||||
golang.org/x/net v0.37.0 // indirect
|
||||
golang.org/x/sys v0.31.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
)
|
||||
|
168
go.sum
168
go.sum
@ -1,10 +1,10 @@
|
||||
cloud.google.com/go/compute v1.23.4 h1:EBT9Nw4q3zyE7G45Wvv3MzolIrCJEuHys5muLY0wvAw=
|
||||
cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI=
|
||||
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
|
||||
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
|
||||
cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I=
|
||||
cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
|
||||
git.urbach.dev/go/assert v0.0.0-20250225153414-fc1f84f19edf h1:BQWa5GKNUsA5CSUa/+UlFWYCEVe3IDDKRbVqBLK0mAE=
|
||||
git.urbach.dev/go/assert v0.0.0-20250225153414-fc1f84f19edf/go.mod h1:y9jGII9JFiF1HNIju0u87OyPCt82xKCtqnAFyEreCDo=
|
||||
github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
|
||||
github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM=
|
||||
github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ=
|
||||
github.com/PuerkitoBio/goquery v1.10.2 h1:7fh2BdHcG6VFZsK7toXBT/Bh1z5Wmy8Q9MV9HqT2AM8=
|
||||
github.com/PuerkitoBio/goquery v1.10.2/go.mod h1:0guWGjcLu9AYC7C1GHnpysHy056u9aEkUHwhdnePMCU=
|
||||
github.com/aerogo/aero v1.3.29/go.mod h1:nHuG9q4VrzH7ZtiE1TEIt9Lazp/w3WpC3nqAKREkg0Q=
|
||||
github.com/aerogo/aero v1.3.59 h1:5yu+kk/uIXAXADKSLCFKhxAzThCehvpbF6gst+G32Fw=
|
||||
github.com/aerogo/aero v1.3.59/go.mod h1:ehwj+mb117xQRTvp11jlnrRNPgbcYL6s6aBk9wbIZ0o=
|
||||
@ -98,9 +98,8 @@ github.com/akyoto/uuid v1.1.3/go.mod h1:8dgzDQyrpuApBGIQHOX7JkvCZHusXZ0tGlQcxxv4
|
||||
github.com/akyoto/webpush-go v0.1.2 h1:Ufg8Al6xyyaTmdlLkfOGDEapVClymzJl/Whu8pOydjM=
|
||||
github.com/akyoto/webpush-go v0.1.2/go.mod h1:IxZu6lYe/IQ+jNFEcZjwp6cWyU/KsnARuLZKvM9SfOk=
|
||||
github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
|
||||
github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
|
||||
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
|
||||
github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM=
|
||||
github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
|
||||
github.com/animenotifier/anilist v0.2.8 h1:slqsM2c6QL6AqRfUEyJP1Ha2Y7zArDG1+3KygoVKsz0=
|
||||
github.com/animenotifier/anilist v0.2.8/go.mod h1:qCP/teRFZffvMnRndkVu00V3roDgnA0Fk/aJ1ernP6A=
|
||||
github.com/animenotifier/japanese v0.2.5 h1:3crv70AzmrTiJCI6SG9rUeFS2T3FXdxKwvRjjUa/74g=
|
||||
@ -115,8 +114,8 @@ github.com/animenotifier/twist v0.2.6 h1:CSrpScSwLTjR37kCFwAzIe84sA47fXaRHL3qGKC
|
||||
github.com/animenotifier/twist v0.2.6/go.mod h1:sJspetlxvfkge5+Eh0VNKnD7x35MqtntWZlI3zXeHfY=
|
||||
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
|
||||
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
|
||||
github.com/bwmarrin/discordgo v0.22.0 h1:uBxY1HmlVCsW1IuaPjpCGT6A2DBwRn0nvOguQIxDdFM=
|
||||
github.com/bwmarrin/discordgo v0.22.0/go.mod h1:c1WtWUGN6nREDmzIpyTp/iD3VYt4Fpx+bVyfBG7JE+M=
|
||||
github.com/bwmarrin/discordgo v0.28.1 h1:gXsuo2GBO7NbR6uqmrrBDplPUx2T3nzu775q/Rd1aG4=
|
||||
github.com/bwmarrin/discordgo v0.28.1/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
|
||||
github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8=
|
||||
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
@ -128,48 +127,34 @@ github.com/dlespiau/covertool v0.0.0-20180314162135-b0c4c6d0583a/go.mod h1:/eQMc
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/gojp/kana v0.0.0-20190509023103-3514925d577b/go.mod h1:kWp5hDdJQqnZ2E3SQNQe+iejY63SZ+JdlbnW+qn7vxY=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/gomodule/oauth1 v0.2.0 h1:/nNHAD99yipOEspQFbAnNmwGTZ1UNXiD/+JLxwx79fo=
|
||||
github.com/gomodule/oauth1 v0.2.0/go.mod h1:4r/a8/3RkhMBxJQWL5qzbOEcaQmNPIkNoI7P8sXeI08=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8=
|
||||
github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0=
|
||||
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/hokaccha/go-prettyjson v0.0.0-20190818114111-108c894c2c0e/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/ikawaha/kagome v1.11.0/go.mod h1:eEV1yEy8Hm2eJRMz6nU1OlbrafRqXTECbsmm9aUMX2s=
|
||||
github.com/itchyny/astgen-go v0.0.0-20200815150004-12a293722290 h1:9ZAJ5+eh9dfcPsJ1CXoiE16JzsBmJm1e124eUkXAyc0=
|
||||
github.com/itchyny/astgen-go v0.0.0-20200815150004-12a293722290/go.mod h1:296z3W7Xsrp2mlIY88ruDKscuvrkL6zXCNRtaYVshzw=
|
||||
github.com/itchyny/go-flags v1.5.0/go.mod h1:lenkYuCobuxLBAd/HGFE4LRoW8D3B6iXRQfWYJ+MNbA=
|
||||
github.com/itchyny/gojq v0.11.2 h1:lKhMKfH7fTKMWj2Zr8az/9TliCn0TTXVc/BXfQ8Jhfc=
|
||||
github.com/itchyny/gojq v0.11.2/go.mod h1:XtmtF1PxeDpwLC1jyz/xAmV78ANlP0S9LVEPsKweK0A=
|
||||
github.com/itchyny/timefmt-go v0.1.1 h1:rLpnm9xxb39PEEVzO0n4IRp0q6/RmBc7Dy/rE4HrA0U=
|
||||
github.com/itchyny/timefmt-go v0.1.1/go.mod h1:0osSSCQSASBJMsIZnhAaF1C2fCBTJZXrnj37mG8/c+A=
|
||||
github.com/itchyny/gojq v0.12.17 h1:8av8eGduDb5+rvEdaOO+zQUjA04MS0m3Ps8HiD+fceg=
|
||||
github.com/itchyny/gojq v0.12.17/go.mod h1:WBrEMkgAfAGO1LUcGOckBl5O726KPp+OlkKug0I/FEY=
|
||||
github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q=
|
||||
github.com/itchyny/timefmt-go v0.1.6/go.mod h1:RRDZYC5s9ErkjQvTvvU7keJjxUYzIISJGxm9/mAERQg=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E=
|
||||
github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
|
||||
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
|
||||
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
|
||||
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
@ -180,24 +165,13 @@ github.com/logpacker/PayPal-Go-SDK v1.1.4/go.mod h1:DUf5ncyG0n3jFnU9VsuQqe/Vo6KH
|
||||
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
||||
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
|
||||
github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
|
||||
github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
|
||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||
github.com/minio/minio-go/v7 v7.0.66 h1:bnTOXOHjOqv/gcMuiVbN9o2ngRItvqE774dG9nq0Dzw=
|
||||
github.com/minio/minio-go/v7 v7.0.66/go.mod h1:DHAgmyQEGdW3Cif0UooKOyrT3Vxs82zNdV6tkKhRtbs=
|
||||
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
|
||||
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
|
||||
github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=
|
||||
github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
|
||||
github.com/mmcloughlin/avo v0.0.0-20190731014047-bb615f61ce85/go.mod h1:lf5GMZxA5kz8dnCweJuER5Rmbx6dDu6qvw0fO3uYKK8=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
@ -216,23 +190,18 @@ github.com/pkg/profile v1.3.0/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM=
|
||||
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT8YD6Td9ZMSU9APFcsk=
|
||||
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/tdewolff/minify/v2 v2.5.1/go.mod h1:ltNgpU7tnfgNCIHP1D0aS8g9IV0qP7WWP1/HdXIGznE=
|
||||
github.com/tdewolff/parse/v2 v2.3.8/go.mod h1:HansaqmN4I/U7L6/tUp0NcwT2tFO0F4EAWYGSDzkYNk=
|
||||
github.com/tdewolff/parse/v2 v2.3.9/go.mod h1:HansaqmN4I/U7L6/tUp0NcwT2tFO0F4EAWYGSDzkYNk=
|
||||
@ -240,15 +209,15 @@ github.com/tdewolff/test v1.0.0/go.mod h1:DiQUlutnqlEvdvhSn2LPGy4TFwRauAaYDsL+68
|
||||
github.com/tdewolff/test v1.0.3/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
|
||||
github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569 h1:xzABM9let0HLLqFypcxvLmlvEciCHL7+Lv+4vwZqecI=
|
||||
github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569/go.mod h1:2Ly+NIftZN4de9zRmENdYbvPQeaVIYKWpLFStLFEBgI=
|
||||
github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4=
|
||||
github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
|
||||
github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4=
|
||||
github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY=
|
||||
github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4=
|
||||
github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4=
|
||||
github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso=
|
||||
github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ=
|
||||
github.com/ungerik/go-gravatar v0.0.0-20120802094239-6ab22628222a h1:TZyMbJbyPL+4/ndyXns8aNDrmUJn5a6aV8lj3qEM7fM=
|
||||
github.com/ungerik/go-gravatar v0.0.0-20120802094239-6ab22628222a/go.mod h1:cmQAsXze586z5DHYfoVO9jZBampncP3iuhVgujPqdxk=
|
||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e h1:+SOyEddqYF09QP7vr7CgJ1eti3pY9Fn3LHO1M1r/0sI=
|
||||
github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
||||
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
|
||||
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
@ -260,14 +229,21 @@ github.com/zeebo/xxh3 v1.0.1/go.mod h1:8VHV24/3AZLn3b6Mlp/KuC33LWH687Wq6EnziEB+r
|
||||
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
|
||||
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
|
||||
golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8=
|
||||
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
|
||||
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@ -275,18 +251,24 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
|
||||
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
|
||||
golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ=
|
||||
golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
|
||||
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
|
||||
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||
golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
|
||||
golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181031143558-9b800f95dbbc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@ -301,60 +283,54 @@ golang.org/x/sys v0.0.0-20190829204830-5fe476d8906b/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20190830142957-1e83adbbebd0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191025090151-53bf42e6b339/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
|
||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190106171756-3ef68632349c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
|
||||
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
@ -6,7 +6,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/akyoto/assert"
|
||||
"git.urbach.dev/go/assert"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
"github.com/animenotifier/notify.moe/server"
|
||||
"github.com/animenotifier/notify.moe/utils/routetests"
|
||||
|
@ -17,5 +17,5 @@ component API(types []*autodocs.Type)
|
||||
a(href=typ.Endpoint())= typ.Name
|
||||
td= typ.Comment
|
||||
td
|
||||
a(href=typ.GitHubLink())
|
||||
a(href=typ.GitLink())
|
||||
RawIcon("github")
|
||||
|
@ -1,13 +1,11 @@
|
||||
package episode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/aerogo/aero"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
"github.com/animenotifier/notify.moe/components"
|
||||
minio "github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
// Get renders the anime episode.
|
||||
@ -32,10 +30,10 @@ func Get(ctx aero.Context) error {
|
||||
// Does the episode exist?
|
||||
uploaded := false
|
||||
|
||||
if arn.Spaces != nil {
|
||||
stat, err := arn.Spaces.StatObject(ctx.Request().Context(), "arn", fmt.Sprintf("videos/anime/%s/%d.webm", anime.ID, episode.Number), minio.StatObjectOptions{})
|
||||
uploaded = (err == nil) && (stat.Size > 0)
|
||||
}
|
||||
// if arn.Spaces != nil {
|
||||
// stat, err := arn.Spaces.StatObject(ctx.Request().Context(), "arn", fmt.Sprintf("videos/anime/%s/%d.webm", anime.ID, episode.Number), minio.StatObjectOptions{})
|
||||
// uploaded = (err == nil) && (stat.Size > 0)
|
||||
// }
|
||||
|
||||
_, episodeIndex := anime.Episodes().Find(episode.Number)
|
||||
|
||||
|
@ -1,24 +1,24 @@
|
||||
component Episode(anime *arn.Anime, episode *arn.Episode, episodeIndex int, uploaded bool, user *arn.User)
|
||||
h1
|
||||
a(href=anime.Link())= anime.Title.ByUser(user)
|
||||
|
||||
|
||||
.episode-navigation-container
|
||||
if episodeIndex > 0
|
||||
.episode-arrow.episode-arrow-previous
|
||||
a.light-button(href=episode.Previous().Link(), title="Previous episode")
|
||||
RawIcon("chevron-left")
|
||||
|
||||
|
||||
.episode-video
|
||||
if uploaded
|
||||
.video-container(id="stream-test")
|
||||
video.video.lazy.action(data-action="toggleFullscreen", data-trigger="dblclick", data-id="stream-test")
|
||||
source(data-src=fmt.Sprintf("https://arn.sfo2.cdn.digitaloceanspaces.com/videos/anime/%s/%d.webm", anime.ID, episode.Number), data-type="video/webm")
|
||||
source(data-src=fmt.Sprintf("https://notify.moe/videos/anime/%s/%d.webm", anime.ID, episode.Number), data-type="video/webm")
|
||||
track(label="English", kind="subtitles", srclang="en", src=fmt.Sprintf("/anime/%s/episode/%d/subtitles/en", anime.ID, episode.Number), default)
|
||||
|
||||
VideoControls("stream-test", time.Duration(0))
|
||||
else
|
||||
.video-container.episode-not-available(title="Episode not available yet")
|
||||
|
||||
|
||||
//- a(href=anime.Link(), title=anime.Title.ByUser(user))
|
||||
//- img.anime-cover-image.lazy(data-src=anime.ImageLink("large"), data-webp="true", data-color=anime.AverageColor(), alt=anime.Title.ByUser(user))
|
||||
|
||||
@ -36,6 +36,6 @@ component Episode(anime *arn.Anime, episode *arn.Episode, episodeIndex int, uplo
|
||||
if validate.DateTime(episode.AiringDate.Start)
|
||||
p.episode-view-airing-date
|
||||
time.utc-airing-date(datetime=episode.AiringDate.Start, data-end-date=episode.AiringDate.End, data-episode-number=episode.Number)= episode.AiringDate.StartDateHuman()
|
||||
|
||||
|
||||
footer.footer
|
||||
p Make sure to support the anime you're watching by buying officially released Blu-rays and merchandise.
|
||||
|
@ -1,18 +1,16 @@
|
||||
package episode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/aerogo/aero"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
minio "github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
// Subtitles returns the subtitles.
|
||||
func Subtitles(ctx aero.Context) error {
|
||||
id := ctx.Get("id")
|
||||
language := ctx.Get("language")
|
||||
// language := ctx.Get("language")
|
||||
|
||||
// Get episode
|
||||
episode, err := arn.GetEpisode(id)
|
||||
@ -31,12 +29,13 @@ func Subtitles(ctx aero.Context) error {
|
||||
ctx.Response().SetHeader("Access-Control-Allow-Origin", "*")
|
||||
ctx.Response().SetHeader("Content-Type", "text/vtt; charset=utf-8")
|
||||
|
||||
obj, err := arn.Spaces.GetObject(ctx.Request().Context(), "arn", fmt.Sprintf("videos/anime/%s/%d.%s.vtt", anime.ID, episode.Number, language), minio.GetObjectOptions{})
|
||||
// obj, err := arn.Spaces.GetObject(ctx.Request().Context(), "arn", fmt.Sprintf("videos/anime/%s/%d.%s.vtt", anime.ID, episode.Number, language), minio.GetObjectOptions{})
|
||||
|
||||
if err != nil {
|
||||
return ctx.Error(http.StatusInternalServerError, err)
|
||||
}
|
||||
// if err != nil {
|
||||
// return ctx.Error(http.StatusInternalServerError, err)
|
||||
// }
|
||||
|
||||
defer obj.Close()
|
||||
return ctx.ReadAll(obj)
|
||||
// defer obj.Close()
|
||||
// return ctx.ReadAll(obj)
|
||||
return nil
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ component FrontPage
|
||||
|
||||
.bg-video-container
|
||||
video.bg-video(muted, autoplay, loop)
|
||||
source(src="https://arn.sfo2.cdn.digitaloceanspaces.com/videos/others/violet.webm", type="video/webm")
|
||||
source(src="https://notify.moe/videos/others/violet.webm", type="video/webm")
|
||||
|
||||
component Footer
|
||||
footer.footer.mountable
|
||||
|
@ -9,7 +9,7 @@ component SettingsExtras(user *arn.User)
|
||||
h3.widget-title
|
||||
Icon("puzzle-piece")
|
||||
span Apps
|
||||
|
||||
|
||||
.widget-section
|
||||
label Chrome Extension:
|
||||
a.button(href="https://chrome.google.com/webstore/detail/anime-notifier/hajchfikckiofgilinkpifobdbiajfch", target="_blank", rel="noopener")
|
||||
@ -39,29 +39,29 @@ component SettingsExtras(user *arn.User)
|
||||
h3.widget-title
|
||||
Icon("code")
|
||||
span Developer
|
||||
|
||||
|
||||
.widget-section
|
||||
label API:
|
||||
a.button(href="/api")
|
||||
Icon("code")
|
||||
span API
|
||||
|
||||
|
||||
.widget-section
|
||||
label GitHub:
|
||||
a.button(href="https://github.com/animenotifier/notify.moe")
|
||||
label Git:
|
||||
a.button(href="https://git.urbach.dev/web/notify.moe")
|
||||
Icon("github")
|
||||
span GitHub
|
||||
|
||||
span Git
|
||||
|
||||
//- PRO
|
||||
.widget.mountable(data-api="/api/settings/" + user.ID)
|
||||
h3.widget-title
|
||||
Icon("star")
|
||||
span PRO
|
||||
|
||||
|
||||
if user.IsPro()
|
||||
.widget-section
|
||||
label
|
||||
span Your PRO account expires in
|
||||
span Your PRO account expires in
|
||||
time.utc-date(datetime=user.ProExpires)
|
||||
span .
|
||||
a.button(href="/shop")
|
||||
|
@ -23,7 +23,7 @@ component ProUsers(users []*arn.User, url string)
|
||||
.user-cards
|
||||
each user in users
|
||||
UserCard(user, "until " + user.ProExpires[:10])
|
||||
|
||||
|
||||
footer.footer.mountable
|
||||
p We are thankful to everyone supporting the site!
|
||||
|
||||
@ -41,7 +41,7 @@ component UserLists(groups []*utils.UserList, url string)
|
||||
component StaffRecruitment
|
||||
footer.footer.mountable
|
||||
p
|
||||
a(href="https://github.com/animenotifier/notify.moe#installation", target="_blank", rel="noopener") Interested in contributing code?
|
||||
a(href="https://git.urbach.dev/web/notify.moe#installation", target="_blank", rel="noopener") Interested in contributing code?
|
||||
br
|
||||
a(href="https://discord.gg/0kimAmMCeXGXuzNF", target="_blank", rel="noopener") Interested in editing data?
|
||||
|
||||
|
Reference in New Issue
Block a user