package main
import (
"fmt"
"path/filepath"
"strconv"
"strings"
"gopkg.in/ini.v1"
)
/ * var DeCamel ini . NameMapper = func ( raw string ) string {
out := make ( [ ] rune , 0 , len ( raw ) )
upper := 0
for _ , c := range raw {
if unicode . IsUpper ( c ) {
upper ++
}
if upper == 2 {
out = append ( out , '_' )
upper = 0
}
out = append ( out , unicode . ToLower ( c ) )
}
return string ( out )
}
func ( app * appContext ) loadDefaults ( ) ( err error ) {
var cfb [ ] byte
cfb , err = ioutil . ReadFile ( app . configBase_path )
if err != nil {
return
}
json . Unmarshal ( cfb , app . defaults )
return
} * /
func ( app * appContext ) loadConfig ( ) error {
var err error
app . config , err = ini . Load ( app . configPath )
if err != nil {
return err
}
app . config . Section ( "jellyfin" ) . Key ( "public_server" ) . SetValue ( app . config . Section ( "jellyfin" ) . Key ( "public_server" ) . MustString ( app . config . Section ( "jellyfin" ) . Key ( "server" ) . String ( ) ) )
for _ , key := range app . config . Section ( "files" ) . Keys ( ) {
// if key.MustString("") == "" && key.Name() != "custom_css" {
// key.SetValue(filepath.Join(app.data_path, (key.Name() + ".json")))
// }
if key . Name ( ) != "html_templates" {
key . SetValue ( key . MustString ( filepath . Join ( app . dataPath , ( key . Name ( ) + ".json" ) ) ) )
}
}
for _ , key := range [ ] string { "user_configuration" , "user_displayprefs" , "user_profiles" , "ombi_template" } {
// if app.config.Section("files").Key(key).MustString("") == "" {
// key.SetValue(filepath.Join(app.data_path, (key.Name() + ".json")))
// }
app . config . Section ( "files" ) . Key ( key ) . SetValue ( app . config . Section ( "files" ) . Key ( key ) . MustString ( filepath . Join ( app . dataPath , ( key + ".json" ) ) ) )
}
app . URLBase = strings . TrimSuffix ( app . config . Section ( "ui" ) . Key ( "url_base" ) . MustString ( "" ) , "/" )
app . config . Section ( "email" ) . Key ( "no_username" ) . SetValue ( strconv . FormatBool ( app . config . Section ( "email" ) . Key ( "no_username" ) . MustBool ( false ) ) )
app . config . Section ( "password_resets" ) . Key ( "email_html" ) . SetValue ( app . config . Section ( "password_resets" ) . Key ( "email_html" ) . MustString ( filepath . Join ( app . localPath , "email.html" ) ) )
app . config . Section ( "password_resets" ) . Key ( "email_text" ) . SetValue ( app . config . Section ( "password_resets" ) . Key ( "email_text" ) . MustString ( filepath . Join ( app . localPath , "email.txt" ) ) )
app . config . Section ( "invite_emails" ) . Key ( "email_html" ) . SetValue ( app . config . Section ( "invite_emails" ) . Key ( "email_html" ) . MustString ( filepath . Join ( app . localPath , "invite-email.html" ) ) )
app . config . Section ( "invite_emails" ) . Key ( "email_text" ) . SetValue ( app . config . Section ( "invite_emails" ) . Key ( "email_text" ) . MustString ( filepath . Join ( app . localPath , "invite-email.txt" ) ) )
app . config . Section ( "notifications" ) . Key ( "expiry_html" ) . SetValue ( app . config . Section ( "notifications" ) . Key ( "expiry_html" ) . MustString ( filepath . Join ( app . localPath , "expired.html" ) ) )
app . config . Section ( "notifications" ) . Key ( "expiry_text" ) . SetValue ( app . config . Section ( "notifications" ) . Key ( "expiry_text" ) . MustString ( filepath . Join ( app . localPath , "expired.txt" ) ) )
app . config . Section ( "notifications" ) . Key ( "created_html" ) . SetValue ( app . config . Section ( "notifications" ) . Key ( "created_html" ) . MustString ( filepath . Join ( app . localPath , "created.html" ) ) )
app . config . Section ( "notifications" ) . Key ( "created_text" ) . SetValue ( app . config . Section ( "notifications" ) . Key ( "created_text" ) . MustString ( filepath . Join ( app . localPath , "created.txt" ) ) )
app . config . Section ( "deletion" ) . Key ( "email_html" ) . SetValue ( app . config . Section ( "deletion" ) . Key ( "email_html" ) . MustString ( filepath . Join ( app . localPath , "deleted.html" ) ) )
app . config . Section ( "deletion" ) . Key ( "email_text" ) . SetValue ( app . config . Section ( "deletion" ) . Key ( "email_text" ) . MustString ( filepath . Join ( app . localPath , "deleted.txt" ) ) )
app . config . Section ( "jellyfin" ) . Key ( "version" ) . SetValue ( VERSION )
app . config . Section ( "jellyfin" ) . Key ( "device" ) . SetValue ( "jfa-go" )
app . config . Section ( "jellyfin" ) . Key ( "device_id" ) . SetValue ( fmt . Sprintf ( "jfa-go-%s-%s" , VERSION , COMMIT ) )
app . email = NewEmailer ( app )
return nil
}