diff --git a/Podfile b/Podfile
new file mode 100644
index 0000000..1ef78bb
--- /dev/null
+++ b/Podfile
@@ -0,0 +1,12 @@
+# Uncomment the next line to define a global platform for your project
+# platform :ios, '9.0'
+
+target 'rss-reader' do
+ use_frameworks!
+ inhibit_all_warnings!
+
+ pod 'FeedKit', '~> 8.1'
+ pod 'Kingfisher', '~> 5.7'
+ pod 'SVProgressHUD', '~> 2.2'
+
+end
diff --git a/Podfile.lock b/Podfile.lock
new file mode 100644
index 0000000..ddc934c
--- /dev/null
+++ b/Podfile.lock
@@ -0,0 +1,24 @@
+PODS:
+ - FeedKit (8.1.1)
+ - Kingfisher (5.7.0)
+ - SVProgressHUD (2.2.5)
+
+DEPENDENCIES:
+ - FeedKit (~> 8.1)
+ - Kingfisher (~> 5.7)
+ - SVProgressHUD (~> 2.2)
+
+SPEC REPOS:
+ https://github.com/cocoapods/specs.git:
+ - FeedKit
+ - Kingfisher
+ - SVProgressHUD
+
+SPEC CHECKSUMS:
+ FeedKit: 3418eed25f0b493b205b4de1b8511ac21d413fa9
+ Kingfisher: c7d211b54f1f30d8060aadab177d52b4349c825b
+ SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
+
+PODFILE CHECKSUM: 3412147b32c5fcffbdb5018d5e3a38ea8cc2b8d4
+
+COCOAPODS: 1.7.2
diff --git a/Pods/FeedKit/LICENSE b/Pods/FeedKit/LICENSE
new file mode 100644
index 0000000..263f199
--- /dev/null
+++ b/Pods/FeedKit/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 - 2018 Nuno Manuel Dias
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Pods/FeedKit/README.md b/Pods/FeedKit/README.md
new file mode 100644
index 0000000..636d691
--- /dev/null
+++ b/Pods/FeedKit/README.md
@@ -0,0 +1,233 @@
+
+
+[](https://travis-ci.org/nmdias/FeedKit)
+[](https://cocoapods.org/pods/FeedKit)
+[](https://github.com/Carthage/Carthage)
+[](https://swift.org)
+[](https://github.com/nmdias/DefaultsKit/releases)
+
+## Features
+
+- [x] [Atom](https://tools.ietf.org/html/rfc4287)
+- [x] RSS [0.90](http://www.rssboard.org/rss-0-9-0), [0.91](http://www.rssboard.org/rss-0-9-1), [1.00](http://web.resource.org/rss/1.0/spec), [2.00](http://cyber.law.harvard.edu/rss/rss.html)
+- [x] [JSON](https://jsonfeed.org/version/1)
+- [x] Namespaces
+ - [x] [Dublin Core](http://web.resource.org/rss/1.0/modules/dc/)
+ - [x] [Syndication](http://web.resource.org/rss/1.0/modules/syndication/)
+ - [x] [Content](http://web.resource.org/rss/1.0/modules/content/)
+ - [x] [Media RSS](http://www.rssboard.org/media-rss)
+ - [x] [iTunes Podcasting Tags](https://help.apple.com/itc/podcasts_connect/#/itcb54353390)
+- [x] [Documentation](http://cocoadocs.org/docsets/FeedKit)
+- [x] Unit Test Coverage
+
+## Requirements
+
+
+
+
+
+
+
+
+Installation >> [`instructions`](https://github.com/nmdias/FeedKit/blob/master/INSTALL.md) <<
+
+## Usage
+
+Build a URL pointing to an RSS, Atom or JSON Feed.
+```swift
+let feedURL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!
+```
+
+Get an instance of `FeedParser`
+```swift
+let parser = FeedParser(URL: feedURL) // or FeedParser(data: data) or FeedParser(xmlStream: stream)
+```
+
+Then call `parse` or `parseAsync` to start parsing the feed...
+
+> A **common scenario** in UI environments would be parsing a feed **asynchronously** from a user initiated action, such as the touch of a button. e.g.
+
+```swift
+// Parse asynchronously, not to block the UI.
+parser.parseAsync(queue: DispatchQueue.global(qos: .userInitiated)) { (result) in
+ // Do your thing, then back to the Main thread
+ DispatchQueue.main.async {
+ // ..and update the UI
+ }
+}
+```
+
+Remember, you are responsible to manually bring the result closure to whichever queue is apropriate. Usually to the Main thread, for UI apps, by calling `DispatchQueue.main.async` .
+
+Alternatively, you can also parse synchronously.
+
+```swift
+let result = parser.parse()
+```
+
+## Parse Result
+
+Whichever the case, if parsing succeeds you should now have a `Strongly Typed Model` of an `RSS`, `Atom` or `JSON Feed`.
+```swift
+switch result {
+case let .atom(feed): // Atom Syndication Format Feed Model
+case let .rss(feed): // Really Simple Syndication Feed Model
+case let .json(feed): // JSON Feed Model
+case let .failure(error):
+}
+```
+
+
+#### Parse Success
+You can check if a Feed was `successfully` parsed or not.
+```swift
+result.isSuccess // If parsing was a success
+result.isFailure // If parsing failed
+result.error // An error, if any
+```
+
+## Model Preview
+Safely bind a feed of your choosing:
+> You may find the example bellow useful, if you're dealing with only a single type of feed.
+```swift
+guard let feed = result.rssFeed, result.isSuccess else {
+ print(result.error)
+ return
+}
+```
+Then go through it's properties:
+
+> The RSS and Atom feed Models are rather extensive throughout the supported namespaces. These are just a preview of what's available.
+
+#### RSS
+
+```swift
+feed.title
+feed.link
+feed.description
+feed.language
+feed.copyright
+feed.managingEditor
+feed.webMaster
+feed.pubDate
+feed.lastBuildDate
+feed.categories
+feed.generator
+feed.docs
+feed.cloud
+feed.rating
+feed.ttl
+feed.image
+feed.textInput
+feed.skipHours
+feed.skipDays
+//...
+feed.dublinCore
+feed.syndication
+feed.iTunes
+// ...
+
+let item = feed.items?.first
+
+item?.title
+item?.link
+item?.description
+item?.author
+item?.categories
+item?.comments
+item?.enclosure
+item?.guid
+item?.pubDate
+item?.source
+//...
+item?.dublinCore
+item?.content
+item?.iTunes
+item?.media
+// ...
+```
+
+> Refer to the [`documentation`](http://cocoadocs.org/docsets/FeedKit) for the complete model properties and descriptions
+
+#### Atom
+
+```swift
+feed.title
+feed.subtitle
+feed.links
+feed.updated
+feed.authors
+feed.contributors
+feed.id
+feed.generator
+feed.icon
+feed.logo
+feed.rights
+// ...
+
+let entry = feed.entries?.first
+
+entry?.title
+entry?.summary
+entry?.authors
+entry?.contributors
+entry?.links
+entry?.updated
+entry?.categories
+entry?.id
+entry?.content
+entry?.published
+entry?.source
+entry?.rights
+// ...
+```
+
+> Refer to the [`documentation`](http://cocoadocs.org/docsets/FeedKit) for the complete model properties and descriptions
+
+#### JSON
+
+```swift
+feed.version
+feed.title
+feed.homePageURL
+feed.feedUrl
+feed.description
+feed.userComment
+feed.nextUrl
+feed.icon
+feed.favicon
+feed.author
+feed.expired
+feed.hubs
+feed.extensions
+// ...
+
+let item = feed.items?.first
+
+item?.id
+item?.url
+item?.externalUrl
+item?.title
+item?.contentText
+item?.contentHtml
+item?.summary
+item?.image
+item?.bannerImage
+item?.datePublished
+item?.dateModified
+item?.author
+item?.url
+item?.tags
+item?.attachments
+item?.extensions
+// ...
+```
+
+> Refer to the [`documentation`](http://cocoadocs.org/docsets/FeedKit) for the complete model properties and descriptions
+
+## License
+
+FeedKit is released under the MIT license. See [LICENSE](https://github.com/nmdias/FeedKit/blob/master/LICENSE) for details.
+
+
+
diff --git a/Pods/FeedKit/Sources/FeedKit/Dates/DateSpec.swift b/Pods/FeedKit/Sources/FeedKit/Dates/DateSpec.swift
new file mode 100644
index 0000000..9f7c053
--- /dev/null
+++ b/Pods/FeedKit/Sources/FeedKit/Dates/DateSpec.swift
@@ -0,0 +1,39 @@
+//
+// DateSpec.swift
+//
+// Copyright (c) 2016 - 2018 Nuno Manuel Dias
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+
+import Foundation
+
+/// Date specifications
+///
+/// - rfc822: The `Standard for the format of arpa internet text messages`.
+/// See https://www.ietf.org/rfc/rfc0822.txt
+/// - rfc3999: The `Date and Time on the Internet: Timestamps`.
+/// See https://www.ietf.org/rfc/rfc3339.txt
+/// - iso8601: The `W3CDTF` date time format specification
+/// See http://www.w3.org/TR/NOTE-datetime
+enum DateSpec {
+ case rfc822
+ case rfc3999
+ case iso8601
+}
diff --git a/Pods/FeedKit/Sources/FeedKit/Dates/ISO8601DateFormatter.swift b/Pods/FeedKit/Sources/FeedKit/Dates/ISO8601DateFormatter.swift
new file mode 100644
index 0000000..c48d879
--- /dev/null
+++ b/Pods/FeedKit/Sources/FeedKit/Dates/ISO8601DateFormatter.swift
@@ -0,0 +1,59 @@
+//
+// ISO8601DateFormatter.swift
+//
+// Copyright (c) 2016 - 2018 Nuno Manuel Dias
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+
+import Foundation
+
+/// Converts date and time textual representations within the ISO8601
+/// date specification into `Date` objects
+class ISO8601DateFormatter: DateFormatter {
+
+ let dateFormats = [
+ "yyyy-MM-dd'T'HH:mm:ss.SSZZZZZ",
+ "yyyy-MM-dd'T'HH:mm:ssZZZZZ",
+ "yyyy-MM-dd'T'HH:mmSSZZZZZ",
+ "yyyy-MM-dd'T'HH:mm"
+ ]
+
+ override init() {
+ super.init()
+ self.timeZone = TimeZone(secondsFromGMT: 0)
+ self.locale = Locale(identifier: "en_US_POSIX")
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) not supported")
+ }
+
+ override func date(from string: String) -> Date? {
+ let string = string.trimmingCharacters(in: .whitespacesAndNewlines)
+ for dateFormat in self.dateFormats {
+ self.dateFormat = dateFormat
+ if let date = super.date(from: string) {
+ return date
+ }
+ }
+ return nil
+ }
+
+}
diff --git a/Pods/FeedKit/Sources/FeedKit/Dates/RFC3339DateFormatter.swift b/Pods/FeedKit/Sources/FeedKit/Dates/RFC3339DateFormatter.swift
new file mode 100644
index 0000000..e410e08
--- /dev/null
+++ b/Pods/FeedKit/Sources/FeedKit/Dates/RFC3339DateFormatter.swift
@@ -0,0 +1,58 @@
+//
+// RFC3339DateFormatter.swift
+//
+// Copyright (c) 2016 - 2018 Nuno Manuel Dias
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+
+import Foundation
+
+/// Converts date and time textual representations within the RFC3339
+/// date specification into `Date` objects
+class RFC3339DateFormatter: DateFormatter {
+
+ let dateFormats = [
+ "yyyy-MM-dd'T'HH:mm:ssZZZZZ",
+ "yyyy-MM-dd'T'HH:mm:ss.SSZZZZZ",
+ "yyyy-MM-dd'T'HH:mm:ss-SS:ZZ"
+ ]
+
+ override init() {
+ super.init()
+ self.timeZone = TimeZone(secondsFromGMT: 0)
+ self.locale = Locale(identifier: "en_US_POSIX")
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) not supported")
+ }
+
+ override func date(from string: String) -> Date? {
+ let string = string.trimmingCharacters(in: .whitespacesAndNewlines)
+ for dateFormat in self.dateFormats {
+ self.dateFormat = dateFormat
+ if let date = super.date(from: string) {
+ return date
+ }
+ }
+ return nil
+ }
+
+}
diff --git a/Pods/FeedKit/Sources/FeedKit/Dates/RFC822DateFormatter.swift b/Pods/FeedKit/Sources/FeedKit/Dates/RFC822DateFormatter.swift
new file mode 100644
index 0000000..40625a7
--- /dev/null
+++ b/Pods/FeedKit/Sources/FeedKit/Dates/RFC822DateFormatter.swift
@@ -0,0 +1,77 @@
+//
+// RFC822DateFormatter.swift
+//
+// Copyright (c) 2016 - 2018 Nuno Manuel Dias
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+
+import Foundation
+
+/// Converts date and time textual representations within the RFC822
+/// date specification into `Date` objects
+class RFC822DateFormatter: DateFormatter {
+
+ let dateFormats = [
+ "EEE, d MMM yyyy HH:mm:ss zzz",
+ "EEE, d MMM yyyy HH:mm zzz",
+ "d MMM yyyy HH:mm:ss Z"
+ ]
+
+ let backupFormats = [
+ "d MMM yyyy HH:mm:ss zzz",
+ "d MMM yyyy HH:mm zzz"
+ ]
+
+ override init() {
+ super.init()
+ self.timeZone = TimeZone(secondsFromGMT: 0)
+ self.locale = Locale(identifier: "en_US_POSIX")
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) not supported")
+ }
+
+ private func attemptParsing(from string: String, formats: [String]) -> Date? {
+ for dateFormat in formats {
+ self.dateFormat = dateFormat
+ if let date = super.date(from: string) {
+ return date
+ }
+ }
+ return nil
+ }
+
+ override func date(from string: String) -> Date? {
+ let string = string.trimmingCharacters(in: .whitespacesAndNewlines)
+ if let parsedDate = attemptParsing(from: string, formats: dateFormats) {
+ return parsedDate
+ }
+ // See if we can lop off a text weekday, as DateFormatter does not
+ // handle these in full compliance with Unicode tr35-31. For example,
+ // "Tues, 6 November 2007 12:00:00 GMT" is rejected because of the "Tues",
+ // even though "Tues" is used as an example for EEE in tr35-31.
+ let trimRegEx = try! NSRegularExpression(pattern: "^[a-zA-Z]+, ([\\w :+-]+)$")
+ let trimmed = trimRegEx.stringByReplacingMatches(in: string, options: [],
+ range: NSMakeRange(0, string.count), withTemplate: "$1")
+ return attemptParsing(from: trimmed, formats: backupFormats)
+ }
+
+}
diff --git a/Pods/FeedKit/Sources/FeedKit/Extensions/Array + Equatable.swift b/Pods/FeedKit/Sources/FeedKit/Extensions/Array + Equatable.swift
new file mode 100644
index 0000000..f1b4145
--- /dev/null
+++ b/Pods/FeedKit/Sources/FeedKit/Extensions/Array + Equatable.swift
@@ -0,0 +1,42 @@
+//
+// Array + Equatable.swift
+//
+// Copyright (c) 2016 - 2018 Nuno Manuel Dias
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+
+import Foundation
+
+/// Optional arrays equatable
+///
+/// - Parameters:
+/// - lhs: The left-hand side
+/// - rhs: The right-hand side
+/// - Returns: A boolean value
+public func ==
+
+