Class: Micropub::Server::Rails::Middleware
- Inherits:
-
Object
- Object
- Micropub::Server::Rails::Middleware
- Defined in:
- lib/micropub/server/rails/middleware.rb
Defined Under Namespace
Classes: HTTPError
Instance Method Summary collapse
- #auth_token(env) ⇒ Object
- #call(env) ⇒ Object
- #check_token(env) ⇒ Object
- #error_response(status) ⇒ Object
-
#initialize(app) ⇒ Middleware
constructor
A new instance of Middleware.
- #micropub_call(env) ⇒ Object
- #request(env) ⇒ Object
- #success_response ⇒ Object
Constructor Details
#initialize(app) ⇒ Middleware
Returns a new instance of Middleware.
13 14 15 |
# File 'lib/micropub/server/rails/middleware.rb', line 13 def initialize(app) @app = app end |
Instance Method Details
#auth_token(env) ⇒ Object
37 38 39 40 |
# File 'lib/micropub/server/rails/middleware.rb', line 37 def auth_token(env) input = env["HTTP_AUTHORIZATION"] || @params["access_token"] || "" input.split("Bearer ").last end |
#call(env) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/micropub/server/rails/middleware.rb', line 17 def call(env) begin @params = request(env).params @headers = {"Content-Type" => "text/plain; charset=utf-8"} if env["PATH_INFO"] == "/micropub" check_token(env) micropub_call env else @app.call env end rescue error_response(401) end end |
#check_token(env) ⇒ Object
32 33 34 35 |
# File 'lib/micropub/server/rails/middleware.rb', line 32 def check_token(env) token = Micropub::Token.new(auth_token(env)) raise HTTPError.new env, 401 if !token.valid? end |
#error_response(status) ⇒ Object
58 59 60 |
# File 'lib/micropub/server/rails/middleware.rb', line 58 def error_response(status) [status, {}, [""]] end |
#micropub_call(env) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/micropub/server/rails/middleware.rb', line 42 def micropub_call(env) router = Micropub::Homesteading::Router.new(@params) client = Micropub::Client.new(router.as, token: auth_token(env)) response = client.post(@params.except("access_token")) raise HTTPError.new env, response.status if !response.successful? @headers["Location"] = response.location success_response end |
#request(env) ⇒ Object
62 63 64 |
# File 'lib/micropub/server/rails/middleware.rb', line 62 def request(env) Rack::Request.new(env) end |
#success_response ⇒ Object
54 55 56 |
# File 'lib/micropub/server/rails/middleware.rb', line 54 def success_response [201, @headers, [""]] end |