Module: Firefighter::Web
- Included in:
- Identitytoolkit, RealtimeDatabase, TokenGenerator
- Defined in:
- lib/firefighter/web.rb
Instance Method Summary collapse
- #call(method, url, data = {}, headers = {}) ⇒ Object
- #logger ⇒ Object
- #sse(url, headers = {}) ⇒ Object
Instance Method Details
#call(method, url, data = {}, headers = {}) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/firefighter/web.rb', line 29 def call(method, url, data = {}, headers = {}) case method when :get response = HTTP.get(url, headers: headers) when :delete response = HTTP.delete(url, headers: headers) when :form response = HTTP.send(:post, url, form: data, headers: headers) else response = HTTP.send(method, url, json: data, headers: headers) end if response.status == 200 JSON.parse(response.body) else logger.warn "firebase #{method} failed #{url} #{response.body}" raise "firebase #{method} failed #{url} #{response.body}" end end |
#logger ⇒ Object
7 8 9 |
# File 'lib/firefighter/web.rb', line 7 def logger @logger ||= Logger.new(STDOUT) end |
#sse(url, headers = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/firefighter/web.rb', line 11 def sse(url, headers = {}) response = HTTP.get(url, headers: headers.merge(Accept: 'text/event-stream')) if response.status == 200 body = response.body while part = body.readpartial do part = part.to_s.strip next if part.empty? lines = part.split("\n") event = lines.grep(/event: (.+)/) { $1 }[0] payload = lines.grep(/data: (.+)/) { $1 }[0] yield response.connection, event, payload end end ensure response.connection.close if response end |