places_scout 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/README.md +91 -0
- data/lib/places_scout.rb +10 -10
- data/lib/places_scout/version.rb +1 -1
- data/places_scout.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f468cfc1af5525677fca6bc11d2b44f06b8efa48
|
4
|
+
data.tar.gz: 5e9d854364d7f21d466acf8c17e9c17d9b2073f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1afacba91e4525ecb062ddcd6ba3a5c6237d18bf054e8843c427cc7367397c0a6a536d9f54d4b50fc84d9742a9775f8b841d44f409d212e4361def11c39d173e
|
7
|
+
data.tar.gz: 6f85e09a03769e81d7bbcccdc598f86a2123d72625ac43eaef66d2458053f89f2ba3b4190c9d6756d8de9875fd55d732086599c88eaa0b0c85fc16ed51487bce
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -70,6 +70,97 @@ testcon.get_ranking_reports(:reportid => 'report-id', :runs => true, :newest =>
|
|
70
70
|
```ruby
|
71
71
|
testcon.get_status #Grab the status of all reports
|
72
72
|
```
|
73
|
+
## Sample Code
|
74
|
+
```ruby
|
75
|
+
clients = get_clients_and_ids(testcon) #Grab all clients
|
76
|
+
add_report_ids(clients, testcon) #Grab report ID's per client
|
77
|
+
add_report_run_ids(clients, testcon) # Grab run per report
|
78
|
+
get_run_rankings(clients, testcon) # Grab results per run
|
79
|
+
puts clients[0][:reports][0][:runs][0][:rankings][0] # Return first client, report, run, keyword ranks
|
80
|
+
|
81
|
+
|
82
|
+
def get_clients_and_ids(testcon)
|
83
|
+
clients = []
|
84
|
+
results = testcon.get_clients()
|
85
|
+
|
86
|
+
results.each do |result|
|
87
|
+
result['items'].each do |item|
|
88
|
+
clients.push(:name => item['name'], :id => item['id'])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
return clients
|
93
|
+
end
|
94
|
+
|
95
|
+
def add_report_ids(clients, testcon)
|
96
|
+
clients.each do |client|
|
97
|
+
report_ids = []
|
98
|
+
rankings = testcon.get_ranking_reports(:clientid => client[:id])
|
99
|
+
rankings.each do |rank|
|
100
|
+
rank['items'].each do |item|
|
101
|
+
report_ids.push(:id => item['rankingReport']['id'])
|
102
|
+
end
|
103
|
+
end
|
104
|
+
client[:reports] = report_ids
|
105
|
+
end
|
106
|
+
return clients
|
107
|
+
end
|
108
|
+
|
109
|
+
def add_report_run_ids(clients, testcon)
|
110
|
+
clients.each do |client|
|
111
|
+
run_id_date = []
|
112
|
+
client[:reports].each do |report|
|
113
|
+
report_runs = testcon.get_ranking_reports(:reportid => report[:id], :rundates => true)
|
114
|
+
report_runs.each do |runs|
|
115
|
+
runs['items'].each do |run|
|
116
|
+
run_id_date.push(:runID => run['runId'], :runDate => parse_date(run['runDate']))
|
117
|
+
end
|
118
|
+
end
|
119
|
+
report[:runs] = run_id_date
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def get_run_rankings(clients, testcon)
|
125
|
+
clients.each do |client|
|
126
|
+
client[:reports].each do |report|
|
127
|
+
report[:runs].each do |run|
|
128
|
+
keyword_rankings = []
|
129
|
+
report_runs = testcon.get_ranking_reports(:reportid => report[:id], :runs => true, :runid => run[:runID])
|
130
|
+
report_runs.each do |report_run|
|
131
|
+
report_run['keywordRankingResults'].each do |results|
|
132
|
+
results[1].each do |result|
|
133
|
+
google_rankings = []
|
134
|
+
bing_rankings = []
|
135
|
+
result['keywordSearch']['keyword']
|
136
|
+
|
137
|
+
result['googleOrganicRankings'].each do |g_rank|
|
138
|
+
google_rankings.push(g_rank['rank'])
|
139
|
+
end
|
140
|
+
|
141
|
+
result['bingOrganicRankings'].each do |b_rank|
|
142
|
+
bing_rankings.push(b_rank['rank'])
|
143
|
+
end
|
144
|
+
|
145
|
+
keyword_rankings.push(:keyword => result['keywordSearch']['keyword'], :google_rank => google_rankings, :bing_rank => bing_rankings)
|
146
|
+
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
run[:rankings] = keyword_rankings
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
|
157
|
+
def parse_date(datestring)
|
158
|
+
seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
|
159
|
+
return Time.at(seconds_since_epoch)
|
160
|
+
end
|
161
|
+
|
162
|
+
```
|
163
|
+
|
73
164
|
|
74
165
|
## Development
|
75
166
|
|
data/lib/places_scout.rb
CHANGED
@@ -13,7 +13,7 @@ module PlacesScout
|
|
13
13
|
|
14
14
|
def initialize(u, p)
|
15
15
|
@url = 'https://apihost1.placesscout.com'
|
16
|
-
|
16
|
+
@auth = 'Basic ' + Base64.encode64(u + ':' + p).chomp
|
17
17
|
end
|
18
18
|
|
19
19
|
def parse_json(response)
|
@@ -28,11 +28,11 @@ module PlacesScout
|
|
28
28
|
params = {}
|
29
29
|
params[:page] = opts[:page] || 1
|
30
30
|
params[:size] = opts[:size] || MAX_PAGE_SIZE
|
31
|
-
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
31
|
+
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body['total'] || 1
|
32
32
|
total_pages = (opts[:page]) ? 1 : (total_size/params[:size].to_f).ceil
|
33
33
|
|
34
34
|
while total_pages > 0
|
35
|
-
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
35
|
+
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body
|
36
36
|
results.push(response)
|
37
37
|
params[:page] += 1 unless opts[:page]
|
38
38
|
total_pages -= 1
|
@@ -50,11 +50,11 @@ module PlacesScout
|
|
50
50
|
params[:size] = opts[:size] || MAX_PAGE_SIZE
|
51
51
|
params[:clientid] = opts[:clientid]
|
52
52
|
location = opts[:locationid]
|
53
|
-
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
53
|
+
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body['total'] || 1
|
54
54
|
total_pages = (opts[:page]) ? 1 : (total_size/params[:size].to_f).ceil
|
55
55
|
|
56
56
|
while total_pages > 0
|
57
|
-
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
57
|
+
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body
|
58
58
|
results.push(response)
|
59
59
|
params[:page] += 1 unless opts[:page]
|
60
60
|
total_pages -= 1
|
@@ -70,11 +70,11 @@ module PlacesScout
|
|
70
70
|
params[:size] = opts[:size] || MAX_PAGE_SIZE
|
71
71
|
params[:clientid] = opts[:clientid]
|
72
72
|
path = "/clientfolders"
|
73
|
-
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
73
|
+
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body['total'] || 1
|
74
74
|
total_pages = (opts[:page]) ? 1 : (total_size/params[:size].to_f).ceil
|
75
75
|
|
76
76
|
while total_pages > 0
|
77
|
-
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
77
|
+
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body
|
78
78
|
results.push(response)
|
79
79
|
params[:page] += 1 unless opts[:page]
|
80
80
|
total_pages -= 1
|
@@ -114,11 +114,11 @@ module PlacesScout
|
|
114
114
|
params[:GoogleLocation] = opts[:googlelocation] if opts[:googlelocation]
|
115
115
|
params[:page] = opts[:page] || 1
|
116
116
|
params[:size] = opts[:size] || MAX_PAGE_SIZE
|
117
|
-
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
117
|
+
total_size = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body['total'] || 1
|
118
118
|
total_pages = (opts[:page] || opts[:locationid]) ? 1 : (total_size/params[:size].to_f).ceil
|
119
119
|
|
120
120
|
while total_pages > 0
|
121
|
-
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
121
|
+
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body
|
122
122
|
results.push(response)
|
123
123
|
params[:page] += 1 unless opts[:page]
|
124
124
|
total_pages -= 1
|
@@ -131,7 +131,7 @@ module PlacesScout
|
|
131
131
|
params = {}
|
132
132
|
reportid = "/#{opts[:reportid]}" || ""
|
133
133
|
path = "/status/getreportstatus"
|
134
|
-
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization =>
|
134
|
+
response = parse_json(RestClient.get(@url+path, params: params, :content_type => 'application/json', :accept => 'application/json', :Authorization => @auth)).body
|
135
135
|
end
|
136
136
|
|
137
137
|
|
data/lib/places_scout/version.rb
CHANGED
data/places_scout.gemspec
CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency "bundler", "~> 1.13"
|
34
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
35
|
|
36
|
-
spec.add_dependency "rest-client", "~>
|
37
|
-
spec.add_dependency "json", "~> 1.
|
36
|
+
spec.add_dependency "rest-client", "~> 2.0.2"
|
37
|
+
spec.add_dependency "json", "~> 2.1.0"
|
38
38
|
|
39
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: places_scout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Hoskison
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.0.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.0.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: json
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 2.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 2.1.0
|
69
69
|
description: Places Scout API
|
70
70
|
email:
|
71
71
|
- mhoskison@etnainteractive.com
|