linkshare-oauth2-api 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +102 -0
- data/Rakefile +34 -0
- data/lib/linkshare.rb +62 -0
- data/lib/linkshare/advanced_reports.rb +45 -0
- data/lib/linkshare/advertiser_search.rb +16 -0
- data/lib/linkshare/coupon.rb +37 -0
- data/lib/linkshare/events.rb +7 -0
- data/lib/linkshare/link_locator.rb +55 -0
- data/lib/linkshare/product_search.rb +57 -0
- data/lib/linkshare/request.rb +12 -0
- data/lib/linkshare/response.rb +10 -0
- data/lib/linkshare/strategy.rb +38 -0
- data/lib/linkshare/version.rb +3 -0
- data/lib/tasks/linkshare_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/linkshare_controller.rb +8 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +29 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +38 -0
- data/test/dummy/config/environments/production.rb +76 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +9 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +57 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/log/development.log +18 -0
- data/test/dummy/log/test.log +54 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/linkshare_test.rb +16 -0
- data/test/test_helper.rb +19 -0
- metadata +179 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4930165256ed7cc09ecaba18a76ec84c87a0e23d
|
4
|
+
data.tar.gz: 87eeb0821424fb5a60c57e29052c160eccc0396c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fb2b10702d180772b1c1e15ce7f7e623be8c5ef54c3aa03fe0508e24d7787a79fb93e21f7699361b06cdb603fad9663cca214f73d795e5af5846d49d05377ed9
|
7
|
+
data.tar.gz: 3a6db6a21d4fb354d3fa78c35739326da9435dc38a381e1a048ecb2517fd30865a9d85f4ccfa5029d9cdf779718001acc33ea506509d3d1eb8aa0f3517a36ff9
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2015 Rudie Shahinian
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
= Linkshare
|
2
|
+
|
3
|
+
A Ruby implementation of the Rakutan Linkshare API's. This gem provides access to the following APIs:
|
4
|
+
* [Advanced Reports - 1.0][advancedreport]
|
5
|
+
* [Coupons - 1.0][coupons]
|
6
|
+
* [Link Locator - 1.0][linklocator]
|
7
|
+
* [Product Search - 1.0][productsearch]
|
8
|
+
* [Advertiser Search - 1.0][advertisersearch]
|
9
|
+
* [Events - 1.0][events]
|
10
|
+
|
11
|
+
[advancedreport]: https://developers.rakutenmarketing.com/subscribe/apis/info?name=AdvancedReports&version=1.0&provider=LinkShare
|
12
|
+
[coupons]: https://developers.rakutenmarketing.com/subscribe/apis/info?name=Coupon&version=1.0&provider=LinkShare
|
13
|
+
[linklocator]: https://developers.rakutenmarketing.com/subscribe/apis/info?name=LinkLocator&version=1.0&provider=LinkShare
|
14
|
+
[prsoductsearch]: https://developers.rakutenmarketing.com/subscribe/apis/info?name=ProductSearch&version=1.0&provider=LinkShare
|
15
|
+
[advancedsearch]: https://developers.rakutenmarketing.com/subscribe/apis/info?name=AdvertiserSearch&version=1.0&provider=LinkShare
|
16
|
+
[event]: https://developers.rakutenmarketing.com/subscribe/apis/info?name=Events&version=1.0&provider=LinkShare
|
17
|
+
|
18
|
+
## Before You Begin
|
19
|
+
|
20
|
+
You will require an account with Linkshare, subscriptions to the API's and OAuth2 credentials which can be obtained by followng the instructions in the [Aquiring your Access Token][accesstoken] document
|
21
|
+
|
22
|
+
[accesstoken]: https://developers.rakutenmarketing.com/console/registry/resource/_system/governance/apimgt/applicationdata/provider/RakutenMarketing/artifacts/API_Developer_Portal-Acquiring_Your_Access_Token_Guide.pdf
|
23
|
+
|
24
|
+
You will need the following peices of information:
|
25
|
+
* AccountID (SID or MID)
|
26
|
+
* Account Username
|
27
|
+
* Account Password
|
28
|
+
* Consumer Key
|
29
|
+
* Consumer Secret
|
30
|
+
* Security Token
|
31
|
+
|
32
|
+
## Installation
|
33
|
+
|
34
|
+
To install **linkshare**, run the following command:
|
35
|
+
|
36
|
+
```
|
37
|
+
gem install linkshare
|
38
|
+
```
|
39
|
+
|
40
|
+
Or if you are using **bundler**, add
|
41
|
+
|
42
|
+
```
|
43
|
+
gem 'linkshare'
|
44
|
+
```
|
45
|
+
|
46
|
+
to your `Gemfile`, and run `bundle install`
|
47
|
+
|
48
|
+
Then add the following code to an initializer:
|
49
|
+
```
|
50
|
+
require 'linkshare'
|
51
|
+
Linkshare.consumer_key = "#########################"
|
52
|
+
Linkshare.consumer_secret = "#########################"
|
53
|
+
Linkshare.sid = "1234567"
|
54
|
+
Linkshare.username = "username"
|
55
|
+
Linkshare.password = "password"
|
56
|
+
Linkshare.security_token = "##################################################################"
|
57
|
+
```
|
58
|
+
|
59
|
+
## Usage Examples
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
require 'linkshare'
|
63
|
+
|
64
|
+
# Coupons API
|
65
|
+
coupn = Linkshare.coupon
|
66
|
+
coupn.fetch
|
67
|
+
coupn.getCoupons
|
68
|
+
|
69
|
+
...
|
70
|
+
|
71
|
+
# Link Locator API
|
72
|
+
merchants = Linkshare.linklocator.getMerchByAppStatus(:approved)
|
73
|
+
|
74
|
+
...
|
75
|
+
|
76
|
+
# Advanced Reports API
|
77
|
+
report = Linkshare.advancedreports.fetchReports(6, '20150101', '20160101')
|
78
|
+
|
79
|
+
...
|
80
|
+
|
81
|
+
# Product Search API
|
82
|
+
products = Linkshare.productsearch
|
83
|
+
products.addKeyword('Toy','keyword')
|
84
|
+
products.getProducts
|
85
|
+
|
86
|
+
...
|
87
|
+
|
88
|
+
# Events API
|
89
|
+
events = Linkshare.events.getEvents
|
90
|
+
|
91
|
+
...
|
92
|
+
|
93
|
+
# Advertiser Search API
|
94
|
+
advertiser = Linkshare.advertisersearch.getAdvertisers ("Example Store")
|
95
|
+
```
|
96
|
+
|
97
|
+
|
98
|
+
## License
|
99
|
+
Copyright (c) 2015 Rudie Shahinian. See [LICENSE][] for
|
100
|
+
details.
|
101
|
+
|
102
|
+
[license]: LICENSE.md
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Linkshare'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
data/lib/linkshare.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'oauth2'
|
2
|
+
require 'base64'
|
3
|
+
require 'json'
|
4
|
+
require 'linkshare/request'
|
5
|
+
require 'linkshare/response'
|
6
|
+
require 'linkshare/strategy'
|
7
|
+
require 'linkshare/coupon'
|
8
|
+
require 'linkshare/link_locator'
|
9
|
+
require 'linkshare/advanced_reports'
|
10
|
+
require 'linkshare/product_search'
|
11
|
+
require 'linkshare/events'
|
12
|
+
require 'linkshare/advertiser_search'
|
13
|
+
module Linkshare
|
14
|
+
API_URIS = {
|
15
|
+
coupon: "https://api.rakutenmarketing.com/coupon/1.0",
|
16
|
+
link_locator: "https://api.rakutenmarketing.com/linklocator/1.0",
|
17
|
+
advanced_reports: "https://api.rakutenmarketing.com/advancedreports/1.0",
|
18
|
+
product_search: "https://api.rakutenmarketing.com/productsearch/1.0",
|
19
|
+
events: "https://api.rakutenmarketing.com/events/1.0/transactions",
|
20
|
+
advertiser_search: "https://api.rakutenmarketing.com/advertisersearch/1.0"
|
21
|
+
}
|
22
|
+
SITE = "https://api.rakutenmarketing.com/"
|
23
|
+
TOKEN_URL = "token/"
|
24
|
+
|
25
|
+
class << self
|
26
|
+
attr_accessor :consumer_key, :consumer_secret, :sid, :username, :password, :security_token
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.token
|
30
|
+
@token ||= Linkshare::Strategy.new(client).get_token(Linkshare.username, Linkshare.password, Linkshare.sid);
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.coupon
|
34
|
+
@coupon ||= Linkshare::Coupon.new
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.linklocator
|
38
|
+
@linklocator ||= Linkshare::LinkLocator.new
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.productsearch
|
42
|
+
@productsearch ||= Linkshare::ProductSearch.new
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.advancedreports
|
46
|
+
@advancedreports ||= Linkshare::AdvancedReports.new
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.advertisersearch
|
50
|
+
@advertisersearch ||= Linkshare::AdvertiserSearch.new
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.events
|
54
|
+
@events ||= Linkshare::Events.new
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
def self.client
|
60
|
+
@client ||= OAuth2::Client.new(Linkshare.consumer_key, Linkshare.consumer_secret, :site => SITE, :token_url => TOKEN_URL)
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Linkshare
|
2
|
+
class AdvancedReports
|
3
|
+
def initilize()
|
4
|
+
@reportsCSV = ''
|
5
|
+
@reportsRows = []
|
6
|
+
@cols = []
|
7
|
+
end
|
8
|
+
def getCSV
|
9
|
+
@reportsCSV
|
10
|
+
end
|
11
|
+
|
12
|
+
def getReports
|
13
|
+
@reportsRows
|
14
|
+
end
|
15
|
+
|
16
|
+
def fetchReports(reportid, bdate, edate, nid = '', mid = '')
|
17
|
+
token = Linkshare.security_token
|
18
|
+
params = {
|
19
|
+
'token' => token,
|
20
|
+
'reportid' => reportid,
|
21
|
+
'bdate' => bdate,
|
22
|
+
'edate' => edate
|
23
|
+
}
|
24
|
+
unless nid == ''
|
25
|
+
params.merge({ 'nid' => nid})
|
26
|
+
end
|
27
|
+
unless mid == ''
|
28
|
+
params.merge({ 'mid' => mid})
|
29
|
+
end
|
30
|
+
@reportsRows = []
|
31
|
+
@reportsCSV = Linkshare::Request.get(Linkshare::API_URIS[:advanced_reports], :params => params).body
|
32
|
+
reportsrows = @reportsCSV.split(/\n/)
|
33
|
+
@cols = reportsrows[0].split(/,/)
|
34
|
+
reportsrows.shift
|
35
|
+
reportsrows.each { |row|
|
36
|
+
r = {}
|
37
|
+
row.split(/,/).each_with_index { | o, i|
|
38
|
+
r[@cols[i]]=o
|
39
|
+
}
|
40
|
+
@reportsRows.push(r)
|
41
|
+
}
|
42
|
+
@reportsRows
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Linkshare
|
2
|
+
class AdvertiserSearch
|
3
|
+
def getAdvertisers(merchantname = nil)
|
4
|
+
urlparam = ''
|
5
|
+
if merchantname != nil
|
6
|
+
urlparam = '?merchantname='+merchantname
|
7
|
+
end
|
8
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:advertiser_search]+urlparam))
|
9
|
+
if l['result'].has_key?('midlist')
|
10
|
+
l['result']['midlist']['merchant']
|
11
|
+
else
|
12
|
+
return {}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Linkshare
|
2
|
+
class Coupon
|
3
|
+
def initialize (query = {})
|
4
|
+
@totalMatches = 0
|
5
|
+
@totalPages = 0
|
6
|
+
@pageNumberRequested = 0
|
7
|
+
@coupons = []
|
8
|
+
@query = query
|
9
|
+
end
|
10
|
+
def getTotalMatches()
|
11
|
+
@totalMatches
|
12
|
+
end
|
13
|
+
|
14
|
+
def getTotalPages()
|
15
|
+
@totalPages
|
16
|
+
end
|
17
|
+
|
18
|
+
def getPageNumberRequested()
|
19
|
+
@pageNumberRequested
|
20
|
+
end
|
21
|
+
|
22
|
+
def getCoupons()
|
23
|
+
@coupons
|
24
|
+
end
|
25
|
+
def query(query)
|
26
|
+
@query = query
|
27
|
+
end
|
28
|
+
|
29
|
+
def fetch()
|
30
|
+
data = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:coupon], :params => @query))
|
31
|
+
@totalMatches = data["couponfeed"]["TotalMatches"]
|
32
|
+
@totalPages = data["couponfeed"]["TotalPages"]
|
33
|
+
@pageNumberRequested = data["couponfeed"]["PageNumberRequested"]
|
34
|
+
@coupons = data["couponfeed"]["link"]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
module Linkshare
|
2
|
+
class Events
|
3
|
+
def getEvents(process_date_start = nil, process_date_end=nil, transaction_date_start=nil, transaction_date_end=nil, limit="1000", page="1")
|
4
|
+
Linkshare::Response.json_parse(Linkshare::Request.get(Linkshare::API_URIS[:events], {:headers => {'Accept' => 'text/json'}}))
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Linkshare
|
2
|
+
class LinkLocator
|
3
|
+
STATUS = {
|
4
|
+
:approved => "approved",
|
5
|
+
:wait => "wait",
|
6
|
+
:approval_extended => "approval extended",
|
7
|
+
:temp_removed => "temp removed",
|
8
|
+
:temp_rejected => "temp rejected",
|
9
|
+
:perm_removed => "perm removed",
|
10
|
+
:perm_rejected => "perm rejected",
|
11
|
+
:self_removed => "self removed"
|
12
|
+
}
|
13
|
+
def getMerchByID(mid)
|
14
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getMerchByID/'+mid.to_s))
|
15
|
+
l['getMerchByIDResponse']['return']
|
16
|
+
end
|
17
|
+
|
18
|
+
def getMerchByName(name)
|
19
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getMerchByName/'+name))
|
20
|
+
l['getMerchByNameResponse']['return']
|
21
|
+
end
|
22
|
+
|
23
|
+
def getMerchByCategory(cat)
|
24
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getMerchByCategory/'+cat.to_s))
|
25
|
+
l['getMerchByCategoryResponse']['return']
|
26
|
+
end
|
27
|
+
|
28
|
+
def getMerchByAppStatus(statusID = STATUS[:approved])
|
29
|
+
l = l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getMerchByAppStatus/' + STATUS[statusID]))
|
30
|
+
l['getMerchByAppStatusResponse']['return']
|
31
|
+
end
|
32
|
+
|
33
|
+
def getProductLinks(mid, creativeCategory = '0', page = '1')
|
34
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getProductLinks/'+mid.to_s+'/'+creativeCategory.to_s+'/-1/'+page.to_s))
|
35
|
+
l['getProductLinksResponse']['return']
|
36
|
+
end
|
37
|
+
|
38
|
+
def getDRMLinks(mid, creativeCategory = '0', startDate = '', endDate = '', page = '1')
|
39
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getDRMLinks/'+mid.to_s+'/'+creativeCategory.to_s+'/'+startDate+'/'+endDate+'/-1/'+page.to_s))
|
40
|
+
l['getDRMLinksResponse']['return']
|
41
|
+
end
|
42
|
+
|
43
|
+
def getBannerLinks(mid, creativeCategory = '0', startDate = '', endDate = '', size = '-1', page = '1')
|
44
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getBannerLinks/'+mid.to_s+'/'+creativeCategory.to_s+'/'+startDate+'/'+endDate+'/'+size.to_s+'/-1/'+page.to_s))
|
45
|
+
l['getBannerLinksResponse']['return']
|
46
|
+
end
|
47
|
+
|
48
|
+
def getTextLinks(mid, creativeCategory = '0', startDate = '', endDate = '', page = '1')
|
49
|
+
l = Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:link_locator]+'/getTextLinks/'+mid.to_s+'/'+creativeCategory.to_s+'/'+startDate+'/'+endDate+'/-1/'+page.to_s))
|
50
|
+
l['getTextLinksResponse']['return']
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Linkshare
|
2
|
+
class ProductSearch
|
3
|
+
def initialize
|
4
|
+
@keywords = []
|
5
|
+
@sorts = []
|
6
|
+
@mid = nil
|
7
|
+
@cat = nil
|
8
|
+
@max = "20"
|
9
|
+
@pagenumber = "1"
|
10
|
+
end
|
11
|
+
def addKeyword(keyword, type = "keyword")
|
12
|
+
@keywords.push({keyword: keyword, type: type})
|
13
|
+
end
|
14
|
+
def clearKeywords
|
15
|
+
@keywords = []
|
16
|
+
end
|
17
|
+
def addSort(sort, type = "desc")
|
18
|
+
@sorts.push({sort: sort, type: type})
|
19
|
+
end
|
20
|
+
def clearSorts
|
21
|
+
@sorts = []
|
22
|
+
end
|
23
|
+
def setCat(cat)
|
24
|
+
@cat = cat
|
25
|
+
end
|
26
|
+
def setMaxResults(maxResults = 20)
|
27
|
+
@max = maxResults.to_s
|
28
|
+
end
|
29
|
+
def setPageNumber(pagenumber = 1)
|
30
|
+
@pagenumber = pagenumber.to_s
|
31
|
+
end
|
32
|
+
def setMid(mid)
|
33
|
+
@mid = mid.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
def getProducts()
|
37
|
+
params = '?'
|
38
|
+
@keywords.each_with_index {|k, i|
|
39
|
+
if i != 0
|
40
|
+
params += "&"
|
41
|
+
end
|
42
|
+
params += k[:type]+"="+k[:keyword]
|
43
|
+
}
|
44
|
+
@sorts.each {|s| params += "&sort="+s[:sort]+"&sorttype="+s[:type]}
|
45
|
+
if @cat != nil
|
46
|
+
params += '&cat='+@cat
|
47
|
+
end
|
48
|
+
if @mid != nil
|
49
|
+
params += '&mid='+@mid
|
50
|
+
end
|
51
|
+
params += '&max='+@max
|
52
|
+
params += '&pagenumber='+@pagenumber
|
53
|
+
Linkshare::Response.parse(Linkshare::Request.get(Linkshare::API_URIS[:product_search]+params))
|
54
|
+
# ap Linkshare::Request.get('https://api.rakutenmarketing.com/productsearch/1.0?keyword=toy&max=20&pagenumber=1')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|