Sha256: 52eefbe486fab2782c2cd82893068da30c3f8af1e8a8cc1ac66246e64248b03d
Contents?: true
Size: 1.57 KB
Versions: 4
Compression:
Stored size: 1.57 KB
Contents
require 'net/https' require 'uri' require 'cgi' require 'houdini/model' require 'houdini/task' require 'houdini/task_manager' require 'houdini/postback_processor' require 'houdini/engine' module Houdini mattr_accessor :environment, :api_key, :app_url, :app_uri, :app_host def self.setup(environment, options) self.environment = environment.to_s self.api_key = options[:api_key] self.app_url = options[:app_host] || options[:app_url] self.app_uri = URI.parse(self.app_url) end RequestError = Class.new(NameError) HostError = Class.new(NameError) HOST = 'v1.houdiniapi.com' def self.submit!(blueprint, class_name, object_id, input_params) unless environment.to_s == 'test' request( :environment => environment, :api_key => api_key, :blueprint => blueprint, :input => input_params, :postback_url => "#{app_uri.scheme}://#{app_uri.host}:#{app_uri.port}/houdini/#{CGI.escape(class_name)}/#{object_id}/postbacks" ) end end def self.request(params) # TODO: this should validate sooner raise HostError, "Houdini.app_url should specify http:// or https://" unless app_url.match(/^https?\:\/\//) url = File.join("https://", HOST, "tasks.json") uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE response, body = http.post(uri.path, params.to_json) if response.code != "200" raise RequestError, "The request to houdini failed with code #{response.code}: #{body}" end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
houdini-0.3.4 | lib/houdini.rb |
houdini-0.3.3 | lib/houdini.rb |
houdini-0.3.2 | lib/houdini.rb |
houdini-0.3.1 | lib/houdini.rb |