Sha256: 0186faa4c9c67af44aec86648174c67c4137da71c19271eec5d6a23fe4cee4fd

Contents?: true

Size: 1.68 KB

Versions: 3

Compression:

Stored size: 1.68 KB

Contents

# frozen_string_literal: true

require "json"
require "action_view"
require_relative "../utils"

module CircleOrbit
  module Interactions
    class Comment
      def initialize(post_title:, body:, created_at:, id:, space:, url:, author:, email:, workspace_id:, api_key:)
        @post_title = post_title
        @body = CircleOrbit::Utils.sanitize_body(body)
        @created_at = created_at
        @id = id
        @space = space
        @url = url
        @author = author
        @email = email
        @workspace_id = workspace_id
        @api_key = api_key

        after_initialize!
      end

      def after_initialize!
        OrbitActivities::Request.new(
          api_key: @api_key,
          workspace_id: @workspace_id,
          user_agent: "community-ruby-circle-orbit/#{CircleOrbit::VERSION}",
          action: "new_activity",
          body: construct_body.to_json
        )
      end

      def construct_body
        {
          activity: {
            activity_type: "circle:comment",
            tags: ["channel:circle"],
            key: "circle-comment-#{@id}",
            title: "New comment in the #{@space} Space in Circle",
            description: construct_description(@post_title, @body),
            occurred_at: @created_at,
            link: @url,
            member: {
              name: @author,
              email: @email
            }
          },
          identity: {
            source: "circle",
            email: @email
          }
        }
      end

      def construct_description(title, body)
        return body if title == "" || title.nil?

        <<~HEREDOC
          ### Comment on Post: *#{title}*

          #{body}
        HEREDOC
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
circle_orbit-0.2.0 lib/circle_orbit/interactions/comment.rb
circle_orbit-0.1.0 lib/circle_orbit/interactions/comment.rb
circle_orbit-0.0.2 lib/circle_orbit/interactions/comment.rb