class ATrigger::Client
Public Class Methods
new(options = {})
click to toggle source
# File lib/ClientKernel.rb, line 22 def initialize(options = {}) symbolize_keys!(options) @@_key = options[:key] @@_secret = options[:secret] @@_apiServer = options[:apiServer] || @@_apiServer @@_apiTimeout = options[:apiTimeout] || @@_apiTimeout @@_debug = options[:debug] if options[:debug].is_a?(TrueClass) or options[:debug].is_a?(FalseClass) @@_async = options[:async] if options[:async].is_a?(TrueClass) or options[:async].is_a?(FalseClass) check_secret end
Public Instance Methods
doCreate(options)
click to toggle source
# File lib/ClientKernel.rb, line 36 def doCreate(options) check_secret symbolize_keys!(options) _timeSlice = CGI::escape(options[:timeSlice]) _url = CGI::escape(options[:url]) _tags = options[:tags] #http://www.ruby-doc.org/core-1.9.3/Hash.html _first = toISO8601(options[:first]) || "" _count = options[:count] || 1 _retries = options[:retries] || -1 _postData = options[:postData] || Hash.new() #http://www.ruby-doc.org/core-1.9.3/Hash.html _first = CGI::escape(_first.to_s); _tagsRaw = "" if not _tags.nil? _tagsRaw = dictionary2string(_tags, "tag_") end if _timeSlice.nil? || _timeSlice.empty? @@_errors += 1 fail ArgumentError, 'Must supply timeSlice as a non-empty string' end if _url.nil? || _url.empty? @@_errors += 1 fail ArgumentError, 'Must supply url as a non-empty string' end _urlQueries = "timeSlice=#{_timeSlice}&url=#{_url}&first=#{_first}&count=#{_count}&retries=#{_retries}&#{_tagsRaw}" callATrigger('tasks/create', _urlQueries , _postData) end
doDelete(_tags)
click to toggle source
# File lib/ClientKernel.rb, line 74 def doDelete(_tags) _out = actionUsingTags("tasks/delete", _tags) _out end
doGet(_tags)
click to toggle source
# File lib/ClientKernel.rb, line 91 def doGet(_tags) _out = actionUsingTags("tasks/get", _tags) _out end
doPause(_tags)
click to toggle source
# File lib/ClientKernel.rb, line 80 def doPause(_tags) _out = actionUsingTags("tasks/pause", _tags) _out end
doResume(_tags)
click to toggle source
# File lib/ClientKernel.rb, line 86 def doResume(_tags) _out = actionUsingTags("tasks/resume", _tags) _out end
errorsCount()
click to toggle source
# File lib/ClientKernel.rb, line 96 def errorsCount @@_errors end
verifyRequest(_requestIP)
click to toggle source
# File lib/ClientKernel.rb, line 100 def verifyRequest(_requestIP) _out = "" begin _out = httpRequest("/v1/ipverify?ip=#{ERB::Util.url_encode(_requestIP)}", "") return true if _out.to_s.include?("""OK""") rescue Exception => err if err.to_s.include?("""ERROR""") and err.to_s.include?("""INVALID IP ADDRESS""") return false else raise err if @@_debug end end false end
Private Instance Methods
actionUsingTags(_urlType, _tags)
click to toggle source
# File lib/ClientKernel.rb, line 117 def actionUsingTags(_urlType, _tags) check_secret begin #Creating tags query array _urlQueries = dictionary2string(_tags, 'tag_') _out = callATrigger(_urlType, _urlQueries , nil) _out rescue Exception => err @@_errors += 1 fail ArgumentError, "ATrigger: actionUsingTags, #{err}" if @@_debug end end
callATrigger(_urlType, _urlQueries, _postData)
click to toggle source
# File lib/ClientKernel.rb, line 131 def callATrigger(_urlType, _urlQueries, _postData) _queries = "?key=#{ERB::Util.url_encode(@@_key)}&secret=#{ERB::Util.url_encode(@@_secret)}&" + _urlQueries _payload = dictionary2string(_postData) _apiURL = "/v1/" + _urlType + _queries _out = "" if @@_async == true Thread.new httpRequest(_apiURL, _payload) _out = 'Disable async requests to get success result /or/ error details.' else _out = httpRequest(_apiURL, _payload) end _out end
check_secret()
click to toggle source
private: Checks that the secret is properly initialized
# File lib/ClientKernel.rb, line 198 def check_secret fail 'Key/Secret must be initialized' if @@_secret.nil? end
dictionary2string(inHash, inPreKey = "")
click to toggle source
# File lib/ClientKernel.rb, line 183 def dictionary2string(inHash, inPreKey = "") _out = "" if not inHash.nil? inHash.each do |key, value| key = ERB::Util.url_encode(key) value = ERB::Util.url_encode(value) _out = _out + "#{inPreKey}#{key}=#{value}&" end _out = _out.chomp('&') end _out end
httpRequest(_apiURL, _payload)
click to toggle source
# File lib/ClientKernel.rb, line 148 def httpRequest(_apiURL, _payload) _out = "" request = Net::HTTP::Post.new(_apiURL, initheader = {'Content-Type' =>'application/x-www-form-urlencoded'}) request.body = _payload response = Net::HTTP.new(@@_apiServer, 443) response.use_ssl = true response.verify_mode = OpenSSL::SSL::VERIFY_NONE response.open_timeout = @@_apiTimeout response.read_timeout = @@_apiTimeout response = response.start { |http| http.request(request) } #puts _apiURL if response.code == '200' _out = response.body raise "A Trigger error responsed: #{response.body}" if _out.to_s.include?("""ERROR""") and @@_debug else @@_errors += 1 raise "A Trigger HTTP result error: #{response.code} #{response.message}: #{response.body}" if @@_debug end _out end
stringify_keys(hash)
click to toggle source
# File lib/ClientKernel.rb, line 212 def stringify_keys(hash) hash.inject({}) { |memo, (k,v)| memo[k.to_s] = v; memo } end
symbolize_keys(hash)
click to toggle source
# File lib/ClientKernel.rb, line 204 def symbolize_keys(hash) hash.inject({}) { |memo, (k,v)| memo[k.to_sym] = v; memo } end
symbolize_keys!(hash)
click to toggle source
# File lib/ClientKernel.rb, line 208 def symbolize_keys!(hash) hash.replace symbolize_keys(hash) end
toISO8601(inDate)
click to toggle source
# File lib/ClientKernel.rb, line 173 def toISO8601(inDate) _out = inDate if inDate.to_s.include?(" ") or inDate.to_s.include?("/") #Make ISO format _out = DateTime.parse(inDate).iso8601 end _out end