NuGet dep on WoofWare.Myriad
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/all-checks-complete Pipeline was successful

This commit is contained in:
Smaug123
2023-12-27 23:28:05 +00:00
parent 5fd1a52bd8
commit ba0abf95f7
7 changed files with 476 additions and 333 deletions

View File

@@ -11,58 +11,87 @@ module TestJson =
let gymOpeningHoursCases =
[
"""{"openingHours": [], "isAlwaysOpen": false}""", { GymOpeningHours.OpeningHours = [] ; IsAlwaysOpen = false }
"""{"openingHours": ["something"], "isAlwaysOpen": false}""", { GymOpeningHours.OpeningHours = ["something"] ; IsAlwaysOpen = false }
"""{"openingHours": [], "isAlwaysOpen": false}""",
{
GymOpeningHours.OpeningHours = []
IsAlwaysOpen = false
}
"""{"openingHours": ["something"], "isAlwaysOpen": false}""",
{
GymOpeningHours.OpeningHours = [ "something" ]
IsAlwaysOpen = false
}
]
|> List.map TestCaseData
[<TestCaseSource (nameof(gymOpeningHoursCases))>]
[<TestCaseSource(nameof (gymOpeningHoursCases))>]
let ``GymOpeningHours JSON parse`` (json : string, expected : GymOpeningHours) =
JsonNode.Parse json
|> GymOpeningHours.jsonParse
|> shouldEqual expected
JsonNode.Parse json |> GymOpeningHours.jsonParse |> shouldEqual expected
let gymAccessOptionsCases =
List.allPairs [ true ; false ] [ true ; false ]
|> List.map (fun (a, b) ->
let s = sprintf """{"pinAccess": %b, "qrCodeAccess": %b}""" a b
s, { GymAccessOptions.PinAccess = a ; QrCodeAccess = b }
s,
{
GymAccessOptions.PinAccess = a
QrCodeAccess = b
}
)
|> List.map TestCaseData
[<TestCaseSource (nameof(gymAccessOptionsCases))>]
[<TestCaseSource(nameof (gymAccessOptionsCases))>]
let ``GymAccessOptions JSON parse`` (json : string, expected : GymAccessOptions) =
JsonNode.Parse json
|> GymAccessOptions.jsonParse
|> shouldEqual expected
JsonNode.Parse json |> GymAccessOptions.jsonParse |> shouldEqual expected
let gymLocationCases =
[
"""{"latitude": 1.0, "longitude": 3.0}""", { GymLocation.Latitude = 1.0 ; Longitude = 3.0 }
"""{"latitude": 1.0, "longitude": 3.0}""",
{
GymLocation.Latitude = 1.0
Longitude = 3.0
}
]
|> List.map TestCaseData
[<TestCaseSource (nameof(gymLocationCases))>]
[<TestCaseSource(nameof (gymLocationCases))>]
let ``GymLocation JSON parse`` (json : string, expected : GymLocation) =
JsonNode.Parse json
|> GymLocation.jsonParse
|> shouldEqual expected
JsonNode.Parse json |> GymLocation.jsonParse |> shouldEqual expected
let gymAddressCases =
[
"""{"addressLine1": "", "postCode": "hi", "town": ""}""", { GymAddress.AddressLine1 = "" ; AddressLine2 = None ; AddressLine3 = None ; County = None ; Postcode = "hi" ; Town = "" }
"""{"addressLine1": "", "addressLine2": null, "postCode": "hi", "town": ""}""", { GymAddress.AddressLine1 = "" ; AddressLine2 = None ; AddressLine3 = None ; County = None ; Postcode = "hi" ; Town = "" }
"""{"addressLine1": "", "postCode": "hi", "town": ""}""",
{
GymAddress.AddressLine1 = ""
AddressLine2 = None
AddressLine3 = None
County = None
Postcode = "hi"
Town = ""
}
"""{"addressLine1": "", "addressLine2": null, "postCode": "hi", "town": ""}""",
{
GymAddress.AddressLine1 = ""
AddressLine2 = None
AddressLine3 = None
County = None
Postcode = "hi"
Town = ""
}
]
|> List.map TestCaseData
[<TestCaseSource (nameof(gymAddressCases))>]
[<TestCaseSource(nameof (gymAddressCases))>]
let ``GymAddress JSON parse`` (json : string, expected : GymAddress) =
JsonNode.Parse (json, Nullable (JsonNodeOptions(PropertyNameCaseInsensitive = true)))
JsonNode.Parse (json, Nullable (JsonNodeOptions (PropertyNameCaseInsensitive = true)))
|> GymAddress.jsonParse
|> shouldEqual expected
let gymCases =
let ovalJson = """{"name":"London Oval","id":19,"status":2,"address":{"addressLine1":"Canterbury Court","addressLine2":"Units 4, 4A, 5 And 5A","addressLine3":"Kennington Park","town":"LONDON","county":null,"postcode":"SW9 6DE"},"phoneNumber":"+44 3444770005","emailAddress":"info.londonoval@puregym.com","staffMembers":null,"gymOpeningHours":{"isAlwaysOpen":true,"openingHours":[]},"reasonsToJoin":null,"accessOptions":{"pinAccess":true,"qrCodeAccess":true},"virtualTourUrl":null,"personalTrainersUrl":null,"webViewUrl":null,"floorPlanUrl":null,"location":{"longitude":"-0.110252","latitude":"51.480401"},"timeZone":"Europe/London","reopenDate":"2021-04-12T00:00:00+01 Europe/London"}"""
let ovalJson =
"""{"name":"London Oval","id":19,"status":2,"address":{"addressLine1":"Canterbury Court","addressLine2":"Units 4, 4A, 5 And 5A","addressLine3":"Kennington Park","town":"LONDON","county":null,"postcode":"SW9 6DE"},"phoneNumber":"+44 3444770005","emailAddress":"info.londonoval@puregym.com","staffMembers":null,"gymOpeningHours":{"isAlwaysOpen":true,"openingHours":[]},"reasonsToJoin":null,"accessOptions":{"pinAccess":true,"qrCodeAccess":true},"virtualTourUrl":null,"personalTrainersUrl":null,"webViewUrl":null,"floorPlanUrl":null,"location":{"longitude":"-0.110252","latitude":"51.480401"},"timeZone":"Europe/London","reopenDate":"2021-04-12T00:00:00+01 Europe/London"}"""
let oval =
{
Gym.Name = "London Oval"
@@ -84,21 +113,25 @@ module TestJson =
IsAlwaysOpen = true
OpeningHours = []
}
AccessOptions = { PinAccess = true ; QrCodeAccess = true }
Location = { Longitude = -0.110252 ; Latitude = 51.480401 }
AccessOptions =
{
PinAccess = true
QrCodeAccess = true
}
Location =
{
Longitude = -0.110252
Latitude = 51.480401
}
TimeZone = "Europe/London"
ReopenDate = "2021-04-12T00:00:00+01 Europe/London"
}
[
ovalJson, oval
]
|> List.map TestCaseData
[<TestCaseSource (nameof(gymCases))>]
[ ovalJson, oval ] |> List.map TestCaseData
[<TestCaseSource(nameof (gymCases))>]
let ``Gym JSON parse`` (json : string, expected : Gym) =
JsonNode.Parse json
|> Gym.jsonParse
|> shouldEqual expected
JsonNode.Parse json |> Gym.jsonParse |> shouldEqual expected
let memberCases =
let me =
@@ -119,7 +152,9 @@ module TestJson =
SuspendedReason = 0
MemberStatus = 2
}
let meJson = """{
let meJson =
"""{
"id": 1234567,
"compoundMemberId": "12A123456",
"firstName": "Patrick",
@@ -136,20 +171,16 @@ module TestJson =
"suspendedReason": 0,
"memberStatus": 2
}"""
[
meJson, me
]
|> List.map TestCaseData
[<TestCaseSource (nameof memberCases)>]
[ meJson, me ] |> List.map TestCaseData
[<TestCaseSource(nameof memberCases)>]
let ``Member JSON parse`` (json : string, expected : Member) =
json
|> JsonNode.Parse
|> Member.jsonParse
|> shouldEqual expected
json |> JsonNode.Parse |> Member.jsonParse |> shouldEqual expected
let gymAttendanceCases =
let json = """{
let json =
"""{
"description": "65",
"totalPeopleInGym": 65,
"totalPeopleInClasses": 2,
@@ -160,6 +191,7 @@ module TestJson =
"lastRefreshedPeopleInClasses": "2023-12-27T18:50:26.0782286Z",
"maximumCapacity": 0
}"""
let expected =
{
Description = "65"
@@ -167,47 +199,49 @@ module TestJson =
TotalPeopleInClasses = 2
TotalPeopleSuffix = None
IsApproximate = false
AttendanceTime = DateTime (2023, 12, 27, 18, 54, 09, 510, 169, DateTimeKind.Utc) + TimeSpan.FromTicks 7L
LastRefreshed = DateTime (2023, 12, 27, 18, 54, 09, 510, 169, DateTimeKind.Utc) + TimeSpan.FromTicks 7L
LastRefreshedPeopleInClasses = DateTime (2023, 12, 27, 18, 50, 26, 078, 228, DateTimeKind.Utc) + TimeSpan.FromTicks 6L
AttendanceTime =
DateTime (2023, 12, 27, 18, 54, 09, 510, 169, DateTimeKind.Utc)
+ TimeSpan.FromTicks 7L
LastRefreshed =
DateTime (2023, 12, 27, 18, 54, 09, 510, 169, DateTimeKind.Utc)
+ TimeSpan.FromTicks 7L
LastRefreshedPeopleInClasses =
DateTime (2023, 12, 27, 18, 50, 26, 078, 228, DateTimeKind.Utc)
+ TimeSpan.FromTicks 6L
MaximumCapacity = 0
}
[
json, expected
]
|> List.map TestCaseData
[<TestCaseSource (nameof gymAttendanceCases)>]
[ json, expected ] |> List.map TestCaseData
[<TestCaseSource(nameof gymAttendanceCases)>]
let ``GymAttendance JSON parse`` (json : string, expected : GymAttendance) =
json
|> JsonNode.Parse
|> GymAttendance.jsonParse
|> shouldEqual expected
json |> JsonNode.Parse |> GymAttendance.jsonParse |> shouldEqual expected
let memberActivityDtoCases =
let json = """{"totalDuration":2217,"averageDuration":48,"totalVisits":46,"totalClasses":0,"isEstimated":false,"lastRefreshed":"2023-12-27T19:00:56.0309892Z"}"""
let value = {
TotalDuration = 2217
AverageDuration = 48
TotalVisits = 46
TotalClasses = 0
IsEstimated = false
LastRefreshed = DateTime (2023, 12, 27, 19, 00, 56, 030, 989, DateTimeKind.Utc) + TimeSpan.FromTicks 2L
}
[
json, value
]
|> List.map TestCaseData
let json =
"""{"totalDuration":2217,"averageDuration":48,"totalVisits":46,"totalClasses":0,"isEstimated":false,"lastRefreshed":"2023-12-27T19:00:56.0309892Z"}"""
[<TestCaseSource (nameof memberActivityDtoCases)>]
let value =
{
TotalDuration = 2217
AverageDuration = 48
TotalVisits = 46
TotalClasses = 0
IsEstimated = false
LastRefreshed =
DateTime (2023, 12, 27, 19, 00, 56, 030, 989, DateTimeKind.Utc)
+ TimeSpan.FromTicks 2L
}
[ json, value ] |> List.map TestCaseData
[<TestCaseSource(nameof memberActivityDtoCases)>]
let ``MemberActivityDto JSON parse`` (json : string, expected : MemberActivityDto) =
json
|> JsonNode.Parse
|> MemberActivityDto.jsonParse
|> shouldEqual expected
json |> JsonNode.Parse |> MemberActivityDto.jsonParse |> shouldEqual expected
let sessionsCases =
let json = """{
let json =
"""{
"Summary":{"Total":{"Activities":0,"Visits":10,"Duration":445},"ThisWeek":{"Activities":0,"Visits":0,"Duration":0}},
"Visits":[
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-21T10:12:00","Duration":50,"Name":null},
@@ -222,50 +256,55 @@ module TestJson =
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-01T21:41:00","Duration":29,"Name":null}],
"Activities":[]}
"""
let singleVisit startTime duration =
{
IsDurationEstimated = false
Gym = {
Id = 19
Name = "London Oval"
Status = "Blocked"
}
StartTime = startTime
Duration = duration
IsDurationEstimated = false
Gym =
{
Id = 19
Name = "London Oval"
Status = "Blocked"
}
StartTime = startTime
Duration = duration
}
let expected = {
Summary = {
Total = {
Activities = 0
Visits = 10
Duration = 445
}
ThisWeek = {
Activities = 0
Visits = 0
Duration = 0
}
}
Visits =
[
singleVisit (DateTime (2023, 12, 21, 10, 12, 00)) 50
singleVisit (DateTime (2023, 12, 20, 12, 05, 00)) 80
singleVisit (DateTime (2023, 12, 17, 19, 37, 00)) 46
singleVisit (DateTime (2023, 12, 16, 12, 19, 00)) 37
singleVisit (DateTime (2023, 12, 15, 11, 14, 00)) 47
singleVisit (DateTime (2023, 12, 13, 10, 30, 00)) 36
singleVisit (DateTime (2023, 12, 10, 16, 18, 00)) 32
singleVisit (DateTime (2023, 12, 05, 22, 36, 00)) 40
singleVisit (DateTime (2023, 12, 03, 17, 59, 00)) 48
singleVisit (DateTime (2023, 12, 01, 21, 41, 00)) 29
]
}
[
json, expected
]
|> List.map TestCaseData
[<TestCaseSource (nameof sessionsCases)>]
let expected =
{
Summary =
{
Total =
{
Activities = 0
Visits = 10
Duration = 445
}
ThisWeek =
{
Activities = 0
Visits = 0
Duration = 0
}
}
Visits =
[
singleVisit (DateTime (2023, 12, 21, 10, 12, 00)) 50
singleVisit (DateTime (2023, 12, 20, 12, 05, 00)) 80
singleVisit (DateTime (2023, 12, 17, 19, 37, 00)) 46
singleVisit (DateTime (2023, 12, 16, 12, 19, 00)) 37
singleVisit (DateTime (2023, 12, 15, 11, 14, 00)) 47
singleVisit (DateTime (2023, 12, 13, 10, 30, 00)) 36
singleVisit (DateTime (2023, 12, 10, 16, 18, 00)) 32
singleVisit (DateTime (2023, 12, 05, 22, 36, 00)) 40
singleVisit (DateTime (2023, 12, 03, 17, 59, 00)) 48
singleVisit (DateTime (2023, 12, 01, 21, 41, 00)) 29
]
}
[ json, expected ] |> List.map TestCaseData
[<TestCaseSource(nameof sessionsCases)>]
let ``Sessions JSON parse`` (json : string, expected : Sessions) =
json
|> fun o -> JsonNode.Parse (o, Nullable (JsonNodeOptions (PropertyNameCaseInsensitive = true)))

View File

@@ -6,8 +6,6 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "PureGym.App", "PureGym.App\
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "PureGym.Test", "PureGym.Test\PureGym.Test.fsproj", "{F09DF609-5F53-4BB3-BD64-DDB136CD4D2E}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "MyriadPlugin", "..\MyriadPlugin\MyriadPlugin\MyriadPlugin.fsproj", "{5D1BEE42-EA5E-4F1B-8CDA-37846E68D76E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -26,9 +24,5 @@ Global
{F09DF609-5F53-4BB3-BD64-DDB136CD4D2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F09DF609-5F53-4BB3-BD64-DDB136CD4D2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F09DF609-5F53-4BB3-BD64-DDB136CD4D2E}.Release|Any CPU.Build.0 = Release|Any CPU
{5D1BEE42-EA5E-4F1B-8CDA-37846E68D76E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D1BEE42-EA5E-4F1B-8CDA-37846E68D76E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D1BEE42-EA5E-4F1B-8CDA-37846E68D76E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D1BEE42-EA5E-4F1B-8CDA-37846E68D76E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View File

@@ -3,8 +3,7 @@ namespace PureGym
open System
open System.Text.Json.Serialization
/// Describes the opening hours of a given gym.
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type GymOpeningHours =
{
/// If this is true, there should be no OpeningHours (but nothing enforces that).
@@ -21,7 +20,7 @@ type GymOpeningHours =
this.OpeningHours |> String.concat ", "
/// How a human can authenticate with a gym when they physically try to enter it
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type GymAccessOptions =
{
/// This gym has PIN entry pads
@@ -35,19 +34,19 @@ type GymAccessOptions =
$"Pin access: %c{Char.emoji this.PinAccess}; QR code access: %c{Char.emoji this.QrCodeAccess}"
/// Where a gym is on the Earth
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type GymLocation =
{
/// Measured in degrees
[<JsonNumberHandling (JsonNumberHandling.AllowReadingFromString)>]
[<JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)>]
Longitude : float
/// Measured in degrees
[<JsonNumberHandling (JsonNumberHandling.AllowReadingFromString)>]
[<JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)>]
Latitude : float
}
/// The postal address of a gym
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type GymAddress =
{
/// E.g. "Canterbury Court"
@@ -82,7 +81,7 @@ type GymAddress =
|> String.concat "\n"
/// Metadata about a physical gym
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type Gym =
{
// The following fields are returned but are always null
@@ -137,7 +136,7 @@ Opening hours: %s{string<GymOpeningHours> this.GymOpeningHours}
"""
/// A human member of PureGym
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type Member =
{
/// This member's ID. This is a fairly large number.
@@ -173,7 +172,7 @@ type Member =
}
/// Statistics for how many people are currently at a gym
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type GymAttendance =
{
/// This appears always to be just equal to TotalPeopleInGym, but a string.
@@ -242,7 +241,7 @@ type MemberActivityThisMonth =
}
/// Don't use this type. It's public because System.Text.Json can't do private types.
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type MemberActivityDto =
{
[<JsonRequired>]
@@ -269,7 +268,7 @@ type MemberActivityDto =
LastRefreshed = this.LastRefreshed
}
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type SessionsAggregate =
{
/// Number of gym "activities" within some query-defined time period; presumably this is like classes?
@@ -282,7 +281,7 @@ type SessionsAggregate =
}
/// The DTO for gym info returned from the Sessions endpoint.
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type VisitGym =
{
// Omitting Location, GymAccess, ContactInfo, TimeZone because these were all null for me
@@ -295,7 +294,7 @@ type VisitGym =
}
/// Summary of a single visit to a gym.
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type Visit =
{
// Omitted Name because it always was null for me
@@ -315,7 +314,7 @@ type Visit =
$"%s{this.Gym.Name}: %s{startTime} (%i{this.Duration} minutes)"
/// Aggregate statistics for gym visits across a time period.
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type SessionsSummary =
{
/// Aggregate stats for gym visits within the query-dependent time period.
@@ -328,7 +327,7 @@ type SessionsSummary =
override this.ToString () =
$"%i{this.Total.Visits} visits, totalling %i{this.Total.Duration} minutes"
[<MyriadPlugin.JsonParse>]
[<WoofWare.Myriad.Plugins.JsonParse>]
type Sessions =
{
Summary : SessionsSummary

View File

@@ -10,16 +10,18 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module GymOpeningHours =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : GymOpeningHours =
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : GymOpeningHours =
let OpeningHours =
node.["openingHours"].AsArray()
|> Seq.map (fun elt -> elt.AsValue().GetValue<string>())
node.["openingHours"].AsArray ()
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|> List.ofSeq
let IsAlwaysOpen = node.["isAlwaysOpen"].AsValue().GetValue<bool>()
let IsAlwaysOpen = node.["isAlwaysOpen"].AsValue().GetValue<bool> ()
{ IsAlwaysOpen = IsAlwaysOpen
OpeningHours = OpeningHours }
{
IsAlwaysOpen = IsAlwaysOpen
OpeningHours = OpeningHours
}
namespace PureGym
/// Module containing JSON parsing methods for the GymAccessOptions type
@@ -27,12 +29,14 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module GymAccessOptions =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : GymAccessOptions =
let QrCodeAccess = node.["qrCodeAccess"].AsValue().GetValue<bool>()
let PinAccess = node.["pinAccess"].AsValue().GetValue<bool>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : GymAccessOptions =
let QrCodeAccess = node.["qrCodeAccess"].AsValue().GetValue<bool> ()
let PinAccess = node.["pinAccess"].AsValue().GetValue<bool> ()
{ PinAccess = PinAccess
QrCodeAccess = QrCodeAccess }
{
PinAccess = PinAccess
QrCodeAccess = QrCodeAccess
}
namespace PureGym
/// Module containing JSON parsing methods for the GymLocation type
@@ -40,16 +44,16 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module GymLocation =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : GymLocation =
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : GymLocation =
let Latitude =
try
node.["latitude"].AsValue().GetValue<float>()
node.["latitude"].AsValue().GetValue<float> ()
with :? System.InvalidOperationException as exc ->
if exc.Message.Contains "cannot be converted to" then
if
System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString = System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString
then
node.["latitude"].AsValue().GetValue<string>() |> System.Double.Parse
node.["latitude"].AsValue().GetValue<string> () |> System.Double.Parse
else
reraise ()
else
@@ -57,20 +61,22 @@ module GymLocation =
let Longitude =
try
node.["longitude"].AsValue().GetValue<float>()
node.["longitude"].AsValue().GetValue<float> ()
with :? System.InvalidOperationException as exc ->
if exc.Message.Contains "cannot be converted to" then
if
System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString = System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString
then
node.["longitude"].AsValue().GetValue<string>() |> System.Double.Parse
node.["longitude"].AsValue().GetValue<string> () |> System.Double.Parse
else
reraise ()
else
reraise ()
{ Longitude = Longitude
Latitude = Latitude }
{
Longitude = Longitude
Latitude = Latitude
}
namespace PureGym
/// Module containing JSON parsing methods for the GymAddress type
@@ -78,34 +84,36 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module GymAddress =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : GymAddress =
let Postcode = node.["postcode"].AsValue().GetValue<string>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : GymAddress =
let Postcode = node.["postcode"].AsValue().GetValue<string> ()
let County =
match node.["county"] with
| null -> None
| v -> v.AsValue().GetValue<string>() |> Some
| v -> v.AsValue().GetValue<string> () |> Some
let Town = node.["town"].AsValue().GetValue<string>()
let Town = node.["town"].AsValue().GetValue<string> ()
let AddressLine3 =
match node.["addressLine3"] with
| null -> None
| v -> v.AsValue().GetValue<string>() |> Some
| v -> v.AsValue().GetValue<string> () |> Some
let AddressLine2 =
match node.["addressLine2"] with
| null -> None
| v -> v.AsValue().GetValue<string>() |> Some
| v -> v.AsValue().GetValue<string> () |> Some
let AddressLine1 = node.["addressLine1"].AsValue().GetValue<string>()
let AddressLine1 = node.["addressLine1"].AsValue().GetValue<string> ()
{ AddressLine1 = AddressLine1
AddressLine2 = AddressLine2
AddressLine3 = AddressLine3
Town = Town
County = County
Postcode = Postcode }
{
AddressLine1 = AddressLine1
AddressLine2 = AddressLine2
AddressLine3 = AddressLine3
Town = Town
County = County
Postcode = Postcode
}
namespace PureGym
/// Module containing JSON parsing methods for the Gym type
@@ -113,30 +121,32 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Gym =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : Gym =
let ReopenDate = node.["reopenDate"].AsValue().GetValue<string>()
let TimeZone = node.["timeZone"].AsValue().GetValue<string>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : Gym =
let ReopenDate = node.["reopenDate"].AsValue().GetValue<string> ()
let TimeZone = node.["timeZone"].AsValue().GetValue<string> ()
let Location = GymLocation.jsonParse node.["location"]
let AccessOptions = GymAccessOptions.jsonParse node.["accessOptions"]
let GymOpeningHours = GymOpeningHours.jsonParse node.["gymOpeningHours"]
let EmailAddress = node.["emailAddress"].AsValue().GetValue<string>()
let PhoneNumber = node.["phoneNumber"].AsValue().GetValue<string>()
let EmailAddress = node.["emailAddress"].AsValue().GetValue<string> ()
let PhoneNumber = node.["phoneNumber"].AsValue().GetValue<string> ()
let Address = GymAddress.jsonParse node.["address"]
let Status = node.["status"].AsValue().GetValue<int>()
let Id = node.["id"].AsValue().GetValue<int>()
let Name = node.["name"].AsValue().GetValue<string>()
let Status = node.["status"].AsValue().GetValue<int> ()
let Id = node.["id"].AsValue().GetValue<int> ()
let Name = node.["name"].AsValue().GetValue<string> ()
{ Name = Name
Id = Id
Status = Status
Address = Address
PhoneNumber = PhoneNumber
EmailAddress = EmailAddress
GymOpeningHours = GymOpeningHours
AccessOptions = AccessOptions
Location = Location
TimeZone = TimeZone
ReopenDate = ReopenDate }
{
Name = Name
Id = Id
Status = Status
Address = Address
PhoneNumber = PhoneNumber
EmailAddress = EmailAddress
GymOpeningHours = GymOpeningHours
AccessOptions = AccessOptions
Location = Location
TimeZone = TimeZone
ReopenDate = ReopenDate
}
namespace PureGym
/// Module containing JSON parsing methods for the Member type
@@ -144,41 +154,43 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Member =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : Member =
let MemberStatus = node.["memberStatus"].AsValue().GetValue<int>()
let SuspendedReason = node.["suspendedReason"].AsValue().GetValue<int>()
let MembershipLevel = node.["membershipLevel"].AsValue().GetValue<int>()
let MembershipName = node.["membershipName"].AsValue().GetValue<string>()
let Postcode = node.["postCode"].AsValue().GetValue<string>()
let MobileNumber = node.["mobileNumber"].AsValue().GetValue<string>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : Member =
let MemberStatus = node.["memberStatus"].AsValue().GetValue<int> ()
let SuspendedReason = node.["suspendedReason"].AsValue().GetValue<int> ()
let MembershipLevel = node.["membershipLevel"].AsValue().GetValue<int> ()
let MembershipName = node.["membershipName"].AsValue().GetValue<string> ()
let Postcode = node.["postCode"].AsValue().GetValue<string> ()
let MobileNumber = node.["mobileNumber"].AsValue().GetValue<string> ()
let DateOfBirth =
node.["dateofBirth"].AsValue().GetValue<string>() |> System.DateOnly.Parse
node.["dateofBirth"].AsValue().GetValue<string> () |> System.DateOnly.Parse
let GymAccessPin = node.["gymAccessPin"].AsValue().GetValue<string>()
let EmailAddress = node.["emailAddress"].AsValue().GetValue<string>()
let HomeGymName = node.["homeGymName"].AsValue().GetValue<string>()
let HomeGymId = node.["homeGymId"].AsValue().GetValue<int>()
let LastName = node.["lastName"].AsValue().GetValue<string>()
let FirstName = node.["firstName"].AsValue().GetValue<string>()
let CompoundMemberId = node.["compoundMemberId"].AsValue().GetValue<string>()
let Id = node.["id"].AsValue().GetValue<int>()
let GymAccessPin = node.["gymAccessPin"].AsValue().GetValue<string> ()
let EmailAddress = node.["emailAddress"].AsValue().GetValue<string> ()
let HomeGymName = node.["homeGymName"].AsValue().GetValue<string> ()
let HomeGymId = node.["homeGymId"].AsValue().GetValue<int> ()
let LastName = node.["lastName"].AsValue().GetValue<string> ()
let FirstName = node.["firstName"].AsValue().GetValue<string> ()
let CompoundMemberId = node.["compoundMemberId"].AsValue().GetValue<string> ()
let Id = node.["id"].AsValue().GetValue<int> ()
{ Id = Id
CompoundMemberId = CompoundMemberId
FirstName = FirstName
LastName = LastName
HomeGymId = HomeGymId
HomeGymName = HomeGymName
EmailAddress = EmailAddress
GymAccessPin = GymAccessPin
DateOfBirth = DateOfBirth
MobileNumber = MobileNumber
Postcode = Postcode
MembershipName = MembershipName
MembershipLevel = MembershipLevel
SuspendedReason = SuspendedReason
MemberStatus = MemberStatus }
{
Id = Id
CompoundMemberId = CompoundMemberId
FirstName = FirstName
LastName = LastName
HomeGymId = HomeGymId
HomeGymName = HomeGymName
EmailAddress = EmailAddress
GymAccessPin = GymAccessPin
DateOfBirth = DateOfBirth
MobileNumber = MobileNumber
Postcode = Postcode
MembershipName = MembershipName
MembershipLevel = MembershipLevel
SuspendedReason = SuspendedReason
MemberStatus = MemberStatus
}
namespace PureGym
/// Module containing JSON parsing methods for the GymAttendance type
@@ -186,39 +198,41 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module GymAttendance =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : GymAttendance =
let MaximumCapacity = node.["maximumCapacity"].AsValue().GetValue<int>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : GymAttendance =
let MaximumCapacity = node.["maximumCapacity"].AsValue().GetValue<int> ()
let LastRefreshedPeopleInClasses =
node.["lastRefreshedPeopleInClasses"].AsValue().GetValue<string>()
node.["lastRefreshedPeopleInClasses"].AsValue().GetValue<string> ()
|> System.DateTime.Parse
let LastRefreshed =
node.["lastRefreshed"].AsValue().GetValue<string>() |> System.DateTime.Parse
node.["lastRefreshed"].AsValue().GetValue<string> () |> System.DateTime.Parse
let AttendanceTime =
node.["attendanceTime"].AsValue().GetValue<string>() |> System.DateTime.Parse
node.["attendanceTime"].AsValue().GetValue<string> () |> System.DateTime.Parse
let IsApproximate = node.["isApproximate"].AsValue().GetValue<bool>()
let IsApproximate = node.["isApproximate"].AsValue().GetValue<bool> ()
let TotalPeopleSuffix =
match node.["totalPeopleSuffix"] with
| null -> None
| v -> v.AsValue().GetValue<string>() |> Some
| v -> v.AsValue().GetValue<string> () |> Some
let TotalPeopleInClasses = node.["totalPeopleInClasses"].AsValue().GetValue<int>()
let TotalPeopleInGym = node.["totalPeopleInGym"].AsValue().GetValue<int>()
let Description = node.["description"].AsValue().GetValue<string>()
let TotalPeopleInClasses = node.["totalPeopleInClasses"].AsValue().GetValue<int> ()
let TotalPeopleInGym = node.["totalPeopleInGym"].AsValue().GetValue<int> ()
let Description = node.["description"].AsValue().GetValue<string> ()
{ Description = Description
TotalPeopleInGym = TotalPeopleInGym
TotalPeopleInClasses = TotalPeopleInClasses
TotalPeopleSuffix = TotalPeopleSuffix
IsApproximate = IsApproximate
AttendanceTime = AttendanceTime
LastRefreshed = LastRefreshed
LastRefreshedPeopleInClasses = LastRefreshedPeopleInClasses
MaximumCapacity = MaximumCapacity }
{
Description = Description
TotalPeopleInGym = TotalPeopleInGym
TotalPeopleInClasses = TotalPeopleInClasses
TotalPeopleSuffix = TotalPeopleSuffix
IsApproximate = IsApproximate
AttendanceTime = AttendanceTime
LastRefreshed = LastRefreshed
LastRefreshedPeopleInClasses = LastRefreshedPeopleInClasses
MaximumCapacity = MaximumCapacity
}
namespace PureGym
/// Module containing JSON parsing methods for the MemberActivityDto type
@@ -226,22 +240,24 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module MemberActivityDto =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : MemberActivityDto =
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : MemberActivityDto =
let LastRefreshed =
node.["lastRefreshed"].AsValue().GetValue<string>() |> System.DateTime.Parse
node.["lastRefreshed"].AsValue().GetValue<string> () |> System.DateTime.Parse
let IsEstimated = node.["isEstimated"].AsValue().GetValue<bool>()
let TotalClasses = node.["totalClasses"].AsValue().GetValue<int>()
let TotalVisits = node.["totalVisits"].AsValue().GetValue<int>()
let AverageDuration = node.["averageDuration"].AsValue().GetValue<int>()
let TotalDuration = node.["totalDuration"].AsValue().GetValue<int>()
let IsEstimated = node.["isEstimated"].AsValue().GetValue<bool> ()
let TotalClasses = node.["totalClasses"].AsValue().GetValue<int> ()
let TotalVisits = node.["totalVisits"].AsValue().GetValue<int> ()
let AverageDuration = node.["averageDuration"].AsValue().GetValue<int> ()
let TotalDuration = node.["totalDuration"].AsValue().GetValue<int> ()
{ TotalDuration = TotalDuration
AverageDuration = AverageDuration
TotalVisits = TotalVisits
TotalClasses = TotalClasses
IsEstimated = IsEstimated
LastRefreshed = LastRefreshed }
{
TotalDuration = TotalDuration
AverageDuration = AverageDuration
TotalVisits = TotalVisits
TotalClasses = TotalClasses
IsEstimated = IsEstimated
LastRefreshed = LastRefreshed
}
namespace PureGym
/// Module containing JSON parsing methods for the SessionsAggregate type
@@ -249,14 +265,16 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module SessionsAggregate =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : SessionsAggregate =
let Duration = node.["duration"].AsValue().GetValue<int>()
let Visits = node.["visits"].AsValue().GetValue<int>()
let Activities = node.["activities"].AsValue().GetValue<int>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : SessionsAggregate =
let Duration = node.["duration"].AsValue().GetValue<int> ()
let Visits = node.["visits"].AsValue().GetValue<int> ()
let Activities = node.["activities"].AsValue().GetValue<int> ()
{ Activities = Activities
Visits = Visits
Duration = Duration }
{
Activities = Activities
Visits = Visits
Duration = Duration
}
namespace PureGym
/// Module containing JSON parsing methods for the VisitGym type
@@ -264,14 +282,16 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module VisitGym =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : VisitGym =
let Status = node.["status"].AsValue().GetValue<string>()
let Name = node.["name"].AsValue().GetValue<string>()
let Id = node.["id"].AsValue().GetValue<int>()
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : VisitGym =
let Status = node.["status"].AsValue().GetValue<string> ()
let Name = node.["name"].AsValue().GetValue<string> ()
let Id = node.["id"].AsValue().GetValue<int> ()
{ Id = Id
Name = Name
Status = Status }
{
Id = Id
Name = Name
Status = Status
}
namespace PureGym
/// Module containing JSON parsing methods for the Visit type
@@ -279,19 +299,21 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Visit =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : Visit =
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : Visit =
let Gym = VisitGym.jsonParse node.["gym"]
let Duration = node.["duration"].AsValue().GetValue<int>()
let Duration = node.["duration"].AsValue().GetValue<int> ()
let StartTime =
node.["startTime"].AsValue().GetValue<string>() |> System.DateTime.Parse
node.["startTime"].AsValue().GetValue<string> () |> System.DateTime.Parse
let IsDurationEstimated = node.["isDurationEstimated"].AsValue().GetValue<bool>()
let IsDurationEstimated = node.["isDurationEstimated"].AsValue().GetValue<bool> ()
{ IsDurationEstimated = IsDurationEstimated
StartTime = StartTime
Duration = Duration
Gym = Gym }
{
IsDurationEstimated = IsDurationEstimated
StartTime = StartTime
Duration = Duration
Gym = Gym
}
namespace PureGym
/// Module containing JSON parsing methods for the SessionsSummary type
@@ -299,10 +321,14 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module SessionsSummary =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : SessionsSummary =
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : SessionsSummary =
let ThisWeek = SessionsAggregate.jsonParse node.["thisWeek"]
let Total = SessionsAggregate.jsonParse node.["total"]
{ Total = Total; ThisWeek = ThisWeek }
{
Total = Total
ThisWeek = ThisWeek
}
namespace PureGym
/// Module containing JSON parsing methods for the Sessions type
@@ -310,12 +336,15 @@ namespace PureGym
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Sessions =
/// Parse from a JSON node.
let jsonParse (node: System.Text.Json.Nodes.JsonNode) : Sessions =
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : Sessions =
let Visits =
node.["visits"].AsArray()
node.["visits"].AsArray ()
|> Seq.map (fun elt -> Visit.jsonParse elt)
|> List.ofSeq
let Summary = SessionsSummary.jsonParse node.["summary"]
{ Summary = Summary; Visits = Visits }
{
Summary = Summary
Visits = Visits
}

View File

@@ -3,6 +3,10 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarnOn>FS3559</WarnOn>
<WoofWareMyriadPluginVersion>1.0.4</WoofWareMyriadPluginVersion>
</PropertyGroup>
<ItemGroup>
@@ -17,8 +21,9 @@
<EmbeddedResource Include="SurfaceBaseline.txt" />
<EmbeddedResource Include="version.json" />
</ItemGroup>
<ItemGroup>
<MyriadSdkGenerator Include="/Users/patrick/Documents/GitHub/MyriadPlugin/MyriadPlugin/bin/Debug/net6.0/MyriadPlugin.dll" />
<MyriadSdkGenerator Include="$(NuGetPackageRoot)/woofware.myriad.plugins/$(WoofWareMyriadPluginVersion)/lib/net6.0/WoofWare.Myriad.Plugins.dll" />
</ItemGroup>
<ItemGroup>
@@ -28,10 +33,7 @@
<PackageReference Include="Fastenshtein" Version="1.0.0.8" />
<PackageReference Include="Myriad.Core" Version="0.8.3" />
<PackageReference Include="Myriad.Sdk" Version="0.8.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\MyriadPlugin\MyriadPlugin\MyriadPlugin.fsproj" />
<PackageReference Include="WoofWare.Myriad.Plugins" Version="$(WoofWareMyriadPluginVersion)" />
</ItemGroup>
</Project>

View File

@@ -17,8 +17,8 @@
projectFile = "./PureGym.App/PureGym.App.fsproj";
testProjectFile = "./PureGym.Test/PureGym.Test.fsproj";
pname = "puregym";
dotnet-sdk = pkgs.dotnet-sdk_7;
dotnet-runtime = pkgs.dotnetCorePackages.runtime_7_0;
dotnet-sdk = pkgs.dotnet-sdk_8;
dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0;
version = "0.1";
dotnetTool = toolName: toolVersion: sha256:
pkgs.stdenvNoCC.mkDerivation rec {
@@ -81,7 +81,7 @@
};
devShells.default = pkgs.mkShell {
buildInputs =
[pkgs.alejandra pkgs.dotnet-sdk_7 pkgs.python3 pkgs.nodePackages.markdown-link-check]
[pkgs.alejandra pkgs.dotnet-sdk_8 pkgs.python3 pkgs.nodePackages.markdown-link-check]
++ (
if pkgs.stdenv.isDarwin
then [pkgs.darwin.apple_sdk.frameworks.CoreServices]

View File

@@ -1,21 +1,6 @@
# This file was automatically generated by passthru.fetch-deps.
# Please don't edit it manually, your changes might get overwritten!
{fetchNuGet}: [
(fetchNuGet {
pname = "Fastenshtein";
version = "1.0.0.8";
sha256 = "1rvw27rz7qb2n68i0jvvcr224fcpy5yzzxaj1bp89jw41cpdabp2";
})
(fetchNuGet {
pname = "Argu";
version = "6.1.1";
sha256 = "1v996g0760qhiys2ahdpnvkldaxr2jn5f1falf789glnk4a6f3xl";
})
(fetchNuGet {
pname = "System.Configuration.ConfigurationManager";
version = "4.4.0";
sha256 = "1hjgmz47v5229cbzd2pwz2h0dkq78lb2wp9grx8qr72pb5i0dk7v";
})
(fetchNuGet {
pname = "fantomas";
version = "6.2.0";
@@ -26,20 +11,50 @@
version = "4.0.12";
sha256 = "0v56sv4cz8bgrfqjjg0q96619qs9dvvi0a6lp7hzz2mi82i1inmq";
})
(fetchNuGet {
pname = "Argu";
version = "6.1.1";
sha256 = "1v996g0760qhiys2ahdpnvkldaxr2jn5f1falf789glnk4a6f3xl";
})
(fetchNuGet {
pname = "coverlet.collector";
version = "3.2.0";
sha256 = "1qxpv8v10p5wn162lzdm193gdl6c5f81zadj8h889dprlnj3g8yr";
})
(fetchNuGet {
pname = "FSharp.Core";
version = "6.0.0";
sha256 = "1hjhvr39c1vpgrdmf8xln5q86424fqkvy9nirkr29vl2461d2039";
pname = "Fantomas.Core";
version = "6.1.1";
sha256 = "1h2wsiy4fzwsg9vrlpk6w7zsvx6bc4wg4x25zqc48akg04fwpi0m";
})
(fetchNuGet {
pname = "Fantomas.FCS";
version = "6.1.1";
sha256 = "0733dm5zjdp8w5wwalqlv1q52pghfr04863i9wy807f4qfd7rrin";
})
(fetchNuGet {
pname = "Fastenshtein";
version = "1.0.0.8";
sha256 = "1rvw27rz7qb2n68i0jvvcr224fcpy5yzzxaj1bp89jw41cpdabp2";
})
(fetchNuGet {
pname = "FsCheck";
version = "2.16.6";
sha256 = "176rwky6b5rk8dzldiz4068p7m9c5y9ygzbhadrs14jkl94pc56n";
})
(fetchNuGet {
pname = "FSharp.Core";
version = "7.0.400";
sha256 = "1pl6iqqcpm9djfn7f6ms5j1xbcyz00nb808qd6pmsjrnylflalgp";
version = "6.0.1";
sha256 = "0qks2aadkhsffg9a6xq954ll9xacnph852avd7ljh9n2g6vj06qj";
})
(fetchNuGet {
pname = "FSharp.Core";
version = "8.0.100-beta.23418.2";
sha256 = "05wfbfqphk27qp1v8pmssl3fhs4yggyrmzvxwcx6m3xryix7bjkk";
})
(fetchNuGet {
pname = "FsUnit";
version = "5.6.1";
sha256 = "1zffn9dm2c44v8qjzwfg6y3psydiv2bn3n305rf7mc57cmm4ygv3";
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Ref";
@@ -53,8 +68,8 @@
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64";
version = "7.0.11";
sha256 = "0hmsqy4yc3023mcp5rg0h59yv3f8cnjhxw1g4i8md67vm5y04lfv";
version = "8.0.0-rc.1.23421.29";
sha256 = "1sz6skh1ddvdcib8ydi6km593ah3cchgz2fs61kj03z6jg2vz9la";
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.linux-x64";
@@ -63,8 +78,8 @@
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.linux-x64";
version = "7.0.11";
sha256 = "18sk9wka8z5354ca77q43hi0615yjssdjbyi0hqq92w6zmg43vgc";
version = "8.0.0-rc.1.23421.29";
sha256 = "1m6a47bnrl8n9ahnh01mg2fkc20lmfjjg3f7xzbdngnikm6vzcxv";
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64";
@@ -73,8 +88,8 @@
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64";
version = "7.0.11";
sha256 = "1j0zbd4rmmd3ylgixsvyj145g2r6px6b9d9k4yxxg6d61x90c165";
version = "8.0.0-rc.1.23421.29";
sha256 = "16vy79c7byrqwd9f7vm0xbah3k4y6yis0flm9jkfk0hp4bb0y0js";
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.osx-x64";
@@ -83,8 +98,8 @@
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.osx-x64";
version = "7.0.11";
sha256 = "0wxw7vgygg6hqzq479n0pfjizr69wq7ja03a0qh8bma8b9q2mn6f";
version = "8.0.0-rc.1.23421.29";
sha256 = "0ygb60mpk1rkz67v1d9vf3f7zfvdzg5a4ckc1yqcfb2n4a64rdbv";
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.win-x64";
@@ -93,8 +108,8 @@
})
(fetchNuGet {
pname = "Microsoft.AspNetCore.App.Runtime.win-x64";
version = "7.0.11";
sha256 = "05ywwfn5lzx6y999f7gwmablkxi2zvska4sg20ihmjzp3xakcmk0";
version = "8.0.0-rc.1.23421.29";
sha256 = "0cir3vy94ki9v0zzkm49f33mxmp25i2v0c3gp4fhmnhpsfn0x7rb";
})
(fetchNuGet {
pname = "Microsoft.CodeCoverage";
@@ -113,8 +128,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.linux-arm64";
version = "7.0.11";
sha256 = "03nkxjn4wq30rw0163rqi8sngfxmcvwgm0wg7sgyb1cdh0q1ai68";
version = "8.0.0-rc.1.23419.4";
sha256 = "1254rvx06wjblf0y2msh1zdg0fky861l8x5f5w7hm5l14ys1firb";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.linux-x64";
@@ -123,8 +138,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.linux-x64";
version = "7.0.11";
sha256 = "12hh69sr4wf8sjcw3q71vky51sn854ffahbq6rgz3njzvbvc0dbj";
version = "8.0.0-rc.1.23419.4";
sha256 = "10kjms0wx5iialcvd0fp64vriv4cyk7k22wqh3km9mh43i620px7";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.osx-arm64";
@@ -138,8 +153,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.osx-x64";
version = "7.0.11";
sha256 = "1j1k735gkwba93n5yck87wppfpsbny979hppcygwrk81myf3fv03";
version = "8.0.0-rc.1.23419.4";
sha256 = "03sgkb2ar63wllisx8rmpc3yrngl61yhlmqinwbc5bhyaxpmqnk5";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.win-x64";
@@ -148,8 +163,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Host.win-x64";
version = "7.0.11";
sha256 = "0ifshdx19bgnbgynbk6iy6gybnxmp63nylrn7068x66hvcavh7kh";
version = "8.0.0-rc.1.23419.4";
sha256 = "0lnxq6risl59ig9svhra6papn0i9rs2pr4zgnysnbfg7gvd3fiwh";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Ref";
@@ -163,8 +178,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.linux-arm64";
version = "7.0.11";
sha256 = "1gzwc96fs222ddia0k1924cn7gxm2a4anqgcxhmavx56x76wsy6f";
version = "8.0.0-rc.1.23419.4";
sha256 = "1x5pq1y4gn1gwnqmq9mj02wki5yncidlnmaf2przz8yingfw0hq6";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.linux-x64";
@@ -173,8 +188,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.linux-x64";
version = "7.0.11";
sha256 = "0vxza49wwiia0d3m887yiaprp3xnax2bgzhj5bf080b4ayapzkf9";
version = "8.0.0-rc.1.23419.4";
sha256 = "1arzm0mqdj0hnlsfcki8z3zbbp5mpv73133wc8yxpymh6f000bv2";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.osx-arm64";
@@ -183,8 +198,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.osx-arm64";
version = "7.0.11";
sha256 = "15b62hxrpfy19xvyxlyligixxpa9sysfgi47xi4imx5055fhwphh";
version = "8.0.0-rc.1.23419.4";
sha256 = "04k93say7b842bvh2x853skj5ymxsq3b11vf6rkfcqz6b7hvn7pj";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.osx-x64";
@@ -193,8 +208,8 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.osx-x64";
version = "7.0.11";
sha256 = "018qf23b0jixfh3fm74zqaakk01qx6yq21gk2mdn68b0xhnvlzma";
version = "8.0.0-rc.1.23419.4";
sha256 = "0f403j2sis8p7y1w2nkbp03xq8qq06f7q94d8clm9c98vppw75sj";
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.win-x64";
@@ -203,19 +218,29 @@
})
(fetchNuGet {
pname = "Microsoft.NETCore.App.Runtime.win-x64";
version = "7.0.11";
sha256 = "12xmw2kcpf5rh8sv4y0mqzp917f7q8g4mfh5navqw4jmnxyb26qq";
version = "8.0.0-rc.1.23419.4";
sha256 = "00whfl9s9qd43jv68rff5g6da0k6y11yc2pg6v681967fnq31jqp";
})
(fetchNuGet {
pname = "Microsoft.NETCore.Platforms";
version = "1.1.0";
sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm";
})
(fetchNuGet {
pname = "Microsoft.NETCore.Platforms";
version = "1.1.1";
sha256 = "164wycgng4mi9zqi2pnsf1pq6gccbqvw6ib916mqizgjmd8f44pj";
})
(fetchNuGet {
pname = "Microsoft.NETCore.Platforms";
version = "2.0.0";
sha256 = "1fk2fk2639i7nzy58m9dvpdnzql4vb8yl8vr19r2fp8lmj9w2jr0";
})
(fetchNuGet {
pname = "Microsoft.NETCore.Targets";
version = "1.1.3";
sha256 = "05smkcyxir59rgrmp7d6327vvrlacdgldfxhmyr1azclvga1zfsq";
})
(fetchNuGet {
pname = "Microsoft.TestPlatform.ObjectModel";
version = "17.6.0";
@@ -226,6 +251,16 @@
version = "17.6.0";
sha256 = "16vpicp4q2kbpgr3qwpsxg7srabxqszx23x6smjvvrvz7qmr5v8i";
})
(fetchNuGet {
pname = "Myriad.Core";
version = "0.8.3";
sha256 = "0s5pdckjw4x0qrbd4i3cz9iili5cppg5qnjbr7zjbbhhmxzb24xw";
})
(fetchNuGet {
pname = "Myriad.Sdk";
version = "0.8.3";
sha256 = "0qv78c5s5m04xb8h17nnn2ig26zcyya91k2dpj745cm1cbnzvvgc";
})
(fetchNuGet {
pname = "NETStandard.Library";
version = "2.0.0";
@@ -273,8 +308,8 @@
})
(fetchNuGet {
pname = "NUnit";
version = "3.13.3";
sha256 = "0wdzfkygqnr73s6lpxg5b1pwaqz9f414fxpvpdmf72bvh4jaqzv6";
version = "3.14.0";
sha256 = "19p8911lrfds1k9rv47jk1bbn665s0pvghkd06gzbg78j6mzzqqa";
})
(fetchNuGet {
pname = "NUnit.Analyzers";
@@ -291,6 +326,31 @@
version = "1.6.4";
sha256 = "1mvi3nbrr450g3fgd1y4wg3bwl9k1agyjfd9wdkqk12714bsln8l";
})
(fetchNuGet {
pname = "runtime.any.System.Runtime";
version = "4.3.0";
sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b";
})
(fetchNuGet {
pname = "runtime.native.System";
version = "4.3.0";
sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
})
(fetchNuGet {
pname = "runtime.unix.System.Private.Uri";
version = "4.3.0";
sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk";
})
(fetchNuGet {
pname = "System.Configuration.ConfigurationManager";
version = "4.4.0";
sha256 = "1hjgmz47v5229cbzd2pwz2h0dkq78lb2wp9grx8qr72pb5i0dk7v";
})
(fetchNuGet {
pname = "System.Diagnostics.DiagnosticSource";
version = "7.0.0";
sha256 = "1jxhvsh5mzdf0sgb4dfmbys1b12ylyr5pcfyj1map354fiq3qsgm";
})
(fetchNuGet {
pname = "System.Formats.Asn1";
version = "5.0.0";
@@ -306,11 +366,26 @@
version = "4.5.0";
sha256 = "1gq4s8w7ds1sp8f9wqzf8nrzal40q5cd2w4pkf4fscrl2ih3hkkj";
})
(fetchNuGet {
pname = "System.Memory";
version = "4.5.5";
sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h";
})
(fetchNuGet {
pname = "System.Private.Uri";
version = "4.3.0";
sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx";
})
(fetchNuGet {
pname = "System.Reflection.Metadata";
version = "1.6.0";
sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4";
})
(fetchNuGet {
pname = "System.Runtime";
version = "4.3.1";
sha256 = "03ch4d2acf6q037a4njxpll2kkx3dwzlg07yxr4z5m6j1kqgmm27";
})
(fetchNuGet {
pname = "System.Runtime.CompilerServices.Unsafe";
version = "6.0.0";
@@ -361,4 +436,9 @@
version = "7.0.3";
sha256 = "0zjrnc9lshagm6kdb9bdh45dmlnkpwcpyssa896sda93ngbmj8k9";
})
(fetchNuGet {
pname = "WoofWare.Myriad.Plugins";
version = "1.0.4";
sha256 = "077aldkb3va1azdm5g9sms074flkjwwbml6la0alk2cazw6xqj77";
})
]