discourse/script/import_scripts/socialcast/socialcast_message.rb

64 lines
1.2 KiB
Ruby
Raw Normal View History

2016-05-26 14:54:38 +08:00
require 'json'
require 'cgi'
require 'time'
require_relative 'create_title.rb'
class SocialcastMessage
def initialize message_json
@parsed_json = JSON.parse message_json
end
def topic
topic = {}
topic[:id] = @parsed_json['id']
topic[:author_id] = @parsed_json['user']['id']
topic[:title] = title
topic[:raw] = @parsed_json['body']
topic[:created_at] = Time.parse @parsed_json['created_at']
topic[:tags] = [group] if group
topic
end
def title
CreateTitle.from_body @parsed_json['body']
end
def group
@parsed_json['group']['groupname'] if @parsed_json['group']
end
def url
@parsed_json['url']
end
def message_type
@parsed_json['message_type']
end
def replies
posts = []
comments = @parsed_json['comments']
comments.each do |comment|
posts << post_from_comment(comment)
end
posts
end
def post_from_comment(comment)
post = {}
post[:id] = comment['id']
post[:author_id] = comment['user']['id']
post[:raw] = comment['text']
post[:created_at] = Time.parse comment['created_at']
post
end
private
def unescape html
return nil unless html
CGI.unescapeHTML html
end
end