{"id":25053597,"url":"https://github.com/dills122/shamwow","last_synced_at":"2025-03-31T07:11:48.027Z","repository":{"id":98391945,"uuid":"149201618","full_name":"dills122/ShamWow","owner":"dills122","description":"Who likes lawyers? Me either; scrub your PII with ShamWow","archived":false,"fork":false,"pushed_at":"2019-06-16T20:39:21.000Z","size":100,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T21:02:46.507Z","etag":null,"topics":["attributes","document-parser","document-scrubber","pii","poco","reflection","scrub","scrubber","verify"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dills122.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-17T23:38:04.000Z","updated_at":"2019-06-15T19:29:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"32058a7e-ec4b-4e5f-b339-36dc38fdfdd0","html_url":"https://github.com/dills122/ShamWow","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dills122%2FShamWow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dills122%2FShamWow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dills122%2FShamWow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dills122%2FShamWow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dills122","download_url":"https://codeload.github.com/dills122/ShamWow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246429486,"owners_count":20775807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attributes","document-parser","document-scrubber","pii","poco","reflection","scrub","scrubber","verify"],"created_at":"2025-02-06T11:39:52.408Z","updated_at":"2025-03-31T07:11:48.014Z","avatar_url":"https://github.com/dills122.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ShamWow Document Scrubber\n\n[![Build Status](https://dev.azure.com/dss-gh/ShamWow/_apis/build/status/dills122.ShamWow?branchName=master)](https://dev.azure.com/dss-gh/ShamWow/_build/latest?definitionId=1?branchName=master) [![CodeFactor](https://www.codefactor.io/repository/github/dills122/shamwow/badge)](https://www.codefactor.io/repository/github/dills122/shamwow)\n\nShamWow is a document scrubber to remove personally identifiable information while still retaining the same data type(Email, Phone, etc.). \n\n## How it Works\n\nShamWow uses reflection to gain access to all of the properties within a POCO (Plain Old C# Object) and iterates through all the properties while performing scrubbing specific to the type described within the POCO. You describe your type of scrubbing by annotating a property with its specific typed scrubber (ScrubDouble, ScrubInteger, etc.) and then add in the argument corresponding to the type of data you want your PII replaced with.\n\nExample:\n``` csharp\n//How you would tell ShamWow to scrub an Address\n[ScrubString(\"Address\")]\npublic string StreetAddress1 { get; set; }\n```\n\n\u003e In this example ShamWow as long as the value isn't null, then this property will have its value replaced with a fake Address\n\n## Full Workflow Example\n\nOnce your POCOs are annotated and you have installed the ShamWow NuGet package you're all set you begin scrubbing documents.\n\n#### Initial Setup\n\n\u003e Install needed NuGet packages along with their dependencies\n1. [ShamWow](https://www.nuget.org/packages/ShamWow)\n2. [ShamWow.Interfaces](https://www.nuget.org/packages/ShamWow.Interfaces/)\n\n#### Step 1 Get Requirements\n\n\u003e Get object to scrub and get instance of ShamWow\n\n``` csharp\n//Fake object\nvar obj = new object();\n//Get instance of ShamWow and run in marked only mode\nIShamWow processor = ShamWowEngine.GetFactory().Create(obj, ScrubMode.Marked);\n```\n\n#### Step 2 Scrubbing\n\n\u003e Start scrubbing and get clean values\n\n``` csharp\n//Start scrubbing\nprocessor.Scrub();\n//Retrieve clean data\nvar cleanData = processor.CleanData();\n```\n\n#### Step 3 Verify Scrubbing\n\n\u003e Get Manifest and verify the scrubbing was successful\n\n``` csharp\n//Get Manifest for Auditing purposes\nvar manifest = processor.GetManifest();\n//Check the manifest for errors\nvar IsSuccess = processor.CheckManifest();\n```\n\n## Special Attributes\n\n\u003e **PreserveValue** ensure the that this property's value will not be scrubbed or changed\n\n\u003e **StatefulScrub** allows you to define a variable name that then can be used throughout your POCO transform to ensure the value's of each decorated property will be the same.\n\n``` csharp\n//Example of Preserve attribute\n[PreserveValue]\npublic string str {get; set;}\n//Examaple of a stateful scrub\n[StatefulScrub(\"StateOne\")]\npublic int id {get; set;}\n```\n\n\n## Wrap Up \n\nThats the basics of  ShamWow, it is meant to be very painless and require the least amount of intervention by the user. The three major items you need before scrubbing is \n\n1. POCOs for data to be mapped to\n2. ShamWow Engine and Interface NuGet packages\n3. PII to scrub\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdills122%2Fshamwow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdills122%2Fshamwow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdills122%2Fshamwow/lists"}