lib/two_performant.rb in 2Performant-0.0.2 vs lib/two_performant.rb in 2Performant-0.0.3
- old
+ new
@@ -5,134 +5,158 @@
include HTTParty
format :xml
headers 'Content-Type' => 'text/xml'
attr_accessor :user, :pass, :host, :version, :auth_type, :oauth, :oauth_request
-
- def initialize(auth_type, auth_obj, host)
- if auth_type == :simple
+
+ def initialize(auth_type, auth_obj, host)
+ if auth_type == :simple
self.class.basic_auth auth_obj[:user], auth_obj[:pass]
- elsif auth_type == :oauth
+ elsif auth_type == :oauth
self.oauth = TwoPerformant::OAuth.new(auth_obj, host)
- else
+ else
return false
end
self.version = "v1.0"
self.auth_type = auth_type
self.host = host
self.class.base_uri host
- end
+ end
# =======
- # Users
+ # Users
# =======
def user_show(user_id)
self.hook("/users/#{user_id}.xml", "user");
end
- # Display public information about the logged in user
- def user_loggedin
+ # Display public information about the logged in user
+ def user_loggedin
self.hook("/users/loggedin.xml", "user");
end
# ===========
- # Campaigns
+ # Campaigns
# ===========
- # List campaigns. Displays the first 6 entries by default.
- def campaigns_list(category_id=nil, page=1, perpage=6)
+ # List campaigns. Displays the first 6 entries by default.
+ def campaigns_list(category_id=nil, page=1, perpage=6)
request = {
'category_id' => category_id,
'page' => page,
'perpage' => perpage
}
-
+
self.hook("/campaigns.xml", "campaign", request, 'GET')
end
- # Search for campaigns
- def campaigns_search(search, page = 1, perpage = 6)
+ # Search for campaigns
+ def campaigns_search(search, page = 1, perpage = 6)
request = {
'page' => page,
'perpage' => perpage,
'search' => search
}
-
+
self.hook("/campaigns/search.xml", "campaign", request, 'GET')
end
- # Display public information about a campaign
- def campaign_show(campaign_id)
+ # Display public information about a campaign
+ def campaign_show(campaign_id)
self.hook("/campaigns/#{campaign_id}.xml", "campaign")
end
- # Affiliates: List campaigns which have the logged in user accepted
- def campaigns_listforaffiliate
+ # Affiliates: List campaigns which have the logged in user accepted
+ def campaigns_listforaffiliate
self.hook("/campaigns/listforaffiliate.xml", "campaign")
end
- # Merchants: List all campaigns created by the logged in user
- def campaigns_listforowner
+ # Merchants: List all campaigns created by the logged in user
+ def campaigns_listforowner
self.hook("/campaigns/listforowner.xml", "campaign")
end
- # Merchants: Display complete information about a campaign (only available to owner)
- def campaign_showforowner(campaign_id)
+ # Merchants: Display complete information about a campaign (only available to owner)
+ def campaign_showforowner(campaign_id)
self.hook("/campaigns/#{campaign_id}/showforowner.xml", "campaign")
end
-
- # Merchants: Update a campaign
- def campaign_update(campaign_id, campaign)
+
+ # Merchants: Update a campaign
+ def campaign_update(campaign_id, campaign)
request = {
'campaign' => campaign
}
self.hook("/campaigns/#{campaign_id}.xml", "campaign", request, 'PUT')
end
-
+
# Create a Deep Link. This method was created so it wouldn't make a request for every Quick Link.
- # You may need to get some data before using it.
- def campaign_quicklink(campaign_id, aff_code, redirect)
+ # You may need to get some data before using it.
+ def campaign_quicklink(campaign_id, aff_code, redirect)
url = "#{self.host}/events/click?ad_type=quicklink&aff_code=#{aff_code}&unique=#{campaign_id}&redirect_to=#{redirect}"
- if (self.auth_type == :oauth)
+ if (self.auth_type == :oauth)
url << "&app=#{self.oauth}"
end
url
end
# ============
- # Affiliates
+ # Sales
# ============
- # Search for affiliates
- def affiliates_search(search, page=1, perpage=6)
+ def sale_create(campaign_id, sale)
request = {
+ 'sale' => sale
+ }
+
+ self.hook("/campaigns/#{campaign_id}/sales.xml", "sale", request, "POST")
+ end
+
+ # ============
+ # Leads
+ # ============
+
+ def lead_create(campaign_id, sale)
+ request = {
+ 'lead' => lead
+ }
+
+ self.hook("/campaigns/#{campaign_id}/leads.xml", "lead", request, "POST")
+ end
+
+ # ============
+ # Affiliates
+ # ============
+
+ # Search for affiliates
+ def affiliates_search(search, page=1, perpage=6)
+ request = {
'page' => page,
'perpage' => perpage,
'search' => search
}
self.hook("/affiliates/search", "user", request, 'GET')
end
- # Merchants: List affiliates approved in campaigns
- def affiliates_listformerchant(campaign_id=nil)
- request = {
+ # Merchants: List affiliates approved in campaigns
+ def affiliates_listformerchant(campaign_id=nil)
+ request = {
'campaign_id' => campaign_id
}
self.hook("/affiliates/listformerchant", "user", request, 'GET')
end
-
+
# =============
- # Commissions
+ # Commissions
# =============
-
+
# Search for commissions. Month: 01 to 12; Year: 20xx. Status: accepted, pending or rejected. nil if empty search.
- def commissions_search(options, campaign_id=nil, month=nil, year=nil, page=1, perpage=6)
+ def commissions_search(options, campaign_id=nil, month=nil, year=nil, page=1, perpage=6)
request = {
'campaign_id' => campaign_id,
'month' => month,
'year' => year,
'page' => page,
@@ -142,283 +166,293 @@
request.merge(options)
self.hook("/commissions/search.xml", "commission", request, 'GET')
end
- # Merchants: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
- def commissions_listformerchant(campaign_id, month, year)
+ # Merchants: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
+ def commissions_listformerchant(campaign_id, month, year)
request = {
'campaign_id' => campaign_id,
'month' => month,
'year' => year
}
self.hook("/commissions/listformerchant.xml", "campaign", request, 'GET')
end
- # Affiliates: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
- def commissions_listforaffiliate(campaign_id, month, year)
+ # Affiliates: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
+ def commissions_listforaffiliate(campaign_id, month, year)
request = {
'campaign_id' => campaign_id,
'month' => month,
'year' => year
}
self.hook("/commissions/listforaffiliate.xml", "commission", request, 'GET')
end
- # Merchant Campaign Owner or Affiliate Commission Owner: Show information about a commission
- def commission_show(commission_id)
+ # Merchant Campaign Owner or Affiliate Commission Owner: Show information about a commission
+ def commission_show(commission_id)
self.hook("/commissions/#{commission_id}.xml", "commission")
end
- # Merchant: Update a commission
- def commission_update(commission_id, commission)
+ # Merchant: Update a commission
+ def commission_update(commission_id, commission)
request = {
'commission' => commission
}
self.hook("/commissions/#{commission_id}.xml", "commission", request, 'PUT')
end
# =======
- # Sites
+ # Sites
# =======
- # List sites. Displays the first 6 entries by default.
- def sites_list(category_id=nil, page=1, perpage=6)
+ # List sites. Displays the first 6 entries by default.
+ def sites_list(category_id=nil, page=1, perpage=6)
request = {
'category_id' => category_id,
'page' => page,
'perpage' => perpage
}
self.hook("/sites.xml", "site", request)
end
- # Display information about a site
- def site_show(site_id)
+ # Display information about a site
+ def site_show(site_id)
self.hook("/sites/#{site_id}.xml", "site")
end
- # Search for sites
- def sites_search(search, page=1, perpage=6)
+ # Search for sites
+ def sites_search(search, page=1, perpage=6)
request = {
'page' => page,
'perpage' => perpage,
'search' => search
}
self.hook("/sites/search.xml", "site", request, 'GET')
end
- # Affiliates: List all sites created by the logged in user
- def sites_listforowner
+ # Affiliates: List all sites created by the logged in user
+ def sites_listforowner
self.hook("/sites/listforowner.xml", "site")
end
- # Affiliates: Update a site
- def site_update(site_id, site)
+ # Affiliates: Update a site
+ def site_update(site_id, site)
request = {
'site' => site
}
self.hook("/sites/#{site_id}.xml", "site", request, 'PUT')
end
- # Affiliates: Destroy a site
- def site_destroy(site_id)
+ # Affiliates: Destroy a site
+ def site_destroy(site_id)
self.hook("/sites/#{site_id}.xml", "site", request, 'DELETE')
end
# ============
- # Text Links
+ # Text Links
# ============
- # List text links from a campaign. Displays the first 6 entries by default.
- def txtlinks_list(campaign_id, page=1, perpage=6)
+ # List text links from a campaign. Displays the first 6 entries by default.
+ def txtlinks_list(campaign_id, page=1, perpage=6)
request = {
'page' => page,
'perpage' => perpage
}
self.hook("/campaigns/#{campaign_id}/txtlinks.xml", "txtlink", request, 'GET')
end
- # Display information about a text link
- def txtlink_show(campaign_id, txtlink_id)
+ # Display information about a text link
+ def txtlink_show(campaign_id, txtlink_id)
self.hook("/campaigns/#{campaign_id}/txtlinks/#{txtlink_id}.xml", "txtlink")
end
- # Search for text links in a campaign
- def txtlinks_search(campaign_id, search, page=1, perpage=6, sort='date')
+ # Search for text links in a campaign
+ def txtlinks_search(campaign_id, search, page=1, perpage=6, sort='date')
request = {
'page' => page,
'perpage' => perpage,
'search' => search,
'sort' => sort,
}
self.hook("/campaigns/#{campaign_id}/txtlinks/search.xml", "txtlink", request, 'GET')
end
- #
- # Merchants: Create Text Link.
#
+ # Merchants: Create Text Link.
+ #
# Txtlink must be a hash of:
# { "title" => "title",
# "url" => "url",
# "help" => "help"
# }, where "help" is optional
-
- def txtlink_create(campaign_id, txtlink)
+
+ def txtlink_create(campaign_id, txtlink)
request = {
'txtlink' => txtlink
}
self.hook("/campaigns/#{campaign_id}/txtlinks.xml", "txtlink", request, 'POST')
end
- # Merchants: Update a text link
- def txtlink_update(campaign_id, txtlink_id, txtlink)
+ # Merchants: Update a text link
+ def txtlink_update(campaign_id, txtlink_id, txtlink)
request = {
'txtlink' => txtlink
}
self.hook("/campaigns/#{campaign_id}/txtlinks/#{txtlink_id}.xml", "txtlink", request, 'PUT')
end
- # Merchants: Destroy a text link
- def txtlink_destroy(campaign_id, txtlink_id)
+ # Merchants: Destroy a text link
+ def txtlink_destroy(campaign_id, txtlink_id)
self.hook("/campaigns/#{campaign_id}/txtlinks/#{txtlink_id}.xml", "txtlink", nil, 'DELETE')
end
# ============
- # Text Ads
+ # Text Ads
# ============
- # List text ads from a campaign. Displays the first 6 entries by default.
- def txtads_list(campaign_id, page=1, perpage=6)
+ # List text ads from a campaign. Displays the first 6 entries by default.
+ def txtads_list(campaign_id, page=1, perpage=6)
request = {
'page' => page,
'perpage' => perpage
}
self.hook("/campaigns/#{campaign_id}/txtads.xml", "txtad", request, 'GET')
end
- # Display information about a text ad
- def txtad_show(campaign_id, txtad_id)
+ # Display information about a text ad
+ def txtad_show(campaign_id, txtad_id)
self.hook("/campaigns/#{campaign_id}/txtads/#{txtad_id}.xml", "txtad")
end
- # Search for text ads in a campaign
- def txtads_search(campaign_id, search, page=1, perpage=6, sort='date')
+ # Search for text ads in a campaign
+ def txtads_search(campaign_id, search, page=1, perpage=6, sort='date')
request = {
'page' => page,
'perpage' => perpage,
'search' => search,
'sort' => sort
}
self.hook("/campaigns/#{campaign_id}/txtads/search.xml", "txtad", request, 'GET')
end
- #
- # Merchants: Create Text Ad.
+ #
+ # Merchants: Create Text Ad.
# Txtad must be a hash of:
# { "title" => "title",
# "content" => "content",
# "url" => "url",
# "help" => "help"
# }, where "help" is optional
- def txtad_create(campaign_id, txtad)
+ def txtad_create(campaign_id, txtad)
request = {
'txtad' => txtad
}
-
+
self.hook("/campaigns/#{campaign_id}/txtads.xml", "txtad", request, 'POST')
end
- # Merchants: Update a text ad
- def txtad_update(campaign_id, txtad_id, txtad)
+ # Merchants: Update a text ad
+ def txtad_update(campaign_id, txtad_id, txtad)
request = {
'txtad' => txtad
}
self.hook("/campaigns/#{campaign_id}/txtads/#{txtad_id}.xml", "txtad", request, 'PUT')
end
- # Merchants: Destroy a text ad
- def txtad_destroy(campaign_id, txtad_id)
+ # Merchants: Destroy a text ad
+ def txtad_destroy(campaign_id, txtad_id)
self.hook("/campaigns/#{campaign_id}/txtads/#{txtad_id}.xml", "txtad", nil, 'DELETE')
end
# =========
- # Banners
+ # Banners
# =========
- # List banners from a campaign. Displays the first 6 entries by default.
- def banners_list(campaign_id, page=1, perpage=6)
- request = {
+ # List banners from a campaign. Displays the first 6 entries by default.
+ def banners_list(campaign_id, page=1, perpage=6)
+ request = {
'page' => page,
'perpage' => perpage
}
self.hook("/campaigns/#{campaign_id}/banners.xml", "banner", request, 'GET')
end
- # Display information about a banner
- def banner_show(campaign_id, banner_id)
+ # Display information about a banner
+ def banner_show(campaign_id, banner_id)
self.hook("/campaigns/#{campaign_id}/banners/#{banner_id}.xml", "banner")
end
- # Search for banners in a campaign
- def banners_search(campaign_id, search, page=1, perpage=6, sort='date')
+ # Search for banners in a campaign
+ def banners_search(campaign_id, search, page=1, perpage=6, sort='date')
request = {
'page' => page,
'perpage' => perpage,
'search' => search,
'sort' => sort
}
self.hook("/campaigns/#{campaign_id}/banners/search.xml", "banner", request, 'GET')
end
- # Merchants: Update a banner
- def banner_update(campaign_id, banner_id, banner)
+ # Merchants: Create a banner
+ def banner_create(campaign_id, banner, banner_picture)
request = {
+ 'banner' => banner,
+ 'banner_picture' => banner_picture
+ }
+
+ self.hook("/campaigns/#{campaign_id}/banners.xml", "banner", request, 'POST')
+ end
+
+ # Merchants: Update a banner
+ def banner_update(campaign_id, banner_id, banner)
+ request = {
'banner' => banner
}
self.hook("/campaigns/#{campaign_id}/banners/#{banner_id}.xml", "banner", request, 'PUT')
end
- # Merchants: Destroy a banner
- def banner_destroy(campaign_id, banner_id)
+ # Merchants: Destroy a banner
+ def banner_destroy(campaign_id, banner_id)
self.hook("/campaigns/#{campaign_id}/banners/#{banner_id}.xml", "banner", nil, 'DELETE')
end
# ===============
- # Widget Stores
+ # Product Stores
# ===============
- # List Widget Stores from a Campaign
- def product_stores_list(campaign_id)
- request = {
+ # List Product Stores from a Campaign
+ def product_stores_list(campaign_id)
+ request = {
'campaign_id' => campaign_id
}
self.hook("/product_stores.xml", "product-store", request)
end
- # Show a WidgetStore
- def product_store_show(product_store_id)
+ # Show a Product Store
+ def product_store_show(product_store_id)
self.hook("/product_stores/#{product_store_id}.xml", "product-store")
end
- # Show Products from a WidgetStore
- def product_store_showitems(product_store_id, category=nil, page=1, perpage=6, uniq_products=nil)
+ # Show Products from a Product Store
+ def product_store_showitems(product_store_id, category=nil, page=1, perpage=6, uniq_products=nil)
request = {
'category' => category,
'page' => page,
'perpage' => perpage
}
@@ -426,22 +460,22 @@
request['uniq_products'] = uniq_products if (uniq_products)
self.hook("/product_stores/#{product_store_id}/showitems.xml", "product-store-data", request)
end
- # Show a Product from a WidgetStore
- def product_store_showitem(product_store_id, product_id)
+ # Show a Product from a Product Store
+ def product_store_showitem(product_store_id, product_id)
request = {
'product_id' => product_id
}
self.hook("/product_stores/#{product_store_id}/showitem.xml", "product-store-data", request)
end
- # Search for Products in a WidgetStore
- def product_store_products_search(campaign_id, search, product_store_id='all', category=nil, page=1, perpage=6, sort='date', uniq_products=false)
+ # Search for Products in a Product Store
+ def product_store_products_search(campaign_id, search, product_store_id='all', category=nil, page=1, perpage=6, sort='date', uniq_products=false)
request = {
'page' => page,
'perpage' => perpage,
'search' => search,
'category' => category,
@@ -454,144 +488,213 @@
product_store_id = 'all' if !product_store_id
self.hook("/product_stores/#{product_store_id}/searchpr.xml", "product-store-data", request, 'GET')
end
- # Merchants: Update a WidgetStore
- def product_store_update(product_store_id, product_store)
+ # Merchants: Update a Product Store
+ def product_store_update(product_store_id, product_store)
request = {
'product_store' => product_store
}
self.hook("/product_stores/#{product_store_id}.xml", "product-store", request, 'PUT')
end
- # Merchants: Destroy a WidgetStore
- def product_store_destroy(product_store_id)
+ # Merchants: Destroy a Product Store
+ def product_store_destroy(product_store_id)
self.hook("/product_stores/#{product_store_id}.xml", "product-store", nil, 'DELETE')
end
- #
- # Merchants: Create a WidgetStoreProduct.
- # WidgetStoreProduct must be a hash of:
+ #
+ # Merchants: Create a Product Store Product.
+ # Product Store Product must be a hash of:
# { "title" => "title",
# "description" => "desc",
# "caption" => "caption",
- # "price" => "price(integer in RON)",
+ # "price" => "price(integer in RON)",
# "promoted" => "promoted (0 or 1)",
# "category" => "category",
- # "subcategory" => "subcategory",
- # "url" => "url",
+ # "subcategory" => "subcategory",
+ # "url" => "url",
# "image_url" => "url to image location",
# "prid" => "product id"
# }
- def product_store_createitem(product_store_id, product)
+ def product_store_createitem(product_store_id, product)
request = {
'product' => product
}
self.hook("/product_stores/#{product_store_id}/createitem.xml", "product-store-data", request, 'POST')
end
- # Merchants: Update a product
- def product_store_updateitem(product_store_id, product_id, product)
+ # Merchants: Update a product
+ def product_store_updateitem(product_store_id, product_id, product)
request = {
'product' => product,
'product_id' => product_id
}
self.hook("/product_stores/#{product_store_id}/updateitem.xml", "product-store-data", request, 'PUT')
end
- # Merchants: Destroy a product
- def product_store_destroyitem(product_store_id, product_id)
+ # Merchants: Destroy a product
+ def product_store_destroyitem(product_store_id, product_id)
request = {
'pr_id' => product_id
}
self.hook("/product_stores/#{product_store_id}/destroyitem.xml", "product-store-data", request, 'DELETE')
end
# =====================
- # Affiliate Ad Groups
+ # Affiliate Ad Groups
# =====================
-
- # Affiliates: List Ad Groups
- def ad_groups_list
+
+ # Affiliates: List Ad Groups
+ def ad_groups_list
self.hook("/ad_groups.xml", "ad_group", nil, "GET")
end
- # Affiliates: Display information about an Ad Group
- def ad_group_show(ad_group_id)
+ # Affiliates: Display information about an Ad Group
+ def ad_group_show(ad_group_id)
self.hook("/ad_groups/#{ad_group_id}.xml", "ad_group", nil, "GET")
end
- # Affiliates: Destroy an Ad Group
- def ad_group_destroy(ad_group_id)
+ # Affiliates: Add item to an Ad Group / Crate new Ad Group
+ def ad_group_createitem(group_id, tool_type, tool_id, new_group = nil)
+ request = {
+ 'group_id' => group_id,
+ 'new_group' => new_group,
+ 'tool_type' => tool_type,
+ 'tool_id' => tool_id
+ }
+
+ self.hook("/ad_groups/createitem.xml", "ad_group", request, 'POST')
+ end
+
+ # Affiliates: Destroy an Ad Group
+ def ad_group_destroy(ad_group_id)
self.hook("/ad_groups/#{ad_group_id}.xml", "ad_group", nil, "DELETE")
end
- # Affiliates: Delete an Tool from a Group. tooltype is one of 'txtlink', 'txtad' or 'banner'.
- def ad_group_destroyitem(ad_group_id, tool_type, tool_id)
+ # Affiliates: Delete an Tool from a Group. tooltype is one of 'txtlink', 'txtad' or 'banner'.
+ def ad_group_destroyitem(ad_group_id, tool_type, tool_id)
request = {
'tool_type' => tool_type,
'tool_id' => tool_id
}
self.hook("/ad_groups/#{ad_group_id}/destroyitem.xml", "ad_group", request, "DELETE")
end
+ #=================
+ # Affiliate Feeds
+ #=================
+
+ # Affiliates: List Feeds
+ def feeds_list()
+ self.hook("/feeds.xml", "feed", nil, "GET")
+ end
+
+ # Affiliates: Create a Feed
+ def feed_create(feed)
+ request = {
+ 'feed' => feed
+ }
+
+ self.hook("/feeds.xml", "feed", request, 'POST')
+ end
+
+ # Affiliates: Update a Feed
+ def feed_update(feed_id, feed)
+ request = {
+ 'feed' => feed
+ }
+
+ self.hook("/feeds/#{feed_id}.xml", "feed", request, 'PUT')
+ end
+
+
+ # Affiliates: Destroy a Feed
+ def feed_destroy(feed_id)
+ self.hook("/feeds/#{feed_id}.xml", "feed", nil, "DELETE")
+ end
+
# ==========
- # Messages
+ # Messages
# ==========
- # List received messages. Displays the first 6 entries by default.
- def received_messages_list(page=1, perpage=6)
+ # List received messages. Displays the first 6 entries by default.
+ def received_messages_list(page=1, perpage=6)
request = {
'page' => page,
'perpage' => perpage
}
self.hook("/messages.xml", "message", nil, "GET")
end
- # List sent messages. Displays the first 6 entries by default.
- def sent_messages_list(page=1, perpage=6)
+ # List sent messages. Displays the first 6 entries by default.
+ def sent_messages_list(page=1, perpage=6)
request = {
'page' => page,
'perpage' => perpage
}
self.hook("/messages/sent.xml", "message", nil, "GET")
end
- # Display information about a message
- def message_show(message_id)
+ # Display information about a message
+ def message_show(message_id)
self.hook("/messages/#{message_id}.xml", "message")
end
- # Destroy a message
- def message_destroy(message_id)
+ # Destroy a message
+ def message_destroy(message_id)
self.hook("/messages/#{message_id}.xml", "message", nil, 'DELETE')
end
- def hook(path, expected, send = nil, method = 'GET') #:nodoc:
+ #=======
+ # Hooks
+ #=======
+
+ # List Hooks
+ def hooks_list(oauth_token_key = 'current')
+ hook("/oauth_clients/{$oauth_token_key}/hooks.xml", "hook", nil, 'GET');
+ end
+
+
+ # Create a Hook
+ def hook_create(hook, oauth_token_key = 'current')
+ request = {
+ 'hook' => hook
+ }
+
+ hook("/oauth_clients/#{oauth_token_key}/hooks.xml", "hook", request, 'POST');
+ end
+
+ # Destroy a Hook
+ def hook_destroy(hook_id, oauth_token_key = 'current')
+ hook("/oauth_clients/#{oauth_token_key}/hooks/#{hook_id}.xml", "hook", nil, 'DELETE');
+ end
+
+ def hook(path, expected, send = nil, method = 'GET') #:nodoc:
params = normalize_params(send, method)
-
+
if self.oauth
result = self.oauth.send(method.downcase, "/#{version}#{path}", send, params)
else
result = self.class.send(method.downcase, "/#{version}#{path}", :body => params)
end
# scrap the container
if result.respond_to? :values
- result.values.first
+ result.values.first
else
result
end
- end
+ end
def normalize_params(params, method)
hash_to_xml(:request => params).to_s
end