class Adzerk::Client
Constants
- BASE_SLEEP
- DEFAULTS
- MAX_ATTEMPTS
- MAX_SLEEP
- SDK_HEADER_NAME
- SDK_HEADER_VALUE
- VERSION
Attributes
ad_types[R]
ads[R]
advertisers[R]
campaigns[R]
categories[R]
channel_site_maps[R]
channels[R]
creative_maps[R]
creative_templates[R]
creatives[R]
day_parts[R]
distance_targetings[R]
flights[R]
geotargetings[R]
instant_counts[R]
invitations[R]
logins[R]
priorities[R]
publishers[R]
reports[R]
scheduled_reports[R]
sites[R]
sitezonetargetings[R]
zones[R]
Public Class Methods
new(key, opts = {})
click to toggle source
# File lib/adzerk/client.rb, line 26 def initialize(key, opts = {}) @api_key = key @config = DEFAULTS.merge!(opts) @logins = Adzerk::ApiEndpoint.new(:client => self, :endpoint => 'login') @sites = Adzerk::ApiEndpoint.new(:client => self, :endpoint => 'site') @ad_types = Adzerk::ApiEndpoint.new(:client => self, :endpoint => 'adtypes', :subendpoint => 'channel', :datakey => 'adtype') @flights = Adzerk::Flight.new(:client => self, :endpoint => 'flight') @zones = Adzerk::ApiEndpoint.new(:client => self, :endpoint => 'zone') @campaigns = Adzerk::Campaign.new(:client => self, :endpoint => 'campaign') @channels = Adzerk::Channel.new(:client => self, :endpoint => 'channel') @priorities = Adzerk::Priority.new(:client => self, :endpoint => 'priority') @advertisers = Adzerk::Advertiser.new(:client => self, :endpoint => 'advertiser') @publishers = Adzerk::Publisher.new(:client => self, :endpoint => 'publisher') @creatives = Adzerk::Creative.new(:client => self, :endpoint => 'creative') @creative_maps = Adzerk::CreativeMap.new(:client => self) @ads = @creative_maps @invitations = Adzerk::Invitation.new(:client => self) @reports = Adzerk::Reporting.new(:client => self) @channel_site_maps = Adzerk::ChannelSiteMap.new(:client => self) @geotargetings = Adzerk::GeoTargeting.new(:client => self, :endpoint => 'geotargeting') @sitezonetargetings = Adzerk::SiteZoneTargeting.new(:client => self, :endpoint => 'sitezone') @categories = Adzerk::Category.new(:client => self, :endpoint => 'category') @instant_counts = Adzerk::InstantCount.new(:client => self) @creative_templates = Adzerk::CreativeTemplate.new(:client => self) @scheduled_reports = Adzerk::ScheduledReporting.new(:client => self, :endpoint => 'report') @day_parts = Adzerk::DayParting.new(:client => self, :endpoint => 'dayparting') @distance_targetings = Adzerk::DistanceTargeting.new(:client => self, :endpoint => 'distancetargeting') end
Public Instance Methods
create_creative(data={}, image_path='', version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 107 def create_creative(data={}, image_path='', version: 'v1') response = nil attempt = 0 loop do response = RestClient.post(@config[:host] + version + '/creative', {:creative => camelize_data(data).to_json}, :X_Adzerk_ApiKey => @api_key, :X_Adzerk_Sdk_Version => SDK_HEADER_VALUE, :accept => :json) break if response.code != 429 or attempt >= (@config[:max_attempts] || MAX_ATTEMPTS) sleep(rand(0.0..[MAX_SLEEP, BASE_SLEEP * 2 ** attempt].min())) attempt += 1 end response = upload_creative(JSON.parse(response)["Id"], image_path) unless image_path.empty? response end
delete_request(url, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 63 def delete_request(url, version: 'v1') uri = URI.parse("#{@config[:host]}#{version}/#{url}") request = Net::HTTP::Delete.new(uri.request_uri) request.add_field(@config[:header], @api_key) request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE) send_request(request, uri) end
get_request(url, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 55 def get_request(url, version: 'v1') uri = URI.parse("#{@config[:host]}#{version}/#{url}") request = Net::HTTP::Get.new(uri.request_uri) request.add_field(@config[:header], @api_key) request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE) send_request(request, uri) end
post_json_request(url, data, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 80 def post_json_request(url, data, version: 'v1') uri = URI.parse("#{@config[:host]}#{version}/#{url}") request = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/json') request.add_field(@config[:header], @api_key) request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE) request.body = data.to_json send_request(request, uri) end
post_request(url, data, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 71 def post_request(url, data, version: 'v1') uri = URI.parse("#{@config[:host]}#{version}/#{url}") request = Net::HTTP::Post.new(uri.request_uri) request.add_field(@config[:header], @api_key) request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE) request.set_form_data(data) send_request(request, uri) end
put_json_request(url, data, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 98 def put_json_request(url, data, version: 'v1') uri = URI.parse("#{@config[:host]}#{version}/#{url}") request = Net::HTTP::Put.new(uri.request_uri, 'Content-Type' => 'application/json') request.add_field(@config[:header], @api_key) request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE) request.body = data.to_json send_request(request, uri) end
put_request(url, data, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 89 def put_request(url, data, version: 'v1') uri = URI.parse("#{@config[:host]}#{version}/#{url}") request = Net::HTTP::Put.new(uri.request_uri) request.add_field(@config[:header], @api_key) request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE) request.set_form_data(data) send_request(request, uri) end
send_request(request, uri)
click to toggle source
# File lib/adzerk/client.rb, line 145 def send_request(request, uri) response = nil attempt = 0 http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == 'https' loop do response = http.request(request) break if response.code != "429" or attempt >= (@config[:max_attempts] || MAX_ATTEMPTS) sleep(rand(0.0..[MAX_SLEEP, BASE_SLEEP * 2 ** attempt].min())) attempt += 1 end if response.kind_of? Net::HTTPClientError or response.kind_of? Net::HTTPServerError error_response = JSON.parse(response.body) msg = error_response["message"] || error_response["Error"] || response.body raise Adzerk::ApiError.new(msg) end response end
upload_creative(id, image_path, size_override: false, version: 'v1')
click to toggle source
# File lib/adzerk/client.rb, line 125 def upload_creative(id, image_path, size_override: false, version: 'v1') response = nil attempt = 0 image = File.new(image_path, 'rb') url = @config[:host] + version + '/creative/' + id.to_s + '/upload' url += '?sizeOverride=true' if size_override loop do response = RestClient.post(url, {:image => image}, "X-Adzerk-ApiKey" => @api_key, SDK_HEADER_NAME => SDK_HEADER_VALUE, :accept => :mime) break if response.code != 429 or attempt >= (@config[:max_attempts] || MAX_ATTEMPTS) sleep(rand(0.0..[MAX_SLEEP, BASE_SLEEP * 2 ** attempt].min())) attempt += 1 end response end