Class: R509::Validity::Redis::Writer

Inherits:
Writer
  • Object
show all
Defined in:
lib/r509/validity/redis/writer.rb

Instance Method Summary (collapse)

Constructor Details

- (Writer) initialize(redis)

A new instance of Writer

Raises:

  • (ArgumentError)


5
6
7
8
# File 'lib/r509/validity/redis/writer.rb', line 5

def initialize(redis)
    raise ArgumentError.new("Redis must be provided") if redis.nil?
    @redis = redis
end

Instance Method Details

- (Boolean) is_available?

Returns:

  • (Boolean)


39
40
41
# File 'lib/r509/validity/redis/writer.rb', line 39

def is_available?
    (@redis.ping == "PONG")? true : false
end

- (Object) issue(issuer, serial)

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
# File 'lib/r509/validity/redis/writer.rb', line 10

def issue(issuer, serial)
    raise ArgumentError.new("Serial and issuer must be provided") if serial.to_s.empty? or issuer.to_s.empty?
    cert = @redis.hgetall("cert:#{issuer}:#{serial}")
    if cert.nil? or not cert.has_key?("status")
        @redis.hmset("cert:#{issuer}:#{serial}", "status", 0)
    else
        raise R509::R509Error.new("Serial #{serial} for issuer #{issuer} is already present")
    end
end

- (Object) revoke(issuer, serial, revocation_time = Time.now.to_i, reason = 0)

Raises:

  • (ArgumentError)


20
21
22
23
24
25
26
27
# File 'lib/r509/validity/redis/writer.rb', line 20

def revoke(issuer, serial, revocation_time=Time.now.to_i, reason=0)
    raise ArgumentError.new("Serial and issuer must be provided") if serial.to_s.empty? or issuer.to_s.empty?
    @redis.hmset("cert:#{issuer}:#{serial}",
        "status", 1,
        "revocation_time", revocation_time || Time.now.to_i,
        "revocation_reason", reason || 0
    )
end

- (Object) unrevoke(issuer, serial)

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
36
37
# File 'lib/r509/validity/redis/writer.rb', line 29

def unrevoke(issuer, serial)
    raise ArgumentError.new("Serial and issuer must be provided") if serial.to_s.empty? or issuer.to_s.empty?
    cert = @redis.hgetall("cert:#{issuer}:#{serial}")
    if cert.nil? or not cert.has_key?("status")
        raise R509::R509Error.new("Serial #{serial} for issuer #{issuer} is not present")
    else
        @redis.hmset("cert:#{issuer}:#{serial}", "status", 0)
    end
end