Module: HaveAPI::Server::ServerHelpers
- Defined in:
- lib/haveapi/server.rb
Instance Method Summary collapse
- #access_control ⇒ Object
- #api_version ⇒ Object
- #authenticate!(v) ⇒ Object
- #authenticated?(v) ⇒ Boolean
- #base_url ⇒ Object
- #current_user ⇒ Object
- #doc(file) ⇒ Object
- #host ⇒ Object
- #logout_url ⇒ Object
- #pretty_format(obj) ⇒ Object
- #report_error(code, headers, msg) ⇒ Object
- #require_auth! ⇒ Object
- #root ⇒ Object
- #sort_hash(hash) ⇒ Object
- #urlescape(v) ⇒ Object
- #version ⇒ Object
Instance Method Details
#access_control ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/haveapi/server.rb', line 45 def access_control if request.env['HTTP_ORIGIN'] && request.env['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] halt 200, { 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'GET,POST,OPTIONS,PATCH,PUT,DELETE', 'Access-Control-Allow-Credentials' => 'false', 'Access-Control-Allow-Headers' => settings.api_server.allowed_headers, 'Access-Control-Max-Age' => (60*60).to_s }, '' end end |
#api_version ⇒ Object
106 107 108 |
# File 'lib/haveapi/server.rb', line 106 def api_version @v end |
#authenticate!(v) ⇒ Object
33 34 35 |
# File 'lib/haveapi/server.rb', line 33 def authenticate!(v) require_auth! unless authenticated?(v) end |
#authenticated?(v) ⇒ Boolean
37 38 39 40 41 42 43 |
# File 'lib/haveapi/server.rb', line 37 def authenticated?(v) return @current_user if @current_user @current_user = settings.api_server.send(:do_authenticate, v, request) settings.api_server.call_hooks_for(:post_authenticated, args: @current_user) @current_user end |
#base_url ⇒ Object
90 91 92 |
# File 'lib/haveapi/server.rb', line 90 def base_url "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}" end |
#current_user ⇒ Object
57 58 59 |
# File 'lib/haveapi/server.rb', line 57 def current_user @current_user end |
#doc(file) ⇒ Object
86 87 88 |
# File 'lib/haveapi/server.rb', line 86 def doc(file) markdown :"../../../doc/#{file}" end |
#host ⇒ Object
94 95 96 |
# File 'lib/haveapi/server.rb', line 94 def host request.env['HTTP_HOST'].split(':').first end |
#logout_url ⇒ Object
81 82 83 84 |
# File 'lib/haveapi/server.rb', line 81 def logout_url ret = url("#{root}_logout") ret.insert(ret.index('//') + 2, '_log:out@') end |
#pretty_format(obj) ⇒ Object
61 62 63 64 |
# File 'lib/haveapi/server.rb', line 61 def pretty_format(obj) ret = '' PP.pp(obj, ret) end |
#report_error(code, headers, msg) ⇒ Object
71 72 73 74 75 |
# File 'lib/haveapi/server.rb', line 71 def report_error(code, headers, msg) @halted = true content_type @formatter.content_type, charset: 'utf-8' halt code, headers, @formatter.format(false, nil, msg, version: false) end |
#require_auth! ⇒ Object
66 67 68 69 |
# File 'lib/haveapi/server.rb', line 66 def require_auth! report_error(401, {'WWW-Authenticate' => 'Basic realm="Restricted Area"'}, 'Action requires user to authenticate') end |
#root ⇒ Object
77 78 79 |
# File 'lib/haveapi/server.rb', line 77 def root settings.api_server.root end |
#sort_hash(hash) ⇒ Object
102 103 104 |
# File 'lib/haveapi/server.rb', line 102 def sort_hash(hash) hash.sort { |a, b| a[0] <=> b[0] } end |
#urlescape(v) ⇒ Object
98 99 100 |
# File 'lib/haveapi/server.rb', line 98 def urlescape(v) CGI.escape(v) end |