forked from minimaxir/big-list-of-naughty-strings
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNaughtyStringFactory.cs
47 lines (42 loc) · 1.57 KB
/
NaughtyStringFactory.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Reflection;
using Newtonsoft.Json;
namespace big_list_of_naughty_strings
{
public class NaughtyStringFactory
{
public static IReadOnlyList<string> NaughtyStrings { get; }
static NaughtyStringFactory()
{
var naughtyStrings = GetNaughtyStringsFromEmbeddedResource();
NaughtyStrings = new ReadOnlyCollection<string>(naughtyStrings);
}
private static List<string> GetNaughtyStringsFromEmbeddedResource()
{
var jsonString = GetJsonStringFromEmbeddedResource();
var deserializedList = JsonConvert.DeserializeObject<List<string>>(jsonString);
return deserializedList;
}
private static string GetJsonStringFromEmbeddedResource()
{
using (var resourceStream = GetJsonStreamFromEmbeddedResource())
{
using (var streamReader = new StreamReader(resourceStream))
{
var fileString = streamReader.ReadToEnd();
return fileString;
}
}
}
private static Stream GetJsonStreamFromEmbeddedResource()
{
var assembly = typeof(NaughtyStringFactory).GetTypeInfo().Assembly;
var resourceName = $"{nameof(big_list_of_naughty_strings)}.blns.json"
.Replace("_", "-");
var resourceStream = assembly.GetManifestResourceStream(resourceName);
return resourceStream;
}
}
}