class PlayStationNetwork::API
Attributes
config[RW]
options[RW]
Public Class Methods
new(*options)
click to toggle source
# File lib/playstationnetwork/api.rb, line 57 def initialize(*options) raise CONFIG_ERROR unless PlayStationNetwork.valid? @config = PlayStationNetwork.configuration @options = { api_key: config.key, api_secret: config.secret, response_type: 'json' } end
Public Instance Methods
post(url, dig_to: [], xml: false)
click to toggle source
response(http.request(request), dig_to) end
end
# File lib/playstationnetwork/api.rb, line 81 def post(url, dig_to: [], xml: false) uri = URI.parse([config.url, url].join) Net::HTTP.start(uri.host, uri.port, use_ssl: (uri.scheme == 'https'), verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http| request = Net::HTTP::Post.new(uri.request_uri) request.set_form_data(options) response(http.request(request), dig_to, xml) end end
Private Instance Methods
parse_xml(response)
click to toggle source
# File lib/playstationnetwork/api.rb, line 114 def parse_xml(response) xml_parsed = response .gsub('<?xml version=\"1.0\"?>', '') .gsub('<\/', '</') .tr('"', '') return Hash.from_xml(xml_parsed).to_json end
response(request, dig_to, xml)
click to toggle source
# File lib/playstationnetwork/api.rb, line 94 def response(request, dig_to, xml) if request.code == '200' if xml body = parse_xml(request.body) else body = request.body end if dig_to.empty? JSON.parse(body, object_class: OpenStruct) else results = JSON.parse(body, object_class: OpenStruct).dig(*dig_to) results.pop if results&.last == 'Empty Node' return results end else raise "There was a problem parsing the JSON. Most likely an API problem: #{ request.code }" end end