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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Simplify service creation. Minor fixes by dim · Pull Request #24 · simplifi/appnexusapi · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InsertionOrderService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
5 changes: 5 additions & 0 deletions lib/appnexusapi/services/inventory_list_item_service.rb
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
class AppnexusApi::InventoryListService < AppnexusApi::Service
end
Comment thread
dim marked this conversation as resolved.
12 changes: 4 additions & 8 deletions lib/appnexusapi/services/log_level_data_service.rb
Original file line numberDiff line numberDiff 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
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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