Class: ShiprocketAPI::Base

Inherits:
ActiveResource::Base
  • Object
show all
Extended by:
ThreadsafeAttributes
Defined in:
lib/shiprocket_api/resources/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}, persisted = false) ⇒ Base

Returns a new instance of Base.



49
50
51
52
# File 'lib/shiprocket_api/resources/base.rb', line 49

def initialize(attributes = {}, persisted = false)
  attributes = self.class::DEFAULT_ATTRS.merge(attributes) if defined?(self.class::DEFAULT_ATTRS)
  super
end

Class Method Details

.clear_sessionObject



25
26
27
28
# File 'lib/shiprocket_api/resources/base.rb', line 25

def clear_session
  self.session = nil
  connection.bearer_token = nil
end

.create_session(email: ShiprocketAPI.config.email, password: ShiprocketAPI.config.password) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/shiprocket_api/resources/base.rb', line 16

def create_session(email: ShiprocketAPI.config.email, password: ShiprocketAPI.config.password)
  cache_key = Digest::SHA2.new(256).hexdigest("#{email}-#{password}")

  self.session = cache.fetch(cache_key, expires_in: 9.days) do
    Session.create(email: email, password: password)
  end
  connection.bearer_token = session.token
end

.set_prefix(prefix) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/shiprocket_api/resources/base.rb', line 39

def set_prefix(prefix)
  ori_prefix = self.prefix
  self.prefix = prefix
  result = yield
  result
ensure
  self.prefix = ori_prefix
end

.temp_session(email:, password:, &block) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/shiprocket_api/resources/base.rb', line 30

def temp_session(email:, password:, &block)
  raise ArgumentError, 'A block must be given' unless block

  create_session(email: email, password: password)
  yield
ensure
  create_session
end