class HerdstServicecall::Caller
Attributes
config[RW]
responder[RW]
Public Class Methods
new(config)
click to toggle source
# File lib/herdst_servicecall/caller.rb, line 12 def initialize(config) self.config = config end
Public Instance Methods
call(service_name, event_name, data)
click to toggle source
# File lib/herdst_servicecall/caller.rb, line 17 def call(service_name, event_name, data) service_endpoint = @config.get_service(service_name.to_sym) raise "No service endpoint!" unless service_endpoint call_endpoint = service_endpoint + @config.event_path + "?" + { :token => get_token }.to_query response = send_request!(call_endpoint, Request.new(event_name, data)) Response.parse(response) end
Private Instance Methods
get_token()
click to toggle source
# File lib/herdst_servicecall/caller.rb, line 42 def get_token payload = { :iat => (Time.now.utc.to_i - 1), :nbf => (Time.now.utc.to_i - 10), :exp => (Time.now.utc.to_i + 300) } JWT.encode(payload, self.config.jwt_secret, self.config.jwt_algorithm) end
make_request!(http, request)
click to toggle source
# File lib/herdst_servicecall/caller.rb, line 52 def make_request!(http, request) http.request(request) end
send_request!(endpoint, service_request)
click to toggle source
# File lib/herdst_servicecall/caller.rb, line 31 def send_request!(endpoint, service_request) uri = URI.parse(endpoint) http = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == "https") request = Net::HTTP::Post.new(uri.to_s) request.content_type = "application/json" request.body = service_request.to_json make_request!(http, request) end