I've written a ruby gem
that uses httparty
to make various http requests
. It works from irb
and in rails
apps but I am getting a very weird behaviour when I try to use it in a sinatra
one.
The gem
looks like this
gem:
require "httparty"
class SomeAPI::Client
def initizialize(some_params)
@api_params = some_params
end
def login
login_response = HTTParty.get(@api_params[:login_url])
puts "Login Result: #{login_response}"
end
end
and when I try to login from irb
everything is fine.
Then I include it on my rails app gemfile
(gem "SomeAPI", :path => "~/dev/SomeAPI"
), setup an action in a controller and trying to login from 0:0:0:0:3000/someapi?api_params=my_params
works fine.
class SomeController < ApplicationController
def someapi
client = SomeAPI::Client.new(params[:api_params])
client.login
end
end
Finally, I try to do the same thing from my sinatra app
: I include it in the gemfile
and I try to make the request from 0:0:0:0:9292/someapi/:my_params
. However, although, the new
works fine (client
becomes a SomeAPI
object with all the attributes initizialized properly), the login
gives me a You need to sign in or sign up before continuing.
error message; as if I am trying to access a different resource (or as if login itself needs me to be authenticated beforehands to succeed). Here is the code:
class App < Sinatra::Base
get "/someapi/:my_params" do
client = SomeAPI::Client.new
client.login
end
end
I tried running the sinatra app from port 3000 (the same as the rails' default) but nothing changed.
Any ideas or leads on where to look at?
I solved my problem by adding the below code to the
login
method:(and of course changing the
request
toHTTParty.get(@api_params[:login_url], params)
)