Sha256: 8c5db7c69bd764b99f2c96087ebda810d414cab807303d5aeb31267aa04cdcd7

Contents?: true

Size: 1.75 KB

Versions: 4

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

require "json"

module LinkedinOrbit
  module Interactions
    class Comment
      def initialize(title:, comment:, orbit_workspace:, orbit_api_key:)
        @title = title
        @comment = comment
        @orbit_workspace = orbit_workspace
        @orbit_api_key = orbit_api_key

        after_initialize!
      end

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

      def construct_body
        {
          activity: {
            activity_type: "linkedin:comment",
            tags: ["channel:linkedin"],
            title: "Commented on LinkedIn Post",
            description: construct_description,
            occurred_at: Time.at(@comment["created"]["time"] / 1000).utc,
            key: @comment["id"],
            link: "https://www.linkedin.com/feed/update/#{@comment["object"]}",
            member: {
              name: name
            }
          },
          identity: {
            source: "linkedin",
            name: name,
            uid: @comment["actor"]
          }
        }
      end

      def name
        @name ||= begin
          return @comment["actor~"]["localizedName"] if @comment["actor~"]["localizedName"]

          "#{@comment["actor~"]["localizedFirstName"]} #{@comment["actor~"]["localizedLastName"]}"
        end
      end

      def construct_description
        <<~HEREDOC
          LinkedIn post: "#{@title}..."
          \n
          Comment:
          \n
          "#{@comment["message"]["text"]}"
        HEREDOC
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
linkedin_orbit-0.3.0 lib/linkedin_orbit/interactions/comment.rb
linkedin_orbit-0.2.0 lib/linkedin_orbit/interactions/comment.rb
linkedin_orbit-0.1.4 lib/linkedin_orbit/interactions/comment.rb
linkedin_orbit-0.1.3 lib/linkedin_orbit/interactions/comment.rb