class UTApi::Client

Attributes

logged_in[R]

Public Class Methods

new(email, password, hash, platform) click to toggle source
# File lib/utapi/client.rb, line 14
def initialize(email, password, hash, platform)
  @account = Account.new(email: email, password: password, hash: hash, platform: platform)
  @logged_in = false
end

Public Instance Methods

auction_status(ids) click to toggle source
# File lib/utapi/client.rb, line 37
def auction_status(ids)

  action = 'trade/status?' +  Util.encode_query_string(tradeIds: ids.join(','))

  do_request(action).tap do |response|
    raise ApiCallFailed, "response has no auctionInfo: #{response}" unless response.is_a?(Hash) and response.has_key?('auctionInfo')
  end

end
bid(trade_id, value) click to toggle source
# File lib/utapi/client.rb, line 47
def bid(trade_id, value)
  response = do_request("trade/#{trade_id}/bid", :put, {bid: value})
  response.is_a?(Hash) and response.has_key?('auctionInfo')
end
delete_from_trade_pile(trade_id) click to toggle source
# File lib/utapi/client.rb, line 90
def delete_from_trade_pile(trade_id)
  do_request("trade/#{trade_id}", :delete)
end
delete_from_watch_list(*trade_ids) click to toggle source
# File lib/utapi/client.rb, line 94
def delete_from_watch_list(*trade_ids)
  action = 'watchlist?' +  Util.encode_query_string(tradeId: trade_ids.join(','))
  do_request(action, :delete)
end
get_credits() click to toggle source
# File lib/utapi/client.rb, line 99
def get_credits
  do_request('user/credits')
end
list_item(item_id, start_price, bin_price, duration) click to toggle source
# File lib/utapi/client.rb, line 53
def list_item(item_id, start_price, bin_price, duration)

  response = do_request('auctionhouse', :post, {
      startingBid: start_price,
      duration: duration,
      itemData: {
          id: item_id
      },
      buyNowPrice: bin_price
  })

  response.is_a?(Hash) and response.has_key?('id')
end
login() click to toggle source
# File lib/utapi/client.rb, line 19
def login
  @authorization = generate_authorization
rescue LoginError
  false
else
  true
end
move_card(item_id, pile) click to toggle source
# File lib/utapi/client.rb, line 67
def move_card(item_id, pile)

  response = do_request('item', :put, {
      itemData: [{ id: item_id, pile: pile }]
  })

  response.is_a?(Hash) and response.has_key?('itemData') and response['itemData'][0]['success']
end
trade_pile() click to toggle source
# File lib/utapi/client.rb, line 76
def trade_pile
  do_request('tradepile', :get).tap do |response|
    raise ApiCallFailed, "Cannot get trade pile, response: #{response}" unless response.is_a?(Hash) and response.has_key?('auctionInfo')
  end
end
unassigned_items() click to toggle source
# File lib/utapi/client.rb, line 86
def unassigned_items
  do_request('purchased/items', :get)
end
watch_list() click to toggle source
# File lib/utapi/client.rb, line 82
def watch_list
  do_request('watchlist', :get)
end

Private Instance Methods

authorization() click to toggle source

REVIEW: LoginError can leak out if login is not explicitly called

# File lib/utapi/client.rb, line 134
def authorization
  @authorization ||= generate_authorization
end
connection() click to toggle source
# File lib/utapi/client.rb, line 144
def connection
  @connection ||= Connection.new
end
do_request(action, verb=:get, payload=nil) click to toggle source
# File lib/utapi/client.rb, line 105
def do_request(action, verb=:get, payload=nil)

  retried = false

  begin

    headers = {
        'Content-Type' => 'application/json',
        'X-HTTP-Method-Override' => verb.to_s.upcase,
        'X-UT-PHISHING-TOKEN' => authorization.phishing_token,
        'X-UT-SID' => authorization.sid
    }

    response = connection.post("#{authorization.server}/ut/game/fifa14/#{action}", payload, headers)
  rescue NotLoggedInError
    @logged_in = false
    if !retried && login
      retried = true
      retry
    else
      raise
    end
  end

  response.env[:body]
end
generate_authorization() click to toggle source
# File lib/utapi/client.rb, line 138
def generate_authorization
  LoginService.new(@account).execute.tap do |*|
    @logged_in = true
  end
end