Class: SiteSetting::Upload

Inherits:
Object
  • Object
show all
Defined in:
app/models/site_setting.rb

Overview

helpers for getting s3 settings that fallback to global

Class Method Summary collapse

Class Method Details

.absolute_base_urlObject



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'app/models/site_setting.rb', line 186

def self.absolute_base_url
  url_basename = SiteSetting.s3_endpoint.split("/")[-1]
  bucket =
    (
      if SiteSetting.enable_s3_uploads
        Discourse.store.s3_bucket_name
      else
        GlobalSetting.s3_bucket_name
      end
    )

  # cf. http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
  if SiteSetting.s3_endpoint.blank? || SiteSetting.s3_endpoint.end_with?("amazonaws.com")
    if SiteSetting.Upload.use_dualstack_endpoint
      "//#{bucket}.s3.dualstack.#{SiteSetting.Upload.s3_region}.amazonaws.com"
    else
      "//#{bucket}.s3.#{SiteSetting.Upload.s3_region}.amazonaws.com.cn"
    end
  else
    "//#{bucket}.#{url_basename}"
  end
end

.enable_s3_transfer_accelerationObject



163
164
165
166
167
168
169
# File 'app/models/site_setting.rb', line 163

def self.enable_s3_transfer_acceleration
  if SiteSetting.enable_s3_uploads
    SiteSetting.enable_s3_transfer_acceleration
  else
    GlobalSetting.enable_s3_transfer_acceleration
  end
end

.enable_s3_uploadsObject



177
178
179
# File 'app/models/site_setting.rb', line 177

def self.enable_s3_uploads
  SiteSetting.enable_s3_uploads || GlobalSetting.use_s3?
end

.s3_base_urlObject



181
182
183
184
# File 'app/models/site_setting.rb', line 181

def self.s3_base_url
  path = self.s3_upload_bucket.split("/", 2)[1]
  "#{self.absolute_base_url}#{path ? "/" + path : ""}"
end

.s3_cdn_urlObject



147
148
149
# File 'app/models/site_setting.rb', line 147

def self.s3_cdn_url
  SiteSetting.enable_s3_uploads ? SiteSetting.s3_cdn_url : GlobalSetting.s3_cdn_url
end

.s3_endpointObject



159
160
161
# File 'app/models/site_setting.rb', line 159

def self.s3_endpoint
  SiteSetting.enable_s3_uploads ? SiteSetting.s3_endpoint : GlobalSetting.s3_endpoint
end

.s3_regionObject



151
152
153
# File 'app/models/site_setting.rb', line 151

def self.s3_region
  SiteSetting.enable_s3_uploads ? SiteSetting.s3_region : GlobalSetting.s3_region
end

.s3_upload_bucketObject



155
156
157
# File 'app/models/site_setting.rb', line 155

def self.s3_upload_bucket
  SiteSetting.enable_s3_uploads ? SiteSetting.s3_upload_bucket : GlobalSetting.s3_bucket
end

.use_dualstack_endpointObject



171
172
173
174
175
# File 'app/models/site_setting.rb', line 171

def self.use_dualstack_endpoint
  return false if !SiteSetting.Upload.enable_s3_uploads
  return false if SiteSetting.Upload.s3_endpoint.present?
  !SiteSetting.Upload.s3_region.start_with?("cn-")
end