class CompanionApi::Request
Constants
- OAUTH_CALLBACK
- SQEX_AUTH_URI
- SQEX_LOGIN_URI
- URI
- URI_SE
- VERSION
Attributes
args[RW]
headers[RW]
Public Class Methods
new(args = {})
click to toggle source
# File lib/companion_api/request.rb, line 15 def initialize(args = {}) defaults = { version: VERSION, endpoint: nil, json: nil, form: nil, query: nil, cookies: nil, redirect: true, return202: false, } @args = args.reverse_merge(defaults) raise ComapnionApi::Error, 'maximum redirects reached' if args[:redirects].to_i > 3 @args[:version] = '' if @args[:uri].include?(URI_SE) @headers = { 'Accept' => '*/*', 'Accept-Language' => 'en-gb', 'Accept-Encoding' => 'br, gzip, deflate', 'User-Agent' => 'ffxivcomapp-e/1.0.5.0 CFNetwork/976 Darwin/18.2.0', 'request-id' => @args[:requestId] || CompanionApi.generate_uuid, 'token' => @args[:token], } @headers = @headers.reverse_merge(args[:headers]) if args[:headers].present? end
Public Instance Methods
get!()
click to toggle source
# File lib/companion_api/request.rb, line 49 def get! execute!(:get) end
post!()
click to toggle source
# File lib/companion_api/request.rb, line 45 def post! execute!(:post) end
Protected Instance Methods
endpoint()
click to toggle source
# File lib/companion_api/request.rb, line 94 def endpoint return '' if @args[:absolute] @args[:version] + @args[:endpoint] end
execute!(method)
click to toggle source
# File lib/companion_api/request.rb, line 55 def execute!(method) CompanionApi.debug("executing %{method} to endpoint %{endpoint} with url %{uri}", method: method, endpoint: endpoint, uri: @args[:uri]) # FileUtils.touch("/tmp/cookies.dat") # jar = HTTP::CookieJar.new # jar.load("/tmp/cookies.dat") conn = Faraday.new(url: @args[:uri]) do |builder| # builder.response :logger builder.request :url_encoded builder.use FaradayMiddleware::FollowRedirects # builder.use :cookie_jar, jar: jar builder.use :cookie_jar builder.adapter :net_http end 30.times do body = (@args[:json] || @args[:form]) res = conn.send(method) do |req| req.url(endpoint, @args[:query]) req.headers = @headers req.body = body end CompanionApi.debug("received status %{status}", status: res.status) raise CompanionApi::ApiError, res.body if res.status == 500 raise CompanionApi::TokenExpiredError, 'token has expired' if res.status == 403 return res if @args[:return202] || res.status != 202 sleep(0.5) end raise CompanionApi::Error, 'could not get a valid response after 30 tries' end