Sha256: afcd2f4e70927370b1752da3139f0478d0996e54831a64a63cae598de07f774b

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require "aws-sdk-s3"

class SubscriptionClientResource < ActiveRecord::Base
  belongs_to :supplier, class_name: "SubscriptionClientSupplier"
  has_many :notices, class_name: "SubscriptionClientNotice", as: :notice_subject, dependent: :destroy
  has_many :subscriptions, foreign_key: "resource_id", class_name: "SubscriptionClientSubscription", dependent: :destroy

  def can_access_bucket?(bucket)
    s3_client.head_bucket(bucket: bucket)
    true
  rescue Aws::S3::Errors::BadRequest,
         Aws::S3::Errors::Forbidden,
         Aws::S3::Errors::NotFound
    false
  end

  def s3_client
    @s3_client ||= begin
      return nil unless access_key_id && secret_access_key

      Aws::S3::Client.new(
        region: region,
        access_key_id: access_key_id,
        secret_access_key: secret_access_key
      )
    end
  end

  def region
    "us-east-1"
  end
end

# == Schema Information
#
# Table name: subscription_client_resources
#
#  id                :bigint           not null, primary key
#  supplier_id       :bigint
#  name              :string           not null
#  created_at        :datetime         not null
#  updated_at        :datetime         not null
#  access_key_id     :string
#  secret_access_key :string
#

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
discourse_subscription_client-0.1.10 app/models/subscription_client_resource.rb