https://github.com/vfk/swiftybencode
A general purpose bencode decoder written in Swift 3
https://github.com/vfk/swiftybencode
bencode swift swift-3 swift-library swift-package-manager torrent
Last synced: 7 months ago
JSON representation
A general purpose bencode decoder written in Swift 3
- Host: GitHub
- URL: https://github.com/vfk/swiftybencode
- Owner: VFK
- License: mit
- Created: 2017-02-01T14:48:20.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-02-05T17:32:13.000Z (almost 9 years ago)
- Last Synced: 2025-07-08T22:03:09.237Z (7 months ago)
- Topics: bencode, swift, swift-3, swift-library, swift-package-manager, torrent
- Language: Swift
- Size: 13.7 KB
- Stars: 9
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SwiftyBencode [](https://github.com/VFK/SwiftyBencode/releases) [](https://travis-ci.org/VFK/SwiftyBencode)
> A general purpose [bencode](https://en.wikipedia.org/wiki/Bencode) decoder written in Swift 3
## Usage
```swift
Bencode.decode(data: Data) throws -> BencodeResult
```
### BencodeResult
```swift
BencodeResult.integer -> Int?
BencodeResult.string -> String?
BencodeResult.list -> [BencodeResult]?
BencodeResult.dictionary -> [String: BencodeResult]?
// hexadecimal representation of swift Data.
BencodeResult.hexString -> String? // Data(bytes: [0, 1, 127, 128, 255]) -> 00017f80ff
```
### Decoding torrent file
```swift
import Bencode
let url: URL =
let data = try! Data(contentsOf: url!)
do {
let result = try Bencode.decode(data: data)
if let announce = result.dictionary?["announce"]?.string {
print(announce)
}
if let announceList = result.dictionary?["announce"]?.list {
// announceList is [BencodeResult]
for item in announceList {
print(item.string!)
}
}
if let creationDate = result.dictionary?["creation date"]?.integer {
print(creationDate)
}
} catch BencodeDecodeError.invalidFormat {
} catch {
}
```
## Installation
### Swift Package Manager
```swift
import PackageDescription
let package = Package(
<...>
dependencies: [
.Package(url: "https://github.com/VFK/SwiftyBencode.git", majorVersion: 0, minor: 2)
]
<...>
)
```