Rename project to Navidrome

This commit is contained in:
Deluan 2020-01-23 19:44:08 -05:00
parent aaefc6bfc7
commit bee55c04c8
93 changed files with 210 additions and 203 deletions

View File

@ -7,5 +7,5 @@ data
*.db
testDB
*_test.go
sonic-server
navidrome
assets/*gen.go

4
.gitignore vendored
View File

@ -1,7 +1,7 @@
.DS_Store
.idea
.envrc
/sonic-server
/navidrome
/iTunes*.xml
/tmp
data/*
@ -10,7 +10,7 @@ wiki
TODO.md
var
Artwork
sonic.toml
navidrome.toml
master.zip
Jamstash-master
testDB

View File

@ -1,14 +1,14 @@
### Supported Subsonic API endpoints
CloudSonic is currently compatible with [Subsonic API](subsonic.org/pages/api.jsp) v1.8.0, with some exceptions.
Navidrome is currently compatible with [Subsonic API](subsonic.org/pages/api.jsp) v1.8.0, with some exceptions.
This is an (almost) up to date list of all Subsonic API endpoints implemented by CloudSonic.
This is an (almost) up to date list of all Subsonic API endpoints implemented by Navidrome.
Check the "Notes" column for limitations/missing behaviour. Also keep in mind these differences between
CloudSonic and Subsonic:
Navidrome and Subsonic:
* Right now, CloudSonic only works with a single Music Library (Music Folder)
* CloudSonic does not mark songs as played by calls to `stream`, only when
* Right now, Navidrome only works with a single Music Library (Music Folder)
* Navidrome does not mark songs as played by calls to `stream`, only when
`scrobble` is called with `submission=true`
* Next features to be implemented: Playlists (WIP), MultiUser (WIP), Jukebox, Sharing, Podcasts, Bookmarks, Internet Radio.

View File

@ -40,14 +40,14 @@ RUN cd /tmp && tar xJf ffmpeg.tar.xz
#####################################################
### Build Final Image
FROM alpine
COPY --from=gobuilder /src/sonic-server /app/
COPY --from=gobuilder /src/navidrome /app/
COPY --from=gobuilder /tmp/ffmpeg*/ffmpeg /usr/bin/
VOLUME ["/data", "/music"]
ENV SONIC_DBPATH /data/cloudsonic.db
ENV SONIC_DBPATH /data/navidrome.db
ENV SONIC_MUSICFOLDER /music
ENV SONIC_LOGLEVEL info
EXPOSE 4533
WORKDIR /app
CMD "/app/sonic-server"
CMD "/app/navidrome"

View File

@ -1,9 +1,9 @@
# CloudSonic Server
# Navidrome Music Streamer
[![Build Status](https://github.com/cloudsonic/sonic-server/workflows/Build/badge.svg)](https://github.com/cloudsonic/sonic-server/actions)
[![Go Report Card](https://goreportcard.com/badge/github.com/cloudsonic/sonic-server)](https://goreportcard.com/report/github.com/cloudsonic/sonic-server)
[![Build Status](https://github.com/deluan/navidrome/workflows/Build/badge.svg)](https://github.com/deluan/navidrome/actions)
[![Go Report Card](https://goreportcard.com/badge/github.com/deluan/navidrome)](https://goreportcard.com/report/github.com/deluan/navidrome)
CloudSonic is a music collection server and streamer, allowing you to listen to your music collection from anywhere.
Navidrome is a music collection server and streamer, allowing you to listen to your music collection from anywhere.
It relies on the huge selection of available mobile and web apps compatible with [Subsonic](http://www.subsonic.org),
[Airsonic](https://airsonic.github.io/) and [Madsonic](https://www.madsonic.org/)
@ -41,7 +41,7 @@ Creating initial user. Please change the password! password=be32e686-d59b-4f57-
You can change this password using the UI. Just login in with this temporary password at http://localhost:4533
To change any configuration, create a file named `sonic.toml` in the project folder. For all options see the
To change any configuration, create a file named `navidrome.toml` in the project folder. For all options see the
[configuration.go](conf/configuration.go) file
### Development Environment
@ -66,6 +66,6 @@ $ make test
### Copying
CloudSonic - Copyright (C) 2017-2020 Deluan Cotts Quintao
Navidrome - Copyright (C) 2017-2020 Deluan Cotts Quintao
The source code is licensed under GNU Affero GPL v3. License is available [here](/LICENSE)

View File

@ -5,7 +5,7 @@ package assets
import (
"net/http"
"github.com/cloudsonic/sonic-server/consts"
"github.com/deluan/navidrome/consts"
)
func AssetFile() http.FileSystem {

View File

@ -3,14 +3,15 @@ package conf
import (
"os"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/consts"
"github.com/deluan/navidrome/log"
"github.com/koding/multiconfig"
)
type sonic struct {
Port string `default:"4533"`
MusicFolder string `default:"./music"`
DbPath string `default:"./data/cloudsonic.db"`
DbPath string `default:"./data/navidrome.db"`
LogLevel string `default:"info"`
IgnoredArticles string `default:"The El La Los Las Le Les Os As O A"`
@ -62,8 +63,8 @@ func LoadFromFile(tomlFile string) {
}
func LoadFromLocalFile() {
if _, err := os.Stat("./sonic.toml"); err == nil {
LoadFromFile("./sonic.toml")
if _, err := os.Stat(consts.LocalConfigFile); err == nil {
LoadFromFile(consts.LocalConfigFile)
}
}

View File

@ -3,10 +3,11 @@ package consts
import "time"
const (
LocalConfigFile = "./navidrome.toml"
InitialSetupFlagKey = "InitialSetup"
JWTSecretKey = "JWTSecret"
JWTIssuer = "CloudSonic"
JWTIssuer = "Navidrome"
JWTTokenExpiration = 30 * time.Minute
InitialUserName = "admin"

View File

@ -2,7 +2,7 @@
version: "3"
services:
cloudsonic:
navidrome:
build: .
ports:
- "4533:4533"

View File

@ -8,9 +8,9 @@ import (
"strings"
"time"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/utils"
)
type Browser interface {

View File

@ -4,8 +4,8 @@ import (
"context"
"errors"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/persistence"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/persistence"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -5,7 +5,7 @@ import (
"fmt"
"time"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type Entry struct {

View File

@ -12,7 +12,7 @@ import (
"os"
"strings"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
"github.com/dhowden/tag"
"github.com/nfnt/resize"
)

View File

@ -6,10 +6,10 @@ import (
"image"
"testing"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/persistence"
. "github.com/cloudsonic/sonic-server/tests"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/persistence"
. "github.com/deluan/navidrome/tests"
. "github.com/smartystreets/goconvey/convey"
)

View File

@ -3,7 +3,7 @@ package engine
import (
"testing"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/log"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -4,7 +4,7 @@ import (
"context"
"time"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type ListGenerator interface {

View File

@ -3,7 +3,7 @@ package engine
import (
"errors"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
func CreateMockPropertyRepo() *MockProperty {

View File

@ -3,9 +3,9 @@ package engine
import (
"context"
"github.com/cloudsonic/sonic-server/consts"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/consts"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/utils"
)
type Playlists interface {

View File

@ -3,8 +3,8 @@ package engine
import (
"context"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
)
type Ratings interface {

View File

@ -6,7 +6,7 @@ import (
"fmt"
"time"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type Scrobbler interface {

View File

@ -4,7 +4,7 @@ import (
"context"
"strings"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
"github.com/kennygrant/sanitize"
)

View File

@ -8,8 +8,8 @@ import (
"strconv"
"strings"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
)
// TODO Encapsulate as a io.Reader

View File

@ -3,7 +3,7 @@ package engine
import (
"testing"
. "github.com/cloudsonic/sonic-server/tests"
. "github.com/deluan/navidrome/tests"
. "github.com/smartystreets/goconvey/convey"
)

View File

@ -7,8 +7,8 @@ import (
"fmt"
"strings"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
)
type Users interface {

View File

@ -3,8 +3,8 @@ package engine
import (
"context"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/persistence"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/persistence"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

2
go.mod
View File

@ -1,4 +1,4 @@
module github.com/cloudsonic/sonic-server
module github.com/deluan/navidrome
go 1.13

View File

@ -1,8 +1,8 @@
package main
import (
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/server"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/server"
)
func main() {

View File

@ -7,8 +7,8 @@ import (
"github.com/Masterminds/squirrel"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
)
type album struct {

View File

@ -2,7 +2,7 @@ package persistence
import (
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -4,7 +4,7 @@ import (
"time"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
"github.com/google/uuid"
)

View File

@ -8,10 +8,10 @@ import (
"github.com/Masterminds/squirrel"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/utils"
)
type artist struct {

View File

@ -2,7 +2,7 @@ package persistence
import (
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -4,7 +4,7 @@ import (
"strconv"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type genreRepository struct {

View File

@ -2,7 +2,7 @@ package persistence
import (
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -7,7 +7,7 @@ import (
"github.com/Masterminds/squirrel"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type mediaFile struct {

View File

@ -5,7 +5,7 @@ import (
"path/filepath"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -2,8 +2,8 @@ package persistence
import (
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/model"
)
type mediaFolderRepository struct {

View File

@ -5,7 +5,7 @@ import (
"errors"
"fmt"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
func CreateMockAlbumRepo() *MockAlbum {

View File

@ -5,7 +5,7 @@ import (
"errors"
"fmt"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
func CreateMockArtistRepo() *MockArtist {

View File

@ -5,7 +5,7 @@ import (
"errors"
"fmt"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
func CreateMockMediaFileRepo() *MockMediaFile {

View File

@ -1,6 +1,6 @@
package persistence
import "github.com/cloudsonic/sonic-server/model"
import "github.com/deluan/navidrome/model"
type MockDataStore struct {
MockedGenre model.GenreRepository

View File

@ -6,9 +6,9 @@ import (
"sync"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
)

View File

@ -6,9 +6,9 @@ import (
"testing"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@ -60,7 +60,7 @@ func P(path string) string {
var _ = Describe("Initialize test DB", func() {
BeforeSuite(func() {
//log.SetLevel(log.LevelTrace)
//conf.Sonic.DbPath, _ = ioutil.TempDir("", "cloudsonic_tests")
//conf.Sonic.DbPath, _ = ioutil.TempDir("", "navidrome_tests")
//os.MkdirAll(conf.Sonic.DbPath, 0700)
conf.Sonic.DbPath = ":memory:"
ds := New()

View File

@ -4,7 +4,7 @@ import (
"strings"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
"github.com/google/uuid"
)

View File

@ -2,7 +2,7 @@ package persistence
import (
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type property struct {

View File

@ -2,7 +2,7 @@ package persistence
import (
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -7,7 +7,7 @@ import (
"strings"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
"github.com/deluan/rest"
"github.com/google/uuid"
)

View File

@ -5,7 +5,7 @@ import (
"github.com/Masterminds/squirrel"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/log"
"github.com/kennygrant/sanitize"
)

View File

@ -3,7 +3,7 @@ package persistence
import (
"github.com/Masterminds/squirrel"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
)
type sqlRepository struct {

View File

@ -4,7 +4,7 @@ import (
"time"
"github.com/astaxie/beego/orm"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
"github.com/deluan/rest"
)

View File

@ -1 +1 @@
-s -r "(\.go$$|sonic.toml)" -R "(Jamstash-master|^ui)" -- go run .
-s -r "(\.go$$|navidrome.toml)" -R "(Jamstash-master|^ui)" -- go run .

View File

@ -6,7 +6,7 @@ import (
"strings"
"time"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/log"
)
type dirInfo struct {

View File

@ -17,7 +17,7 @@ var _ = Describe("ChangeDetector", func() {
lastModifiedSince := time.Time{}
BeforeEach(func() {
testFolder, _ = ioutil.TempDir("", "cloudsonic_tests")
testFolder, _ = ioutil.TempDir("", "navidrome_tests")
err := os.MkdirAll(testFolder, 0700)
if err != nil {
panic(err)

View File

@ -12,8 +12,8 @@ import (
"strings"
"time"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
)
type Metadata struct {

View File

@ -7,8 +7,8 @@ import (
"strconv"
"time"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
)
type Scanner struct {

View File

@ -4,9 +4,9 @@ import (
"testing"
"time"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/persistence"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/persistence"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@ -25,7 +25,7 @@ var _ = XDescribe("TODO: REMOVE", func() {
ds := persistence.New()
t := NewTagScanner("/Users/deluan/Music/iTunes/iTunes Media/Music", ds)
//t := NewTagScanner("/Users/deluan/Development/cloudsonic/sonic-server/tests/fixtures", ds)
//t := NewTagScanner("/Users/deluan/Development/navidrome/navidrome/tests/fixtures", ds)
Expect(t.Scan(nil, time.Time{})).To(BeNil())
})
})

View File

@ -11,8 +11,8 @@ import (
"strings"
"time"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
)
type TagScanner struct {

View File

@ -6,9 +6,9 @@ import (
"net/url"
"strings"
"github.com/cloudsonic/sonic-server/assets"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/assets"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/model"
"github.com/deluan/rest"
"github.com/go-chi/chi"
"github.com/go-chi/jwtauth"

View File

@ -8,8 +8,8 @@ import (
"sync"
"time"
"github.com/cloudsonic/sonic-server/consts"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/consts"
"github.com/deluan/navidrome/model"
"github.com/deluan/rest"
"github.com/dgrijalva/jwt-go"
"github.com/go-chi/jwtauth"

View File

@ -1,19 +1,24 @@
package server
import "fmt"
import (
"encoding/base64"
"fmt"
)
// http://patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=Cloud%20Sonic
const banner = `
Version %s
// http://patorjk.com/software/taag/#p=display&f=Doom&t=Navidrome
// Need to be Base64 encoded, as it contains a lot of escaping chars.
// May try to find another way to do it without an external file
const encodedBanner = "IF8gICBfICAgICAgICAgICAgIF8gICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgIAp8IFwgfCB8ICAgICAgICAgIC" +
"AoXykgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgCnwgIFx8IHwgX18gX19fICAgX19fICBfX3wgfF8gX18gX19fICBfIF9fIF9fXyAgIF" +
"9fXyAKfCAuIGAgfC8gX2AgXCBcIC8gLyB8LyBfYCB8ICdfXy8gXyBcfCAnXyBgIF8gXCAvIF8gXAp8IHxcICB8IChffCB8XCBWIC98IHwgKF98IH" +
"wgfCB8IChfKSB8IHwgfCB8IHwgfCAgX18vClxffCBcXy9cX18sX3wgXF8vIHxffFxfXyxffF98ICBcX19fL3xffCB8X3wgfF98XF9fX3w="
const banner = `%s
Version %s
`
func ShowBanner() {
fmt.Printf(banner, Version)
decodedBanner, _ := base64.StdEncoding.DecodeString(encodedBanner)
fmt.Printf(banner, string(decodedBanner), Version)
}

View File

@ -4,10 +4,10 @@ import (
"fmt"
"time"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/consts"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/consts"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/google/uuid"
)

View File

@ -6,16 +6,16 @@ import (
"path/filepath"
"time"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/scanner"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/scanner"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/go-chi/cors"
)
const Version = "0.2"
const Version = "0.2.0"
type Server struct {
Scanner *scanner.Scanner
@ -41,7 +41,7 @@ func (a *Server) MountRouter(path string, subRouter http.Handler) {
}
func (a *Server) Run(addr string) {
log.Info("CloudSonic server is accepting requests", "address", addr)
log.Info("Navidrome server is accepting requests", "address", addr)
log.Error(http.ListenAndServe(addr, a.router))
}

View File

@ -5,10 +5,10 @@ import (
"errors"
"net/http"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/server/subsonic/responses"
"github.com/deluan/navidrome/utils"
)
type AlbumListController struct {

View File

@ -5,7 +5,7 @@ import (
"errors"
"net/http/httptest"
"github.com/cloudsonic/sonic-server/engine"
"github.com/deluan/navidrome/engine"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -6,9 +6,9 @@ import (
"fmt"
"net/http"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/server/subsonic/responses"
"github.com/go-chi/chi"
)

View File

@ -3,7 +3,7 @@ package subsonic
import (
"testing"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/log"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -5,12 +5,12 @@ import (
"net/http"
"time"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
"github.com/deluan/navidrome/utils"
)
type BrowsingController struct {

View File

@ -7,10 +7,10 @@ import (
"strings"
"time"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
"github.com/deluan/navidrome/utils"
)
func NewResponse() *responses.Subsonic {

View File

@ -5,10 +5,10 @@ import (
"net/http"
"time"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
)
type MediaAnnotationController struct {

View File

@ -5,10 +5,10 @@ import (
"net/http"
"os"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
)
type MediaRetrievalController struct {

View File

@ -6,7 +6,7 @@ import (
"io"
"net/http/httptest"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -5,10 +5,10 @@ import (
"fmt"
"net/http"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
)
func checkRequiredParameters(next http.Handler) http.Handler {

View File

@ -6,9 +6,9 @@ import (
"net/http/httptest"
"strings"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

View File

@ -5,10 +5,10 @@ import (
"fmt"
"net/http"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
)
type PlaylistsController struct {

View File

@ -1 +1 @@
{"status":"ok","version":"1.8.0","user":{"username":"deluan","email":"cloudsonic@deluan.com","scrobblingEnabled":false,"adminRole":false,"settingsRole":false,"downloadRole":false,"uploadRole":false,"playlistRole":false,"coverArtRole":false,"commentRole":false,"podcastRole":false,"streamRole":false,"jukeboxRole":false,"shareRole":false,"videoConversionRole":false,"folder":[1]}}
{"status":"ok","version":"1.8.0","user":{"username":"deluan","email":"navidrome@deluan.com","scrobblingEnabled":false,"adminRole":false,"settingsRole":false,"downloadRole":false,"uploadRole":false,"playlistRole":false,"coverArtRole":false,"commentRole":false,"podcastRole":false,"streamRole":false,"jukeboxRole":false,"shareRole":false,"videoConversionRole":false,"folder":[1]}}

View File

@ -1 +1 @@
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.8.0"><user username="deluan" email="cloudsonic@deluan.com" scrobblingEnabled="false" adminRole="false" settingsRole="false" downloadRole="false" uploadRole="false" playlistRole="false" coverArtRole="false" commentRole="false" podcastRole="false" streamRole="false" jukeboxRole="false" shareRole="false" videoConversionRole="false"><folder>1</folder></user></subsonic-response>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.8.0"><user username="deluan" email="navidrome@deluan.com" scrobblingEnabled="false" adminRole="false" settingsRole="false" downloadRole="false" uploadRole="false" playlistRole="false" coverArtRole="false" commentRole="false" podcastRole="false" streamRole="false" jukeboxRole="false" shareRole="false" videoConversionRole="false"><folder>1</folder></user></subsonic-response>

View File

@ -5,7 +5,7 @@ import (
"testing"
"github.com/bradleyjkemp/cupaloy"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/log"
"github.com/onsi/ginkgo"
"github.com/onsi/gomega"
"github.com/onsi/gomega/types"

View File

@ -10,7 +10,7 @@ import (
"encoding/xml"
"time"
. "github.com/cloudsonic/sonic-server/server/subsonic/responses"
. "github.com/deluan/navidrome/server/subsonic/responses"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@ -206,7 +206,7 @@ var _ = Describe("Responses", func() {
Context("with data", func() {
BeforeEach(func() {
response.User.Email = "cloudsonic@deluan.com"
response.User.Email = "navidrome@deluan.com"
response.User.Folder = []int{1}
})

View File

@ -4,9 +4,9 @@ import (
"fmt"
"net/http"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/server/subsonic/responses"
)
type SearchingController struct {

View File

@ -4,11 +4,11 @@ import (
"net/http"
"strconv"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/cloudsonic/sonic-server/utils"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/log"
"github.com/deluan/navidrome/model"
"github.com/deluan/navidrome/server/subsonic/responses"
"github.com/deluan/navidrome/utils"
)
type StreamController struct {

View File

@ -3,7 +3,7 @@ package subsonic
import (
"net/http"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/server/subsonic/responses"
)
type SystemController struct{}

View File

@ -3,7 +3,7 @@ package subsonic
import (
"net/http"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/server/subsonic/responses"
)
type UsersController struct{}

View File

@ -6,8 +6,8 @@ import (
"runtime"
"testing"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/log"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/log"
)
func Init(t *testing.T, skipOnShort bool) {
@ -16,7 +16,7 @@ func Init(t *testing.T, skipOnShort bool) {
}
_, file, _, _ := runtime.Caller(0)
appPath, _ := filepath.Abs(filepath.Join(filepath.Dir(file), ".."))
confPath, _ := filepath.Abs(filepath.Join(appPath, "tests", "sonic-test.toml"))
confPath, _ := filepath.Abs(filepath.Join(appPath, "tests", "navidrome-test.toml"))
os.Chdir(appPath)
conf.LoadFromFile(confPath)

View File

@ -7,7 +7,7 @@ import (
"encoding/xml"
"fmt"
"github.com/cloudsonic/sonic-server/server/subsonic/responses"
"github.com/deluan/navidrome/server/subsonic/responses"
"github.com/smartystreets/goconvey/convey"
)

2
ui/package-lock.json generated
View File

@ -1,5 +1,5 @@
{
"name": "sonic-ui",
"name": "navidrome-ui",
"version": "0.1.0",
"lockfileVersion": 1,
"requires": true,

View File

@ -1,5 +1,5 @@
{
"name": "sonic-ui",
"name": "navidrome-ui",
"version": "0.1.0",
"private": true,
"dependencies": {

View File

@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>Cloud Sonic</title>
<title>Navidrome</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

View File

@ -1,7 +1,7 @@
import React from 'react'
const Title = ({ subTitle }) => {
return <span>CloudSonic {subTitle ? ` - ${subTitle}` : ''}</span>
return <span>Navidrome {subTitle ? ` - ${subTitle}` : ''}</span>
}
export default Title

View File

@ -119,7 +119,7 @@ const Login = ({ location }) => {
<LockIcon />
</Avatar>
</div>
<div className={classes.systemName}>CloudSonic</div>
<div className={classes.systemName}>Navidrome</div>
<div className={classes.form}>
<div className={classes.input}>
<Field

View File

@ -3,7 +3,7 @@ package utils
import (
"strings"
"github.com/cloudsonic/sonic-server/conf"
"github.com/deluan/navidrome/conf"
)
func NoArticle(name string) string {

View File

@ -6,12 +6,12 @@
package main
import (
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/persistence"
"github.com/cloudsonic/sonic-server/scanner"
"github.com/cloudsonic/sonic-server/server"
"github.com/cloudsonic/sonic-server/server/app"
"github.com/cloudsonic/sonic-server/server/subsonic"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/persistence"
"github.com/deluan/navidrome/scanner"
"github.com/deluan/navidrome/server"
"github.com/deluan/navidrome/server/app"
"github.com/deluan/navidrome/server/subsonic"
"github.com/google/wire"
)

View File

@ -3,12 +3,12 @@
package main
import (
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/persistence"
"github.com/cloudsonic/sonic-server/scanner"
"github.com/cloudsonic/sonic-server/server"
"github.com/cloudsonic/sonic-server/server/app"
"github.com/cloudsonic/sonic-server/server/subsonic"
"github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/persistence"
"github.com/deluan/navidrome/scanner"
"github.com/deluan/navidrome/server"
"github.com/deluan/navidrome/server/app"
"github.com/deluan/navidrome/server/subsonic"
"github.com/google/wire"
)