aboutsummaryrefslogtreecommitdiff
path: root/src/feednim/jsonfeed.nim
diff options
context:
space:
mode:
authorJohn Conway <john.a.conway@gmail.com>2019-05-17 15:49:32 +0100
committerJohn Conway <john.a.conway@gmail.com>2019-05-17 15:49:32 +0100
commite80352a021ca0b0ebc330ca530b31eb2197949fd (patch)
treef087ff29340e8d727e358bfb2c7a2cdb0403d4e0 /src/feednim/jsonfeed.nim
parente9b43e1677abb3ecc5be8b4f995db09d77dd76a8 (diff)
downloadfeed-nim-e80352a021ca0b0ebc330ca530b31eb2197949fd.tar.gz
feed-nim-e80352a021ca0b0ebc330ca530b31eb2197949fd.zip
Stupid git case (in)sensetivity
Diffstat (limited to 'src/feednim/jsonfeed.nim')
-rw-r--r--src/feednim/jsonfeed.nim133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/feednim/jsonfeed.nim b/src/feednim/jsonfeed.nim
deleted file mode 100644
index e523778..0000000
--- a/src/feednim/jsonfeed.nim
+++ /dev/null
@@ -1,133 +0,0 @@
-# Nim JSONFeed Syndication module
-
-# Written by John Conway
-# Released under the MIT open source license.
-
-import strutils
-import sequtils
-import json
-import streams
-import sugar
-
-type
- JSONFeed* = ref object of RootObj
- author*: JSONFeedAuthor
- version*: string
- title*: string
- home_page_url*: string
- feed_url*: string
- description*: string
- next_url*: string
- icon*: string
- favicon*: string
- expired*: bool
- hubs*: seq[JSONFeedHub]
- items*: seq[JSONFeedItem]
-
- JSONFeedHub* = object
- hubType: string
- url: string
-
- JSONFeedAuthor* = object
- name*: string
- url*: string
- avatar*: string
-
- JSONFeedItem* = object
- author*: JSONFeedAuthor
- id*: string
- url*: string
- external_url*: string
- title*: string
- content_html*: string
- content_text*: string
- summary*: string
- image*: string
- banner_image*: string
- date_published*: string
- date_modified*: string
- tags*: seq[string]
- attachments*: seq[JSONFeedAttachment]
-
- JSONFeedAttachment* = object
- url*: string
- mime_type*: string
- title*: string
- size_in_bytes*: int
- duration_in_seconds*: int
-
-proc parseItem( node: JsonNode) : JSONFeedItem =
- var item: JSONFeedItem = JSONFeedItem()
-
- if node.getOrDefault( "author" ) != nil:
- let author = node["author"]
- item.author.name = getStr( author.getOrDefault "name" )
- item.author.url = getStr( author.getOrDefault "url" )
- item.author.avatar = getStr( author.getOrDefault "avatar" )
-
- item.id = getStr( node.getOrDefault "id" )
- item.url = getStr( node.getOrDefault "url" )
- item.external_url = getStr( node.getOrDefault "external_url" )
- item.title = getStr( node.getOrDefault "title" )
- item.content_html = getStr( node.getOrDefault "content_html" )
- item.content_text = getStr( node.getOrDefault "content_text" )
- item.summary = getStr( node.getOrDefault "summary" )
- item.image = getStr( node.getOrDefault "image" )
- item.banner_image = getStr( node.getOrDefault "banner_image" )
- item.date_published = getStr( node.getOrDefault "date_published" )
- item.date_modified = getStr( node.getOrDefault "date_modified" )
-
- if node.getOrDefault( "tags" ) != nil:
- for tag in node["tags"]:
- item.tags.add( tag.to(string) )
-
- if node.getOrDefault( "attachments" ) != nil:
- for jattach in node["attachments"]:
- var attachment: JSONFeedAttachment = JSONFeedAttachment()
- attachment.url = getStr( jattach.getOrDefault "url" )
- attachment.mime_type = getStr( jattach.getOrDefault "mime_type" )
- attachment.title = getStr( jattach.getOrDefault "title" )
- attachment.size_in_bytes = getInt( jattach.getOrDefault "size_in_bytes" )
- attachment.duration_in_seconds = getInt( jattach.getOrDefault "duration_in_seconds" )
-
- item.attachments.add( attachment )
-
- return item
-
-proc parseJSONFeed*(data: string): JSONFeed =
- let node = data.parseJson()
- var feed: JSONFeed = JSONFeed()
-
- if node.getOrDefault( "author" ) != nil:
- let author = node["author"]
- feed.author.name = getStr( author.getOrDefault "name" )
- feed.author.url = getStr( author.getOrDefault "url" )
- feed.author.avatar = getStr( author.getOrDefault "avatar" )
-
- feed.version = getStr( node.getOrDefault "version" )
- feed.title = getStr( node.getOrDefault "title" )
- feed.home_page_url = getStr( node.getOrDefault "home_page_url" )
- feed.feed_url = getStr( node.getOrDefault "feed_url" )
- feed.description = getStr( node.getOrDefault "description" ) # What is this?
- feed.next_url = getStr( node.getOrDefault "next_url" )
- feed.icon = getStr( node.getOrDefault "icon" )
- feed.favicon = getStr( node.getOrDefault "favicon" )
-
- if node.getOrDefault( "expired" ) != nil:
- feed.expired = node["expired"].getBool()
-
- if node.getOrDefault( "hubs" ) != nil:
- for jhub in node["hubs"]:
- var hub: JSONFeedHub = JSONFeedHub()
- hub.hubType = getStr( jhub.getOrDefault "url" )
- hub.url = getStr( jhub.getOrDefault "mime_type" )
-
- feed.hubs.add( hub )
-
- feed.items = @[]
- if node.getOrDefault( "items" ) != nil:
- for item in node["items"]:
- feed.items.add item.parseItem()
-
-
- return feed \ No newline at end of file