Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
#!/usr/bin/env rake
require "bundler/gem_tasks"
require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec)
task default: %i[spec]
4 changes: 4 additions & 0 deletions appnexusapi.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ Gem::Specification.new do |gem|
gem.require_paths = ["lib"]
gem.version = AppnexusApi::VERSION

gem.required_ruby_version = '>= 2.2'

gem.add_dependency 'faraday', '~> 0.9'
gem.add_dependency 'faraday_middleware'
gem.add_dependency 'multi_json'
gem.add_dependency 'retriable', '>= 2.0'

gem.add_development_dependency 'bundler', '>= 1.2.0'
gem.add_development_dependency 'rake'
gem.add_development_dependency 'rspec'
gem.add_development_dependency 'rspec-its'
gem.add_development_dependency 'dotenv'
gem.add_development_dependency 'pry'
gem.add_development_dependency 'vcr'
Expand Down
3 changes: 2 additions & 1 deletion lib/appnexusapi/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,11 @@ def delete(route, body=nil, headers={})
private

def run_request(method, route, body, headers)
login unless is_authorized?
response = {}

Retriable.retriable(on: Unauthorized, on_retry: Proc.new { logout }) do
login unless is_authorized?

Retriable.retriable(on: RateLimitExceeded, on_retry: RATE_LIMIT_WAITER) do
begin
response = @connection.run_request(
Expand Down
5 changes: 2 additions & 3 deletions lib/appnexusapi/read_only_service.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
module AppnexusApi
class ReadOnlyService < Service
def initialize(connection)
@read_only = true
super(connection)
def initialize(connection, **opts)
super(connection, read_only: true, **opts)
end
end
end
44 changes: 23 additions & 21 deletions lib/appnexusapi/service.rb
Original file line number Diff line number Diff line change
@@ -1,31 +1,19 @@
class AppnexusApi::Service
DEFAULT_NUMBER_OF_ELEMENTS = 100

def initialize(connection)
@connection = connection
end
attr_reader :name, :plural_name, :uri_name, :plural_uri_name, :uri_suffix

def name
@name ||= begin
def initialize(connection, read_only: false, name: nil, plural_name: nil, uri_name: nil, plural_uri_name: nil, uri_suffix: nil)
@connection = connection
@name = name || begin
str = self.class.name.split('::').last.sub(/Service\z/, '')
str.gsub(/(.)([A-Z])/, '\1_\2').downcase
end
end

def plural_name
name + 's'
end

def uri_name
name.gsub('_', '-')
end

def plural_uri_name
uri_name + 's'
end

def uri_suffix
uri_name
@plural_name = plural_name || "#{@name}s"
@uri_name = uri_name || @name.gsub('_', '-')
@plural_uri_name = plural_uri_name || @plural_name.gsub('_', '-')
@uri_suffix = uri_suffix || @uri_name
@read_only = read_only
end

def get(params = {})
Expand All @@ -46,6 +34,20 @@ def get_all(params = {})
responses
end

# All returns an enumerator.
def all(params = {})
Enumerator.new do |enum|
limit = params.fetch('num_elements', DEFAULT_NUMBER_OF_ELEMENTS).to_i
offset = params.fetch('start_element', 0).to_i

begin
responses = get(params.merge('start_element' => offset))
responses.each {|res| enum << res }
offset += responses.size
end until responses.size != limit
end
end

def create(route_params = {}, body = {})
check_read_only!
route = @connection.build_url(uri_suffix, route_params)
Expand Down
8 changes: 2 additions & 6 deletions lib/appnexusapi/services/ad_server_service.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
class AppnexusApi::AdServerService < AppnexusApi::ReadOnlyService
def name
"adserver"
end

def uri_suffix
"ad-server"
def initialize(connection, **opts)
super(connection, name: 'adserver', uri_suffix: 'ad-server', **opts)
end
end
13 changes: 2 additions & 11 deletions lib/appnexusapi/services/bidder_instance_service.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
class AppnexusApi::BidderInstanceService < AppnexusApi::Service
def initialize(connection, bidder_id)
@bidder_id = bidder_id
super(connection)
end

def name
"instance"
end

def uri_suffix
"bidder-instance/#{@bidder_id}"
def initialize(connection, bidder_id, **opts)
super(connection, name: 'instance', uri_suffix: "bidder-instance/#{bidder_id}", **opts)
end

def delete(id)
Expand Down
13 changes: 2 additions & 11 deletions lib/appnexusapi/services/bidder_profile_service.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
class AppnexusApi::BidderProfileService < AppnexusApi::Service
def initialize(connection, bidder_id)
@bidder_id = bidder_id
super(connection)
end

def name
"profile"
end

def uri_suffix
"profile/#{@bidder_id}"
def initialize(connection, bidder_id, **opts)
super(connection, name: 'profile', uri_suffix: "profile/#{bidder_id}", **opts)
end

def delete(id)
Expand Down
4 changes: 2 additions & 2 deletions lib/appnexusapi/services/category_service.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class AppnexusApi::CategoryService < AppnexusApi::ReadOnlyService
def plural_name
"categories"
def initialize(connection, **opts)
super(connection, plural_name: 'categories', **opts)
end
end
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/city_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AppnexusApi::CityService < AppnexusApi::Service
def initialize(conn, **opts)
super(conn, plural_name: 'cities', **opts)
end
end
12 changes: 2 additions & 10 deletions lib/appnexusapi/services/content_category_service.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
class AppnexusApi::ContentCategoryService < AppnexusApi::Service
def initialize(connection)
super(connection)
end

def plural_name
"content_categories"
end

def plural_uri_name
"content-categories"
def initialize(connection, **opts)
super(connection, plural_name: 'content_categories', **opts)
end
end
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/country_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AppnexusApi::CountryService < AppnexusApi::Service
def initialize(conn, **opts)
super(conn, plural_name: 'countries', **opts)
end
end
8 changes: 2 additions & 6 deletions lib/appnexusapi/services/creative_template_service.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
class AppnexusApi::CreativeTemplateService < AppnexusApi::Service
def name
"template"
end

def uri_suffix
name
def initialize(connection, **opts)
super(connection, name: 'template', uri_suffix: 'template', **opts)
end

def delete(id)
Expand Down
2 changes: 2 additions & 0 deletions lib/appnexusapi/services/insertion_order_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AppnexusApi::InventoryListItemService < AppnexusApi::Service
def initialize(conn, inventory_list_id, **opts)
super(conn, uri_suffix: "inventory-list/#{inventory_list_id}/item", **opts)
end
end
2 changes: 2 additions & 0 deletions lib/appnexusapi/services/inventory_list_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,16 @@ class LogLevelDataService < AppnexusApi::ReadOnlyService
end
}.freeze

def initialize(connection, options = {})
@downloaded_files_path = options[:downloaded_files_path] || '.'
@siphon_name = options[:siphon_name] || DEFAULT_FEED
super(connection)
def initialize(connection, downloaded_files_path: '.', siphon_name: DEFAULT_FEED, **opts)
@downloaded_files_path = downloaded_files_path
@siphon_name = siphon_name
super(connection, uri_name: 'siphon', **opts)
end

def download_new_files_since(time = nil)
since(time).map { |siphon| download_resource(siphon) }
end

def uri_name
'siphon'
end

def since(time = nil)
params = {}
params[:siphon_name] = @siphon_name if @siphon_name
Expand Down
4 changes: 2 additions & 2 deletions lib/appnexusapi/services/operating_system_extended_service.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class AppnexusApi::OperatingSystemExtendedService < AppnexusApi::ReadOnlyService
def plural_name
'operating-systems-extended'
def initialize(connection, **opts)
super(connection, plural_name: 'operating-systems-extended', **opts)
end
end
2 changes: 2 additions & 0 deletions lib/appnexusapi/services/postal_code_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class AppnexusApi::PostalCodeService < AppnexusApi::Service
end
2 changes: 2 additions & 0 deletions lib/appnexusapi/services/region_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class AppnexusApi::RegionService < AppnexusApi::Service
end
8 changes: 0 additions & 8 deletions lib/appnexusapi/services/segment_service.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,2 @@
class AppnexusApi::SegmentService < AppnexusApi::Service
def initialize(connection, member_id)
@member_id = member_id
super(connection)
end

def uri_suffix
"#{super}/#{@member_id}"
end
end
13 changes: 2 additions & 11 deletions lib/appnexusapi/services/tiny_tag_service.rb
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
class AppnexusApi::TinyTagService < AppnexusApi::Service
def initialize(connection, member_id)
@member_id = member_id
super(connection)
end

def name
"tinytag"
end

def uri_suffix
"tt/#{@member_id}"
def initialize(connection, member_id, **opts)
super(connection, name: 'tinytag', uri_suffix: "tt/#{member_id}", **opts)
end
end
2 changes: 1 addition & 1 deletion lib/appnexusapi/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module AppnexusApi
VERSION = '1.1.0'.freeze
VERSION = '1.2.0'.freeze
end
4 changes: 2 additions & 2 deletions spec/connection_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
it 'returns data from expiration' do
#stub to raise error the first time and then return []
counter = 0
expect(subject).to receive(:login)
expect(subject).to receive(:login).twice
expect(subject.connection).to receive(:run_request).twice do |arg|
counter += 1
raise AppnexusApi::Unauthorized.new if counter == 1
Expand All @@ -39,7 +39,7 @@
end

before do
described_class.const_set('RATE_EXCEEDED_DEFAULT_TIMEOUT', 0)
stub_const("#{described_class}::RATE_EXCEEDED_DEFAULT_TIMEOUT", 0)
end

it 'retries 3 times' do
Expand Down
Loading