I am excited to announce the availability of a new open-source project for SharePoint: a SharePoint Explorer. The Enzo SharePoint Explorer is written in C# and is a simple application that allows you to view existing SharePoint lists (and items), users, groups, documents and folders, permissions and to add/remove users from SharePoint groups. To simplify development the project is using Enzo as the underlying API Middleware, so there are no SharePoint SDK dependencies in this application.
You can download the source code here.
Features
In this initial release, the SharePoint Explorer provides access to basic SharePoint information: Lists and Groups. After connecting to Enzo from File -> Connect, you will see the SharePoint lists and Groups on the top left corner; clicking on a list will update the list of permissions (bottom left) and display the Items on the right (you can limit the number of elements returned). The explorer will display all publicly visible columns automatically. You can also inspect all available fields in the selected list by clicking on the Fields tab.
When the list is a Document Library, the explorer will also display a Folder Permissions tab, with the list of permissions on the selected folder.
Clicking on a group will show you the members of that group; you can add and remove users from the available groups.
Architecture
At a high level, the application is designed as a physical three-tier, although the code itself is limited to the presentation layer; the middle-tier is Enzo, a service that handles all the complex communication with SharePoint. The service exposes methods to interact with SharePoint (see here for a complete list of methods available).
The Enzo service provides automatic handling of complex programming middle-tier operations, such as,
- Caching list definitions: (for performance)
- Automatic paging of Lists with more than 4,000 items
- Automatic retry operations
- WHERE clause to XAML conversion
- Request logging
Using Enzo as the API Middleware allowed me to write the SharePoint explorer in less than 8 hours, with roughly 800 lines of code (including comments, line feeds and all). The core method that calls Enzo is about 50 lines of C# code, which is a simple HTTP request.
For more information on how to fetch SharePoint List Items using HTTP REST, see my previous blog post here.
The HTTP request expects a JSON document being returned from Enzo; two methods are exposed: one returning a List<IDictionary<string, object>> and another returning List<dynamic>. I usually prefer to use the latter, as it can be a bit easier to use when you know ahead of time which properties are available. Regardless, the EnzoHelper class knows how to consume either list and format a ListView object accordingly by reading the available properties.
The classes are structured in the following way: the main User Interface depends on a display helper class, and the SharePoint operations class; the SharePoint operations class uses the HTTP handling class to make the actual HTTP REST calls.
SharePoint Server vs. SharePoint Online
Enzo comes in two editions - Enzo Online and Enzo Unified. Use Enzo Online if you are trying to connect to SharePoint Online; Enzo Online is a cloud-only product and has a freemium level. Go here to create an account and configure your SharePoint Online access.
If you are interested in connecting to SharePoint Server installed in your infrastructure, you will need to use Enzo Unified, which comes with a 30-day trial license. Enzo Unified can connect to both SharePoint Server and SharePoint Online.
Instructions for both can be found on the Login screen of SharePoint Explorer.
If you are interested in helping grow this open-source project, please reach out to me! It can certainly be improved.