mirror of
https://github.com/moparisthebest/android.moparisthebest.org
synced 2024-11-16 06:05:00 -05:00
69 lines
2.3 KiB
CoffeeScript
69 lines
2.3 KiB
CoffeeScript
|
# App.net fetcher for Octopress (c) Brandon Mathis // MIT License
|
||
|
helpers = require('helpers')
|
||
|
|
||
|
Adn =
|
||
|
timeline: []
|
||
|
cookie: 'adn-feed'
|
||
|
classname: 'adn-feed'
|
||
|
|
||
|
template: ->
|
||
|
helpers.statusFeed @timeline, @classname
|
||
|
|
||
|
errorTemplate: ->
|
||
|
helpers.errorTemplate "Failed to load posts.", @classname
|
||
|
|
||
|
parseHtml: (post)->
|
||
|
text = helpers.trimDisplayUrls post.html
|
||
|
text = text.replace "@#{mention.name}", "<a href='https://alpha.app.net/#{mention.name}'>@#{mention.name}</a>" for mention in post.entities.mentions
|
||
|
text = text.replace "##{hashtag.name}", "<a href='https://alpha.app.net/hashtags/#{hashtag.name}'>##{hashtag.name}</a>" for hashtag in post.entities.hashtags
|
||
|
text
|
||
|
|
||
|
getPost: (post) ->
|
||
|
type = if post.repost_of then 'repost' else 'post'
|
||
|
post = if type is 'repost' then post.repost_of else post
|
||
|
{
|
||
|
type: type
|
||
|
url: post.canonical_url
|
||
|
date: post.created_at
|
||
|
author: { user: post.user.username, name: post.user.name, url: post.user.canonical_url } if type is 'repost'
|
||
|
text: @parseHtml post
|
||
|
}
|
||
|
|
||
|
format: (posts, user, options) ->
|
||
|
postList = []
|
||
|
for post in posts
|
||
|
postList.push @getPost(post) unless post.repost_of and !options.reposts
|
||
|
postList
|
||
|
|
||
|
init: (user, options, callback) ->
|
||
|
posts = $.cookie @cookie
|
||
|
if posts
|
||
|
@timeline = JSON.parse(posts)
|
||
|
if @timeline.length isnt options.count
|
||
|
$.removeCookie @cookie
|
||
|
@timeline = []
|
||
|
init user, options, callback
|
||
|
else
|
||
|
callback @template()
|
||
|
else
|
||
|
url = "https://alpha-api.app.net/stream/0/users/@#{user}/posts?"
|
||
|
url += "&max_id=#{options.max_id}" if options.max_id
|
||
|
url += "&include_directed_posts=0" unless options.replies
|
||
|
url += "&callback=?"
|
||
|
|
||
|
$.ajax
|
||
|
url: url
|
||
|
dataType: 'jsonp'
|
||
|
error: (err) => callback @errorTemplate
|
||
|
success: (response) =>
|
||
|
@timeline = @timeline.concat response.data
|
||
|
if @timeline.length < options.count
|
||
|
options.max_id = response.meta.max_id
|
||
|
init user, options, callback
|
||
|
else
|
||
|
@timeline = @format @timeline.slice(0, options.count), user, options
|
||
|
$.cookie @cookie, JSON.stringify @timeline, { path: '/' }
|
||
|
callback @template()
|
||
|
|
||
|
module.exports = Adn
|