Class: Evolis::PremiumSdk::SdkBase

Inherits:
Object
  • Object
show all
Defined in:
lib/evolis/premium_sdk/sdk_base.rb

Direct Known Subclasses

Addon, Cmd, Echo, Espf, Print, Setting, Supervision

Constant Summary collapse

SETTINGS =

Settings and their values allowed to be used when getting and setting settings for print

{
    GDuplexMode: {
        validation: %w[SIMPLEX DUPLEX_CC DUPLEX_CM DUPLEX_MC DUPLEX_MM],
        description: 'Front side and Back side settings'
    },
    GInputTray: {
        validation: %w[FEEDER AUTO MANUAL PRINTER],
        description: 'Card insertion'
    },
    GOutputTray: {
        validation: %w[HOPPER REAR PRINTER],
        description: 'Card exit'
    },
    GRejectBox: {
        validation: %w[DEFAULTREJECT HOPPER PRINTER],
        description: 'Rejected error card'
    },
    GRibbonType: {
        validation: %w[RC_YMCKO RC_YMCKOS RC_YMCKOK RC_YMCKOKOS RM_KO RM_KBLACK RM_KWHITE RM_KRED RM_KGREEN RM_KBLUE RM_KSCRATCH RM_KMETALSILVER RM_KMETALGOLD RM_KSIGNATURE RM_KWAX RM_KPREMIUM RM_HOLO],
        description: 'Ribbon type'
    },
    GShortPanelManagement: {
        validation: %w[AUTO CUSTOM OFF],
        description: 'Short panel management mode'
    },
    GSmoothing: {
        validation: %w[STDSMOOTH ADVSMOOTH NOSMOOTH],
        description: 'Smoothing mode'
    },
    IGStrictPageSetup: {
        validation: %w[ON OFF],
        description: 'Strict page setup mode'
    },
    FBlackManagement: {
        validation: %w[NOBLACKPOINT ALLBLACKPOINT TEXTINBLACK],
        description: 'Black panel management mode (front)'
    },
    BBlackManagement: {
        validation: %w[NOBLACKPOINT ALLBLACKPOINT TEXTINBLACK],
        description: 'Black panel management mode (back)'
    },
    FColorBrightness: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Brightness adjustment for color panel (front)'
    },
    BColorBrightness: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Brightness adjustment for color panel (back)'
    },
    FColorContrast: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Contrast adjustment for color panel (front)'
    },
    BColorContrast: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Contrast adjustment for color panel (back)'
    },
    FHalftoning: {
        validation: %w[THRESHOLD FLOYD DITHERING CLUSTERED_DITHERING],
        description: 'Black panel adjustment (front)'
    },
    BHalftoning: {
        validation: %w[THRESHOLD FLOYD DITHERING CLUSTERED_DITHERING],
        description: 'Black panel adjustment (back)'
    },
    FMonochromeContrast: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Monochrome resin adjustment (front)'
    },
    BMonochromeContrast: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Monochrome resin adjustment (back)'
    },
    FOverlayContrast: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Varnish adjustment (front)'
    },
    BOverlayContrast: {
        validation: (1..20).to_a.map! { |i| "VAL#{i}" },
        description: 'Varnish adjustment (back)'
    },
    FOverlayManagement: {
        validation: %w[NOVARNISH FULLVARNISH BMPVARNISH],
        description: 'Varnish type (front)'
    },
    BOverlayManagement: {
        validation: %w[NOVARNISH FULLVARNISH BMPVARNISH],
        description: 'Varnish type (back)'
    },
    FPageRotate180: {
        validation: %w[ON OFF],
        description: 'Rotate by 180° (front)'
    },
    BPageRotate180: {
        validation: %w[ON OFF],
        description: 'Rotate by 180° (back)'
    },
    GMagCoercivity: {
        validation: %w[OFF LOCO HICO],
        description: 'Magnetic coercivity'
    },
    GMagT1Encoding: {
        validation: %w[ISO1 ISO2 ISO3 SIPASS C2 JIS2 C4 NONE],
        description: 'Magnetic Track 1 mode'
    },
    GMagT2Encoding: {
        validation: %w[ISO1 ISO2 ISO3 SIPASS C2 JIS2 C4 NONE],
        description: 'Magnetic Track 2 mode'
    },
    GMagT3Encoding: {
        validation: %w[ISO1 ISO2 ISO3 SIPASS C2 JIS2 C4 NONE],
        description: 'Magnetic Track 3 mode'
    },
    Track1Data: {
        validation: String,
        description: 'Magnetic track 1 data'
    },
    Track2Data: {
        validation: String,
        description: 'Magnetic track 2 data'
    },
    Track3Data: {
        validation: String,
        description: 'Magnetic track 3 data'
    },
    Resolution: {
        validation: %w[DPI300 DPI600300 DPI1200300],
        description: 'Resolution'
    },
    IShortPanelShift: {
        validation: /^[0-9]+$/,
        description: 'Short panel management shift'
    },
    Passthrough: {
        validation: String,
        description: 'Passthrough/Raw data'
    },
    RawData: {
        validation: String,
        description: 'Passthrough/Raw data'
    }
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port, service) ⇒ SdkBase

Initalizes the class, sets default options

Parameters:

  • host (String)

    host or ip to Premium SDK API

  • port (String, Fixnum)

    port to Premium SDK API

  • service (String)

    servicename, used only internally (e.g. CMD or PRINT)



14
15
16
17
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 14

def initialize(host, port, service)
  @rpc = RpcClient.new(host, port)
  @service = service
end

Instance Attribute Details

#active_sessionString

Returns the active session

Returns:

  • (String)

    returns the active session



7
8
9
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 7

def active_session
  @active_session
end

Instance Method Details

#active_session?true, false

Checks if there is an active session

Returns:

  • (true, false)

    true if exist, false if not



249
250
251
252
253
254
255
256
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 249

def active_session?
  return false unless self.active_session
  return false if self.active_session == nil
  return false unless self.active_session.is_a?(String)
  return false if self.active_session.empty?

  return true
end

#call_rpc(method, args) ⇒ String, true

Makes the call to the API and returns results

Parameters:

  • method (String)

    method name for the service

  • args (String)

    arguments and parameters to send to service

Returns:

  • (String)

    returns result parameter from the response

  • (true)

    if result is “OK”



25
26
27
28
29
30
31
32
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 25

def call_rpc(method, args)
  method = sanitize_parameters(method)
  args   = sanitize_parameters(args)
  resp   = @rpc.call("#{@service}.#{method}", args)

  return true if resp == 'OK'
  return resp
end

#list_settingsHash

Returns of settings with descriptions.

Returns:

  • (Hash)

    of settings with descriptions



232
233
234
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 232

def list_settings
  return SETTINGS.map{ |key, value| [key, value[:description]] }.to_h
end

Returns string of description or false if setting does not exist.

Returns:

  • (String)

    string of description or false if setting does not exist

Raises:



226
227
228
229
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 226

def print_setting(setting)
  return SETTINGS[setting.to_sym][:description] if SETTINGS.has_key?(setting.to_sym)
  raise Error::InvalidPrintSettingError.new setting
end

#requestHash?

Method to lookup the full request

Returns:

  • (Hash)

    full json request

  • (nil)

    before first request



44
45
46
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 44

def request
  @rpc.request
end

#responseHash?

Method to lookup the full response

Returns:

  • (Hash)

    full json response

  • (nil)

    before first response



37
38
39
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 37

def response
  @rpc.response
end

#sanitize_parameters(param) ⇒ Hash, ...

Sanitizes parameters so they’re not anything other than a String

Parameters:

  • param (Any type)

    parameters to be sanitized

Returns:

  • (Hash, Array, String)

    Hash and Array get sanitized and returned as Hash and Array, everything else becomes a String



263
264
265
266
267
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 263

def sanitize_parameters(param)
  return param.map { |p| String(p) }                      if param.is_a?(Array)
  return param.map { |k, v| [String(k), String(v)] }.to_h if param.is_a?(Hash)
  return String(param)
end

#valid_base64?(string) ⇒ true, false

Basic checking for valid base64 string, as used in the SDK

Parameters:

  • string (String)

    the base64 encoded data

Returns:

  • (true, false)

    true if valid base64 string, false if not



240
241
242
243
244
245
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 240

def valid_base64?(string)
  return false unless string.is_a?(String)
  return false unless string.start_with?('base64:')

  return true
end

#valid_settings?(settings, key_only = false) ⇒ true, false

Checks if settings supplied are valid

Parameters:

  • settings (String, Array)

    setting and value, as “setting=value;setting2=value2” or [“setting=value”,“setting2=value2”]

  • key_only (true, false) (defaults to: false)

    used for checking if only setting without value. Set to true for setting only.

Returns:

  • (true, false)

    true if valid settings, false if not



198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/evolis/premium_sdk/sdk_base.rb', line 198

def valid_settings?(settings, key_only = false)
  settings = settings.split(';') if settings.include?(';')
  settings = [settings] unless settings.is_a?(Array)

  settings.each do |pair|
    if key_only
      setting = pair
    else
      return false unless pair.include?('=')
      setting, value = pair.split('=')
    end

    return false unless SETTINGS.has_key?(setting.to_sym)

    unless key_only
      return false if !value
      return false if value.is_a?(String) && value.empty?
      return false if SETTINGS[setting.to_sym][:validation].is_a?(Array) && !SETTINGS[setting.to_sym][:validation].include?(value)
      return false if SETTINGS[setting.to_sym][:validation].is_a?(Class) && !value.is_a?(SETTINGS[setting.to_sym][:validation])
      return false if SETTINGS[setting.to_sym][:validation].is_a?(Regexp) && value.is_a?(String) && value !~ SETTINGS[setting.to_sym][:validation]
    end

    return true
  end
end