guidepost 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f49ae1e903b58b082d906af364a401237248bab317489daf80b8a431d33ea6b
4
- data.tar.gz: 9da9ee9ed5892c403f0908e34891af82e9a9666419290354e30b9642a36502eb
3
+ metadata.gz: cd66962286cce8f0f618a5778d333434e9606427f00921b3be6b68775adb52de
4
+ data.tar.gz: 998473908c96ed016f5dff6fe20d660b47ed212fcfc7f51ad3ee1a92a9374829
5
5
  SHA512:
6
- metadata.gz: 40fa25c5cab3b25c0df32da32ed7fd6bdd1bab0b790a8c0f78d20bfaccd2830a47f11e54942d96347e06574f2cb538c94ce7cbdda84e8c768374c089547aa3d6
7
- data.tar.gz: 7f090b43f12e5927137dad0e147754ab53e2d444173cb839affcb8fffb2abc78aa45b6db2722a136a63eb147e4979f66f56153a2e8e7874a1693574651ac36f6
6
+ metadata.gz: c55c394e4202705ed8c791d0d259c231c5e66f7ac32ca4a6d2c39f270ee39ce405cf0b97738733ed888754c783334e49bd9dea6105016825b3c0e56b3512b2a8
7
+ data.tar.gz: f3264e4bf8c58b020a6891273986a377252501293c25048d7bf6432035281231723b47e8325f81d81b428bec01fdd0f55d2f81ccf44e1e7b057979c47f77af0a
data/README.md CHANGED
@@ -60,7 +60,7 @@ Make sure to have certain environmental variables set, preferrably in your `.bas
60
60
  ENV["#{YOUR_PROJECT_NAME}_GUIDEPOST_ZENDESK_EMAIL"]
61
61
 
62
62
  # The password token associated with your Zendesk subdomain
63
- ENV["#{YOUR_PROJECT_NAME}_GUIDEPOST_PASSWORD_TOKEN"]
63
+ ENV["#{YOUR_PROJECT_NAME}_GUIDEPOST_ZENDESK_PASSWORD_TOKEN"]
64
64
  ```
65
65
 
66
66
  #### S3
@@ -22,6 +22,7 @@ module Guidepost
22
22
  return [] if query.empty?
23
23
 
24
24
  url = "#{self.base_api_url}/help_center/articles/search.json?query=#{query}&per_page=10"
25
+ url += "&locale=#{options[:locale]}" if !options[:locale].nil? && !options[:locale].empty?
25
26
  uri = URI.parse(url)
26
27
 
27
28
  http = Net::HTTP.new(uri.host, uri.port)
@@ -52,7 +53,8 @@ module Guidepost
52
53
  def backup_all_articles(options={})
53
54
  # Get all articles (with pagination)
54
55
  sideload = options[:sideload] || false
55
- articles = self.retrieve_all_articles(sideload: sideload)
56
+ all_locales = options[:all_locales] || true
57
+ articles = self.retrieve_all_articles(sideload: sideload, all_locales: all_locales)
56
58
 
57
59
  # Upload to S3
58
60
  timestamp = Time.now.strftime('%Y%m%d%H%M%S')
@@ -66,19 +68,30 @@ module Guidepost
66
68
 
67
69
  def retrieve_all_articles(options={})
68
70
  sideload = options[:sideload] || false
71
+ all_locales = options[:all_locales] || true
72
+
69
73
  page_next = nil
70
74
  articles = []
71
75
  article_attachments = nil
72
76
 
77
+ locales = (self.retrieve_all_locales || []).map{|locale_json| locale_json['locale'] } if all_locales
78
+ locales = [''] if locales.nil? || locales.empty?
79
+
73
80
  if !sideload
74
- while true
75
- page_articles, page_next = self.retrieve_articles(url: page_next)
76
- break if page_articles.nil? || page_articles.empty?
77
- articles += page_articles
78
- break if page_next.nil?
79
- end
81
+ article_attachments = []
82
+ locales.each do |locale|
83
+ page_next = nil
84
+ locale_articles = []
85
+ while true
86
+ page_articles, page_next = self.retrieve_articles(url: page_next, locale: locale)
87
+ break if page_articles.nil? || page_articles.empty?
88
+ locale_articles += page_articles
89
+ break if page_next.nil?
90
+ end
91
+ articles += locale_articles
80
92
 
81
- article_attachments = self.retrieve_all_article_attachments(articles: articles)
93
+ article_attachments += self.retrieve_all_article_attachments(articles: locale_articles, locale: locale)
94
+ end
82
95
 
83
96
  return {
84
97
  articles: articles,
@@ -89,50 +102,57 @@ module Guidepost
89
102
  else
90
103
  sections = []
91
104
  categories = []
105
+ article_attachments = []
92
106
 
93
107
  section_urls = Hash.new
94
108
  category_urls = Hash.new
95
109
 
96
- while true
97
- page, page_next = self.retrieve_articles(url: page_next, sideload: true)
110
+ locales.each do |locale|
111
+ page_next = nil
112
+ locales_articles = []
98
113
 
99
- articles_from_page = page["articles"]
100
- sections_from_page = page["sections"]
101
- categories_from_page = page["categories"]
114
+ while true
115
+ page, page_next = self.retrieve_articles(url: page_next, sideload: true, locale: locale)
102
116
 
103
- no_more_articles = articles_from_page.nil? || articles_from_page.empty?
104
- no_more_sections = sections_from_page.nil? || sections_from_page.empty?
105
- no_more_categories = categories_from_page.nil? || categories_from_page.empty?
117
+ articles_from_page = page["articles"]
118
+ sections_from_page = page["sections"]
119
+ categories_from_page = page["categories"]
106
120
 
107
- break if no_more_articles && no_more_sections && no_more_categories
121
+ no_more_articles = articles_from_page.nil? || articles_from_page.empty?
122
+ no_more_sections = sections_from_page.nil? || sections_from_page.empty?
123
+ no_more_categories = categories_from_page.nil? || categories_from_page.empty?
108
124
 
109
- articles += articles_from_page
125
+ break if no_more_articles && no_more_sections && no_more_categories
110
126
 
111
- sections_from_page.each do |s|
112
- url = s["url"]
113
- if !section_urls.has_key?(url)
114
- section_urls[url] = 1
115
- else
116
- section_urls[url] += 1
127
+ locales_articles += articles_from_page
128
+
129
+ sections_from_page.each do |s|
130
+ url = s["url"]
131
+ if !section_urls.has_key?(url)
132
+ section_urls[url] = 1
133
+ else
134
+ section_urls[url] += 1
135
+ end
136
+ sections << s if section_urls[url] == 1
117
137
  end
118
- sections << s if section_urls[url] == 1
119
- end
120
138
 
121
- categories_from_page.each do |c|
122
- url = c["url"]
123
- if !category_urls.has_key?(url)
124
- category_urls[url] = 1
125
- else
126
- category_urls[url] += 1
139
+ categories_from_page.each do |c|
140
+ url = c["url"]
141
+ if !category_urls.has_key?(url)
142
+ category_urls[url] = 1
143
+ else
144
+ category_urls[url] += 1
145
+ end
146
+ categories << c if category_urls[url] == 1
127
147
  end
128
- categories << c if category_urls[url] == 1
129
- end
130
148
 
131
- break if page_next.nil?
149
+ break if page_next.nil?
150
+ end
151
+ articles += locales_articles
152
+
153
+ article_attachments += self.retrieve_all_article_attachments(articles: locales_articles, locale: locale)
132
154
  end
133
155
 
134
- article_attachments = self.retrieve_all_article_attachments(articles: articles)
135
-
136
156
  return {
137
157
  categories: categories,
138
158
  category_count: categories.count,
@@ -148,12 +168,13 @@ module Guidepost
148
168
 
149
169
  def retrieve_articles(options={})
150
170
  url = options[:url]
171
+ locale = (options[:locale] || "").downcase
151
172
  sideload = options[:sideload] || false
152
173
 
153
174
  if !sideload
154
- url = "#{self.base_api_url}/help_center/articles.json?per_page=25&page=1" if url.nil?
175
+ url = "#{self.base_api_url}/help_center/#{locale}/articles.json?per_page=25&page=1" if url.nil?
155
176
  else
156
- url = "#{self.base_api_url}/help_center/articles.json?include=sections,categories&per_page=25&page=1" if url.nil?
177
+ url = "#{self.base_api_url}/help_center/#{locale}/articles.json?include=sections,categories&per_page=25&page=1" if url.nil?
157
178
  end
158
179
 
159
180
  uri = URI.parse(url)
@@ -252,7 +273,7 @@ module Guidepost
252
273
  articles = options[:articles]
253
274
  articles.each do |article|
254
275
  while true
255
- attachments, next_page = self.retrieve_article_attachments(for_article: article)
276
+ attachments, next_page = self.retrieve_article_attachments(for_article: article, url: next_page, locale: options[:locale])
256
277
  break if attachments.nil? || attachments.empty?
257
278
  article_attachments += attachments
258
279
  break if next_page.nil?
@@ -263,9 +284,11 @@ module Guidepost
263
284
  end
264
285
 
265
286
  def retrieve_article_attachments(options={})
287
+ url = options[:url]
266
288
  article = options[:for_article]
289
+ locale = (options[:locale] || "").downcase
267
290
 
268
- url = "#{self.base_api_url}/help_center/articles/#{article["id"]}/attachments.json?per_page=25&page=1" if url.nil?
291
+ url = "#{self.base_api_url}/help_center/#{locale}/articles/#{article["id"]}/attachments.json?per_page=25&page=1" if url.nil?
269
292
  uri = URI.parse(url)
270
293
 
271
294
  http = Net::HTTP.new(uri.host, uri.port)
@@ -283,6 +306,78 @@ module Guidepost
283
306
  return j_body["article_attachments"], j_body["next_page"]
284
307
  end
285
308
 
309
+ def retrieve_all_locales(options={})
310
+ locales = []
311
+ next_page = nil
312
+
313
+ while true
314
+ tmp_locales, next_page = self.retrieve_locales(url: next_page)
315
+ break if tmp_locales.nil? || tmp_locales.empty?
316
+ locales += tmp_locales
317
+ break if next_page.nil?
318
+ end
319
+
320
+ locales
321
+ end
322
+
323
+ def retrieve_locales(options={})
324
+ url = options[:url]
325
+
326
+ url = "#{self.base_api_url}/locales.json" if url.nil?
327
+ uri = URI.parse(url)
328
+
329
+ http = Net::HTTP.new(uri.host, uri.port)
330
+ http.use_ssl = true
331
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
332
+
333
+ request = Net::HTTP::Get.new(uri.request_uri)
334
+ request.basic_auth(@email, @password)
335
+ response = http.request(request)
336
+
337
+ body = response.body.force_encoding("UTF-8")
338
+
339
+ j_body = JSON.parse(body)
340
+
341
+ return j_body["locales"], j_body["next_page"]
342
+ end
343
+
344
+ def retrieve_all_translations(options={})
345
+ translations = []
346
+ next_page = nil
347
+ article = options[:for_article]
348
+
349
+ while true
350
+ tmp_translations, next_page = self.retrieve_translations(url: next_page, for_article: article)
351
+ break if tmp_translations.nil? || tmp_translations.empty?
352
+ translations += tmp_translations
353
+ break if next_page.nil?
354
+ end
355
+
356
+ translations
357
+ end
358
+
359
+ def retrieve_translations(options={})
360
+ url = options[:url]
361
+ article = options[:for_article]
362
+
363
+ url = "#{self.base_api_url}/help_center/articles/#{article['id']}/translations.json" if url.nil?
364
+ uri = URI.parse(url)
365
+
366
+ http = Net::HTTP.new(uri.host, uri.port)
367
+ http.use_ssl = true
368
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
369
+
370
+ request = Net::HTTP::Get.new(uri.request_uri)
371
+ request.basic_auth(@email, @password)
372
+ response = http.request(request)
373
+
374
+ body = response.body.force_encoding("UTF-8")
375
+
376
+ j_body = JSON.parse(body)
377
+
378
+ return j_body["translations"], j_body["next_page"]
379
+ end
380
+
286
381
  def base_api_url
287
382
  "https://#{self.subdomain}.zendesk.com/api/v2"
288
383
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guidepost
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kiren Srinivasan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-18 00:00:00.000000000 Z
11
+ date: 2019-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk