Sha256: 26fa2b8da887580b135ba0e2c23c0fac1a3088ed6405eb68f1567a0b8f0f2e05

Contents?: true

Size: 1.43 KB

Versions: 2

Compression:

Stored size: 1.43 KB

Contents

require 'oauth2'

module CobotClient
  # Used to install links into the Cobot navigation of a space.
  class NavigationLinkService
    # api_client - an CobotClient::ApiClient
    # access_token - an access token string (owner must be admin of the space to be used)
    def initialize(api_client, space_sudomain)
      @api_client = api_client
      @subdomain = space_sudomain
    end

    # Checks if links are already installed and if not installs them.
    #
    # new_links - any number of `CobotClient::NavigationLink`s
    #
    # Returns the links as `[CobotClient::NavigationLink]`
    def install_links(new_links)
      existing_links = get_links
      missing_links = new_links.reject do |new_link|
        existing_links.find do |existing_link|
          existing_link.section == new_link.section && existing_link.iframe_url == new_link.iframe_url
        end
      end
      created_links = missing_links.map do |link|
        create_link(link)
      end
      existing_links + created_links
    end

    private

    def get_links
      @api_client.get(@subdomain, '/navigation_links').map do |attributes|
        NavigationLink.new attributes
      end
    end

    def create_link(link)
      response = @api_client.post(@subdomain, '/navigation_links',
        section: link.section,
        label: link.label,
        iframe_url: link.iframe_url,
        user_editable: link.user_editable)

      NavigationLink.new response
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cobot_client-5.0.0 lib/cobot_client/navigation_link_service.rb
cobot_client-4.0.0 lib/cobot_client/navigation_link_service.rb