Module: PinchHitter

Includes:
Message::ContentType, Service::Runner
Defined in:
lib/pinch_hitter.rb,
lib/pinch_hitter/version.rb

Defined Under Namespace

Modules: Message, Service

Constant Summary collapse

VERSION =
"0.7.0"

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Message::ContentType

#determine_content_type

Methods included from Message::Json

#json_message, #valid_json?

Methods included from Service::Runner

#no_cache, #service_options, #silence_console, #start_service, #stop_service

Instance Attribute Details

#message_storeObject

Returns the value of attribute message_store.



10
11
12
# File 'lib/pinch_hitter.rb', line 10

def message_store
  @message_store
end

Instance Method Details

#connect(host, port) ⇒ Object



16
17
18
# File 'lib/pinch_hitter.rb', line 16

def connect(host, port)
  self.session = Net::HTTP.new host, port
end

#messages_directory=(dir) ⇒ Object



12
13
14
# File 'lib/pinch_hitter.rb', line 12

def messages_directory=(dir)
  self.message_store = PinchHitter::Message::MessageStore.new dir
end

#prime(endpoint, message, overrides = {}) ⇒ Object



28
29
30
# File 'lib/pinch_hitter.rb', line 28

def prime(endpoint, message, overrides={})
  store endpoint, message_store.load(message, overrides)
end

#received_messages(endpoint) ⇒ Object



47
48
49
# File 'lib/pinch_hitter.rb', line 47

def received_messages(endpoint)
  request_log(endpoint).map { |request| request.body }
end

#register_module(endpoint, handler) ⇒ Object



37
38
39
# File 'lib/pinch_hitter.rb', line 37

def register_module(endpoint, handler)
  @session.post "/register_module?endpoint=#{endpoint}", Marshal.dump(handler)
end

#request_log(endpoint) ⇒ Object



41
42
43
44
45
# File 'lib/pinch_hitter.rb', line 41

def request_log(endpoint)
  requests = @session.get "/received_requests?endpoint=#{endpoint}"
  requests = JSON.parse(requests.body)['requests']
  requests.map { |h| Struct.new(:body, :headers).new(h['body'], h['headers']) }
end

#resetObject



24
25
26
# File 'lib/pinch_hitter.rb', line 24

def reset
  @session.post '/reset', ''
end

#session=(session) ⇒ Object



20
21
22
# File 'lib/pinch_hitter.rb', line 20

def session=(session)
  @session = session
end

#store(endpoint, content) ⇒ Object



32
33
34
35
# File 'lib/pinch_hitter.rb', line 32

def store(endpoint, content)
  content_type = determine_content_type(content)
  @session.post "/store?endpoint=#{endpoint}", content, 'Content-Type' => content_type
end