PolKit is a collection of many reusable Obj-C classes and functions for Mac OS X Leopard and later providing features like advanced networking, file system utilities, HID, MIDI & serial port devices support, OpenSSL encryption, file upload & download for many protocols, etc...
The code is clean, ready to be used in your project, self-documented and has unit tests. Most classes are also independent from each other, so you can just pick what you need.
The entire project is available open-source under GPLv3 license. If you are interested in using PolKit in a non-open-source project and need a commercial license, please contact info@pol-online.net.
Some classes are simple Obj-C style wrappers around lower level system APIs, while some others are implemented from scratch and provide brand new features:
Device Classes
- HIDController to use USB HID devices
- AppleRemote to use the Apple Remote
- MidiController to use Midi devices
- OSCController to use OSC compatible devices over UDP
- SerialPort to use any serial port device (e.g. connected to USB with a Serial to USB converter)
- SC2004LCDModule to use the SC 2004 from http://www.siliconcraft.net/
Extensions
- NSData+Encryption adds hashing (MD5, SHA1...) and encryption method to NSData (Blowfish, AES...)
- NSData+GZip adds gzip compression / decompression methods to NSData
- NSFileManager+LockedItems add a few methods to NSFileManager to deal with items locked in the Finder
- NSURL+Parameters adds missing methods to NSURL to create a URL from various parts and deal with passwords
File System
- DirectoryScanner to scan recursively the contents of directories, retrieve all metadata and compare them (very fast and powerful)
- DirectoryWatcher to watch for changes in a given directory
- DiskWatcher to watch for known disks to become available or unavailable
FileTransferController
A complete series of classes to handle operations (upload & download files, move, delete, create directories...) on file servers. It supports a wide range of protocols: HTTP, HTTPS, WebDAV, iDisk, Amazon S3, SFTP, FTP, FTPS, AFP, SMB...
Networking
- MiniUDPSocket to send and receive network data over UDP
- NetworkConfiguration to retrieve the current network configuration (location, WiFi network name, IP addresses...)
- NetworkReachability to know when a given host (e.g. apple.com) becomes reachable or not
Scripts
- ProcessInfoPlists.sh to replace placeholder words NAME, VERSION and SVN_REVISION by their actual values in the Info.plist and InfoPlist.strings of an Xcode target
Unit Testing
A simple class and set of macros to implement unit tests.
User Interface
- SourceTextView to display and edit source code with syntax coloring (supports by default C style languages like JavaScript and also Lua)
Utilities
- DataStream to implement custom NSInputStream subclasses or NSOutputStream subclasses compatible with other system APIs
- DiskImageController to handle disk image operations (wraps hdiutil)
- Keychain to handle basic keychain operations
- LoginItems to add or remove items from the user login items
- MD5 to compute and compare MD5 hashes
- MiniXMLParser to do basic XML parsing with libxml2
- StreamCoding to do basic serialization in binary streams
- SVNClient to perform most SVN operations like checkout, info, commit... (wraps libsvnclient)
- SystemInfo to retrieve various information about the system
- Task to provide powerful execution of subtasks (wraps NSTask)
- WorkerThread to provide simple worker threads with synchronous start / stop