Sha256: 60efff437974c75ed2fc71c1d35310a6ec48f5afd3b1ebf5848d0108ed0f8a85

Contents?: true

Size: 1.9 KB

Versions: 5

Compression:

Stored size: 1.9 KB

Contents

# frozen_string_literal: true

module PlatformSdk
  module Bynder
    class Client
      attr_reader :access_token, :base_url, :conn

      INTEGRATION_ID = "b242c16d-70f4-4101-8df5-87b35bbe56f0" # Wordpress integration id

      def initialize(base_url, access_token, conn: nil)
        @access_token = access_token
        @base_url = base_url
        @conn = conn || build_connection
      end

      def assets(query_params = {})
        resource_path = "/api/v4/media"
        response = get(resource_path, query_params)
        response.body
      end

      def asset(asset_id)
        resource_path = "/api/v4/media"
        response = get(resource_path, { id: asset_id })
        response.body
      end

      def create_asset_usage(asset_id, uri, integration_id: INTEGRATION_ID)
        resource_path = "/api/media/usage"
        body = { integration_id:, asset_id:, uri: }
        response = post(resource_path, body.to_json)
        response.body
      end

      def remove_asset_usage(asset_id, uri, integration_id: INTEGRATION_ID)
        resource_path = "/api/media/usage"
        response = delete(resource_path, { integration_id:, asset_id:, uri: })
        response.body
      end

      private

      def build_connection
        Faraday.new(@base_url) do |faraday|
          faraday.headers = default_headers
          faraday.adapter Faraday.default_adapter
          faraday.response :json, content_type: /\bjson$/, parser_options: { symbolize_names: true }
          faraday.response :raise_error
        end
      end

      def default_headers
        {
          "Content-Type" => "application/json",
          "Authorization" => "Bearer #{access_token}"
        }
      end

      def get(path, params = {})
        @conn.get(path, params)
      end

      def post(path, body)
        @conn.post(path, body)
      end

      def delete(path, params = {})
        @conn.delete(path, params)
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
strongmind-platform-sdk-3.19.14 lib/platform_sdk/bynder/client.rb
strongmind-platform-sdk-3.19.13 lib/platform_sdk/bynder/client.rb
strongmind-platform-sdk-3.19.12 lib/platform_sdk/bynder/client.rb
strongmind-platform-sdk-3.19.11 lib/platform_sdk/bynder/client.rb
strongmind-platform-sdk-3.19.10 lib/platform_sdk/bynder/client.rb