710004dfc4
In no particular order... - Created projects using F# generator, using Paket and FAKE - Split "entities" into their own project, and created interface for data functions required on those entities - Renamed "data" project and used it as an implementation of data access - Created "logic" layer that takes the data interface, and does the non-persistence-related manipulation of items - Moved "web" project to "app", and modified Nancy modules to utilize Logic project and data interface instead of Data project and RethinkDB connection - Created test placeholder project; will be filling that out shortly (TAD?)
33 lines
1.2 KiB
Forth
33 lines
1.2 KiB
Forth
namespace MyWebLog
|
|
|
|
open MyWebLog.Data.RethinkDB
|
|
open Newtonsoft.Json
|
|
open System.Text
|
|
|
|
/// Configuration for this myWebLog instance
|
|
type AppConfig =
|
|
{ /// The text from which to derive salt to use for passwords
|
|
[<JsonProperty("password-salt")>]
|
|
PasswordSaltString : string
|
|
/// The text from which to derive salt to use for forms authentication
|
|
[<JsonProperty("auth-salt")>]
|
|
AuthSaltString : string
|
|
/// The encryption passphrase to use for forms authentication
|
|
[<JsonProperty("encryption-passphrase")>]
|
|
AuthEncryptionPassphrase : string
|
|
/// The HMAC passphrase to use for forms authentication
|
|
[<JsonProperty("hmac-passphrase")>]
|
|
AuthHmacPassphrase : string
|
|
/// The data configuration
|
|
[<JsonProperty("data")>]
|
|
DataConfig : DataConfig }
|
|
with
|
|
/// The salt to use for passwords
|
|
member this.PasswordSalt = Encoding.UTF8.GetBytes this.PasswordSaltString
|
|
/// The salt to use for forms authentication
|
|
member this.AuthSalt = Encoding.UTF8.GetBytes this.AuthSaltString
|
|
|
|
/// Deserialize the configuration from the JSON file
|
|
static member FromJson json =
|
|
let cfg = JsonConvert.DeserializeObject<AppConfig> json
|
|
{ cfg with DataConfig = DataConfig.Connect cfg.DataConfig } |