예제 #1
0
    protected Task <AnalyzerProviderBaseRuleData?> ReadFromGithub(
        AnalyzerProviderBaseRuleData data)
    {
        ArgumentNullException.ThrowIfNull(data);

        var url         = GitRawAtcAnalyzerProviderBaseRulesBasePath + data.Name + ".json";
        var displayName = url.Replace(Constants.GitRawContentUrl, Constants.GitHubPrefix, StringComparison.Ordinal);

        try
        {
            var rawGitData = HttpClientHelper.GetAsString(
                logger,
                url,
                displayName);
            return(Task.FromResult(string.IsNullOrEmpty(rawGitData)
                ? null
                : JsonSerializer.Deserialize <AnalyzerProviderBaseRuleData>(rawGitData, AnalyzerProviderSerialization.JsonOptions) !));
        }
        catch (HttpRequestException ex)
        {
            if (ex.StatusCode == HttpStatusCode.NotFound)
            {
                return(Task.FromResult <AnalyzerProviderBaseRuleData?>(null));
            }

            throw;
        }
    }
예제 #2
0
    protected static Task WriteToTempFolder(
        AnalyzerProviderBaseRuleData data)
    {
        ArgumentNullException.ThrowIfNull(data);

        if (!string.IsNullOrEmpty(data.ExceptionMessage))
        {
            return(Task.CompletedTask);
        }

        if (data.Rules.Count == 0)
        {
            data.ExceptionMessage = "No rules found";
            return(Task.CompletedTask);
        }

        var tempFolder = Path.Combine(Path.GetTempPath(), "AtcAnalyzerProviderBaseRules");

        if (!Directory.Exists(tempFolder))
        {
            Directory.CreateDirectory(tempFolder);
        }

        var tempFile = Path.Combine(tempFolder, data.Name + ".json");
        var json     = JsonSerializer.Serialize(data, AnalyzerProviderSerialization.JsonOptions);

        return(File.WriteAllTextAsync(tempFile, json));
    }
예제 #3
0
    protected static async Task <AnalyzerProviderBaseRuleData?> ReadFromTempFolder(
        AnalyzerProviderBaseRuleData data)
    {
        ArgumentNullException.ThrowIfNull(data);

        var tempFolder = Path.Combine(Path.GetTempPath(), "AtcAnalyzerProviderBaseRules");

        if (!Directory.Exists(tempFolder))
        {
            Directory.CreateDirectory(tempFolder);
        }

        var tempFile = Path.Combine(tempFolder, data.Name + ".json");
        var fileInfo = new FileInfo(tempFile);

        if (!fileInfo.Exists)
        {
            return(null);
        }

        var fileAsJson = await File.ReadAllTextAsync(tempFile);

        return(JsonSerializer.Deserialize <AnalyzerProviderBaseRuleData>(fileAsJson, AnalyzerProviderSerialization.JsonOptions));
    }
예제 #4
0
 protected abstract Task ReCollect(AnalyzerProviderBaseRuleData data);