Class: Uploadcare::Rails::Settings

Inherits:
OpenStruct
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/uploadcare/rails/settings.rb

Constant Summary collapse

PUBLIC_ALLOWED_KEYS =

TODO: ALL the keys god damn it

[
  :public_key,
  :locale,
  :images_only ,
  :multiple,
  :multiple_min ,
  :multiple_max,
  :preview_step,
  :crop,
  :clearable,
  :tabs,
  :autostore,
  :live,
  :manual_start,
  :path_value
]

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Settings

Returns a new instance of Settings.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/uploadcare/rails/settings.rb', line 35

def initialize(config)
  # extract envaroments settings
  settings = config[::Rails.env]
  unless settings.present?
    raise ArgumentError, 'config is empty or not given at all'
  end

  # build settings object (basicly openstruct)
  # merge defaults with actual settings

  # strip defaults suplied by uploadcare-ruby gem from private/pub key
  uc_defaults =
    Uploadcare::DEFAULT_SETTINGS.except!(:public_key, :private_key)

  defaults = Uploadcare::Rails::DEFAULT_SETTINGS.merge!(uc_defaults)
  settings = defaults.merge!(settings)
  super settings

  # validates settings atributes.
  unless valid?
    raise ArgumentError, 'Private or public key options were not provided'
  end
end

Instance Method Details

#apiObject



67
68
69
# File 'lib/uploadcare/rails/settings.rb', line 67

def api
  @api ||= Uploadcare::Api.new(api_settings)
end

#api_settingsObject



59
60
61
# File 'lib/uploadcare/rails/settings.rb', line 59

def api_settings
  @api_settings ||= build_api_settings
end

#widget_settingsObject



63
64
65
# File 'lib/uploadcare/rails/settings.rb', line 63

def widget_settings
  @widget_settings ||= build_widget_settings
end