frontman-ssg 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +42 -0
- data/.github/CODE_OF_CONDUCT.md +9 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +25 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +22 -0
- data/.gitignore +5 -0
- data/.rubocop.yml +88 -0
- data/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +42 -0
- data/Gemfile +5 -0
- data/LICENSE.md +21 -0
- data/Rakefile +94 -0
- data/SECURITY.md +6 -0
- data/bin/frontman +6 -0
- data/frontman-ssg.gemspec +48 -0
- data/frontman.svg +2 -0
- data/lib/frontman.rb +15 -0
- data/lib/frontman/app.rb +175 -0
- data/lib/frontman/bootstrapper.rb +70 -0
- data/lib/frontman/builder/asset_pipeline.rb +55 -0
- data/lib/frontman/builder/builder.rb +193 -0
- data/lib/frontman/builder/file.rb +55 -0
- data/lib/frontman/builder/mapping.rb +54 -0
- data/lib/frontman/builder/statistics_collector.rb +37 -0
- data/lib/frontman/cli.rb +6 -0
- data/lib/frontman/commands/build.rb +76 -0
- data/lib/frontman/commands/init.rb +58 -0
- data/lib/frontman/commands/serve.rb +110 -0
- data/lib/frontman/concerns/dispatch_events.rb +56 -0
- data/lib/frontman/concerns/forward_calls_to_app.rb +28 -0
- data/lib/frontman/config.rb +52 -0
- data/lib/frontman/context.rb +125 -0
- data/lib/frontman/custom_struct.rb +44 -0
- data/lib/frontman/data_store.rb +106 -0
- data/lib/frontman/data_store_file.rb +60 -0
- data/lib/frontman/helpers/app_helper.rb +18 -0
- data/lib/frontman/helpers/link_helper.rb +35 -0
- data/lib/frontman/helpers/render_helper.rb +76 -0
- data/lib/frontman/helpers/url_helper.rb +11 -0
- data/lib/frontman/iterator.rb +48 -0
- data/lib/frontman/process/chain.rb +43 -0
- data/lib/frontman/process/processor.rb +11 -0
- data/lib/frontman/renderers/erb_renderer.rb +21 -0
- data/lib/frontman/renderers/haml_renderer.rb +22 -0
- data/lib/frontman/renderers/markdown_renderer.rb +26 -0
- data/lib/frontman/renderers/renderer.rb +26 -0
- data/lib/frontman/renderers/renderer_resolver.rb +26 -0
- data/lib/frontman/resource.rb +279 -0
- data/lib/frontman/sitemap_tree.rb +211 -0
- data/lib/frontman/toolbox/timer.rb +49 -0
- data/lib/frontman/version.rb +6 -0
- data/project-templates/default/.gitignore +2 -0
- data/project-templates/default/Gemfile +3 -0
- data/project-templates/default/config.rb +17 -0
- data/project-templates/default/data/site.yml +4 -0
- data/project-templates/default/helpers/site_helper.rb +7 -0
- data/project-templates/default/public/code.css +77 -0
- data/project-templates/default/public/frontman-logo.svg +2 -0
- data/project-templates/default/public/main.css +27 -0
- data/project-templates/default/public/main.js +1 -0
- data/project-templates/default/source/index.html.md.erb +7 -0
- data/project-templates/default/source/sitemap.xml.erb +11 -0
- data/project-templates/default/views/layouts/main.erb +19 -0
- data/project-templates/default/views/layouts/main.haml +15 -0
- data/project-templates/default/views/partials/menu.erb +7 -0
- data/project-templates/webpack/.gitignore +4 -0
- data/project-templates/webpack/Gemfile +3 -0
- data/project-templates/webpack/README.md +54 -0
- data/project-templates/webpack/assets/css/code.css +77 -0
- data/project-templates/webpack/assets/css/style.css +27 -0
- data/project-templates/webpack/assets/images/.gitkeep +0 -0
- data/project-templates/webpack/assets/images/frontman_logo.svg +2 -0
- data/project-templates/webpack/assets/js/index.js +1 -0
- data/project-templates/webpack/config.rb +24 -0
- data/project-templates/webpack/data/site.yml +4 -0
- data/project-templates/webpack/helpers/assets_helper.rb +24 -0
- data/project-templates/webpack/helpers/site_helper.rb +7 -0
- data/project-templates/webpack/package-lock.json +7603 -0
- data/project-templates/webpack/package.json +34 -0
- data/project-templates/webpack/source/index.html.md.erb +7 -0
- data/project-templates/webpack/source/sitemap.xml.erb +11 -0
- data/project-templates/webpack/views/layouts/main.erb +20 -0
- data/project-templates/webpack/views/layouts/main.haml +14 -0
- data/project-templates/webpack/views/partials/menu.erb +7 -0
- data/project-templates/webpack/views/partials/script_with_vendors.haml +5 -0
- data/project-templates/webpack/webpack/base.config.js +51 -0
- data/project-templates/webpack/webpack/dev.config.js +6 -0
- data/project-templates/webpack/webpack/prod.config.js +30 -0
- data/readme.md +80 -0
- data/sorbet/config +2 -0
- data/sorbet/rbi/hidden-definitions/errors.txt +27259 -0
- data/sorbet/rbi/hidden-definitions/hidden.rbi +45122 -0
- data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +276 -0
- data/sorbet/rbi/todo.rbi +6 -0
- data/spec/frontman/app_spec.rb +48 -0
- data/spec/frontman/bootstrapper_spec.rb +26 -0
- data/spec/frontman/builder/builder_spec.rb +79 -0
- data/spec/frontman/builder/file_spec.rb +45 -0
- data/spec/frontman/builder/mapping_spec.rb +8 -0
- data/spec/frontman/concerns/dispatch_events_spec.rb +70 -0
- data/spec/frontman/concerns/forward_calls_to_app_spec.rb +21 -0
- data/spec/frontman/config_spec.rb +54 -0
- data/spec/frontman/context_spec.rb +48 -0
- data/spec/frontman/custom_struct_spec.rb +51 -0
- data/spec/frontman/data_store_file_spec.rb +9 -0
- data/spec/frontman/data_store_spec.rb +36 -0
- data/spec/frontman/frontman_ssg_spec.rb +7 -0
- data/spec/frontman/helpers/app_helper_spec.rb +24 -0
- data/spec/frontman/helpers/link_helper_spec.rb +37 -0
- data/spec/frontman/helpers/render_helper_spec.rb +55 -0
- data/spec/frontman/helpers/url_helper_spec.rb +21 -0
- data/spec/frontman/iterator_spec.rb +47 -0
- data/spec/frontman/mocks/asset.css +3 -0
- data/spec/frontman/mocks/config.rb +0 -0
- data/spec/frontman/mocks/helpers/formatting_helper.rb +5 -0
- data/spec/frontman/mocks/helpers/language_helper.rb +5 -0
- data/spec/frontman/mocks/helpers/link_helper.rb +5 -0
- data/spec/frontman/mocks/helpers/test_command.rb +5 -0
- data/spec/frontman/mocks/html_file.html +8 -0
- data/spec/frontman/mocks/html_file.html.md.erb +9 -0
- data/spec/frontman/mocks/html_file.md.html +8 -0
- data/spec/frontman/mocks/info.yml +4 -0
- data/spec/frontman/mocks/layouts/raw_without_body.haml +1 -0
- data/spec/frontman/mocks/nested/data.yml +4 -0
- data/spec/frontman/mocks/nested/more_data.yml +4 -0
- data/spec/frontman/mocks/partials/paragraph.haml +2 -0
- data/spec/frontman/mocks/snippet/html_file.html +8 -0
- data/spec/frontman/mocks/snippet/html_file.yml +670 -0
- data/spec/frontman/mocks/test.html +8 -0
- data/spec/frontman/mocks/wrap.haml +3 -0
- data/spec/frontman/process/chain_spec.rb +56 -0
- data/spec/frontman/renderers/erb_renderer_spec.rb +22 -0
- data/spec/frontman/renderers/haml_renderer_spec.rb +12 -0
- data/spec/frontman/renderers/markdown_renderer_spec.rb +12 -0
- data/spec/frontman/renderers/renderer_spec.rb +16 -0
- data/spec/frontman/resource_spec.rb +151 -0
- data/spec/frontman/sitemap_tree_spec.rb +128 -0
- data/spec/frontman/toolbox/timer_spec.rb +34 -0
- data/spec/spec_setup.rb +19 -0
- metadata +507 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
# typed: false
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require './spec/spec_setup'
|
5
|
+
require 'parallel'
|
6
|
+
require 'frontman/config'
|
7
|
+
require 'frontman/iterator'
|
8
|
+
|
9
|
+
describe Frontman::Iterator do
|
10
|
+
before(:each) do
|
11
|
+
Frontman::Config.all.keys.each do |key|
|
12
|
+
Frontman::Config.delete(key)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should run in parallel by default' do
|
17
|
+
expect(Parallel).to receive(:map)
|
18
|
+
|
19
|
+
Frontman::Iterator.map []
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should not run in parallel if config says so' do
|
23
|
+
expect(Parallel).to_not receive(:map)
|
24
|
+
Frontman::Config.set :parallel, false
|
25
|
+
|
26
|
+
Frontman::Iterator.map []
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'processor count' do
|
30
|
+
it 'should take the config value if not running in parallel' do
|
31
|
+
Frontman::Config.set :parallel, false
|
32
|
+
Frontman::Config.set :processor_count, 2
|
33
|
+
|
34
|
+
expect(Frontman::Iterator.processor_count).to eq 2
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should use Parallels method if running in parallel' do
|
38
|
+
expect(Frontman::Iterator.processor_count).to eq Parallel.processor_count
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should default to 1 if not running in parallel and no config is provided' do
|
42
|
+
Frontman::Config.set :parallel, false
|
43
|
+
|
44
|
+
expect(Frontman::Iterator.processor_count).to eq 1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
File without changes
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html> <html lang=en> <head> <title> Quick Start | Magento 1 extension | Algolia Documentation </title>
|
3
|
+
</head> <body class=relative><main class='lg:max-w-648 min-h-full w-full'> <div class='text-grey-1000 leading-normal'> <section class=mb-48> <div class="mb-4 flex justify-between"> <div class="text-xs leading-tight"> <div class="font-sans-alt uppercase font-semibold tracking-wide"> Integrations / Extensions / <span class=text-nebula-500>Magento 1</span> </div> </div> <div class="flex items-center uppercase font-semibold tracking-wide text-grey-1000-opacity-30 text-xs leading-tight whitespace-no-wrap font-sans-alt"> <span class="block mr-4 w-16 h-16 fill-current"> <span class="block p-2"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><path d="M11,22A11,11,0,1,1,22,11,11,11,0,0,1,11,22ZM11,2a9,9,0,1,0,9,9A9,9,0,0,0,11,2Z"/><path d="M15,14a.93.93,0,0,1-.45-.11l-4-2A1,1,0,0,1,10,11V5a1,1,0,0,1,2,0v5.38l3.45,1.73a1,1,0,0,1,.44,1.34A1,1,0,0,1,15,14Z"/></svg> </span> </span> Feb. 15, 2019 </div> </div> <div class="flex justify-between"> <h1 class="md:text-4xl lg:text-5xl text-3xl leading-tall tracking-tight font-bold hyphenated"> Quick Start </h1> <div class="mt-16 ml-16"> <a class='edit-link w-24 h-24 items-center justify-center bg-grey-400-opacity-40 hover:bg-grey-400-opacity-60 rounded-full transition-fast-out hidden' href='https://github.com/algolia/doc/edit/master/source/doc/integration/magento-1/1-getting-started/1-quick-start.html.md.erb' rel=noopener target=_blank> <span class='flex items-center justify-center w-16 h-16 text-grey-700 fill-current'> <svg class=h-full xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.58 31.77"><path d="M16.29,0a16.29,16.29,0,0,0-5.15,31.75c.82.15,1.11-.36,1.11-.79s0-1.41,0-2.77C7.7,29.18,6.74,26,6.74,26a4.36,4.36,0,0,0-1.81-2.39c-1.47-1,.12-1,.12-1a3.43,3.43,0,0,1,2.49,1.68,3.48,3.48,0,0,0,4.74,1.36,3.46,3.46,0,0,1,1-2.18c-3.62-.41-7.42-1.81-7.42-8a6.3,6.3,0,0,1,1.67-4.37,5.94,5.94,0,0,1,.16-4.31s1.37-.44,4.48,1.67a15.41,15.41,0,0,1,8.16,0c3.11-2.11,4.47-1.67,4.47-1.67A5.91,5.91,0,0,1,25,11.07a6.3,6.3,0,0,1,1.67,4.37c0,6.26-3.81,7.63-7.44,8a3.85,3.85,0,0,1,1.11,3c0,2.18,0,3.94,0,4.47s.29.94,1.12.78A16.29,16.29,0,0,0,16.29,0Z"/></svg> <span aria-hidden=true class=hidden> Edit this guide </span> </span> </a> </div> </div> </section> <div class='content mb-32'> <section> <p>To get started using Algolia in your Magento installation, just follow the steps in this video or on the page below.</p> <div class="flex transition-fast-in-out items-center" data-video=true> <div class="group embed flex-no-grow flex-no-shrink md:w-248 border-l-4 border-solid border-red-500-opacity-80 shadow-md rounded-r overflow-hidden mt-0 mb-0 transition-fast-in-out" data-video-container=DUuv9ALS5cM> <div class=embed-item data-video-frame=DUuv9ALS5cM data-video-start=0 id=DUuv9ALS5cM></div> <div class="absolute pin bg-center bg-cover pointer-events-none flex items-center justify-center" data-video-thumbnail=true style="background-image: url(https://img.youtube.com/vi/DUuv9ALS5cM/hqdefault.jpg)"> <div class="py-16 px-32 rounded-lg bg-gradient-red-400-red-500 shadow group-hover:shadow-md cursor-pointer transition-fast-out"> <div class="m-4 h-24 text-white"> <div class="h-full fill-current"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 10"><polygon points="0 0 0 10 8 5 0 0"/></svg> </div> </div> </div> </div> </div> <div class="ml-32 md:block hidden" data-video-description=true> <div> <div class="mb-8 text-grey-1000 font-bold text-lg"> Algolia Instant Search on your Magento Store </div> <div class=text-grey-400> By Algolia, 17 min </div> </div> </div> </div> <h2 id=installation>Installation</h2> <p>There are two possible ways to install the extension:</p> <ol> <li>Through <a href="https://github.com/colinmollenhour/modman">modman</a></li> <li>Through <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a></li> </ol> <h3 id=modman>Modman</h3> <p>With <a href="https://github.com/colinmollenhour/modman">modman</a> installed, run the following commands:</p> <div class=snippet-wrapper><div class=snippet-actions markdown=0><div class="copy-link snippet-action btn-satellite btn-satellite-white ml-8">Copy</div></div><div class=snippet-header><div class="nav nav-tabs snippet-tabs" markdown=0><span class="snippet-tab-wrapper snippet-tab-wrapper-active"><a href="#snippet_bash" data-toggle=tab class=snippet-tab>bash</a></span></div></div><div id=snippet_bash data-tab-pane class="snippet-body snippet-body-active" data-active=true data-language=bash><div class=highlight><pre class="highlight shell"><code><span class="nb">cd</span> /path/to/your/magento/directory
|
4
|
+
modman init
|
5
|
+
modman clone https://github.com/algolia/algoliasearch-magento.git
|
6
|
+
</code></pre></div></div></div> <h3 id=magento-marketplace>Magento Marketplace</h3> <p>Navigate to the <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a> to get the extension and follow the instructions to install.</p> <h2 id=configuration>Configuration</h2> <p>Before Algolia can be used with Magento, an Algolia account is needed. With the account, it’s possible to configure the Magento extension to work properly.</p> <h3 id=algolia-account>Algolia account</h3> <p>An account can be created in the <a href="/users/sign_up">sign-up wizard</a>.</p> <p class="alert alert-info">Pay attention while picking a data center during the sign-up. For performance reasons, it’s best to pick the one closest to the data center of your Magento installation.</p> <h3 id=magento-settings>Magento settings</h3> <p>To configure the Magento extension, you will need the following Algolia credentials:</p> <ul> <li>Application ID</li> <li><a href="/doc/guides/security/api-keys/#search-only-api-key">Search-only API key</a></li> <li><a href="/doc/guides/security/api-keys/#admin-api-key">Admin API key</a></li> </ul> <p>These credentials can be found on the <a href="/dashboard">Algolia Dashboard</a>, on the <strong>API keys</strong> page from the menu.</p> <p>In the administration section of your Magento project, navigate to <strong>System > Configuration > Catalog > Algolia Search</strong> and fill in the form with all the information required.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/configuration-ef05486e.png" alt="Basic information configuration"/></p> </figure> </section> <section> <h2 id=indexing>Indexing</h2> <p>With the extension configured, the data in your Magento installation should be pushed to Algolia for the first time by a process called <a href="/doc/guides/getting-started/how-algolia-works/in-depth/implementation-process/#indexing-data"><em>indexing</em></a>. This can be accomplished by navigating to <strong>System > Indexing Management</strong>. On this page, a list of indices will show up for which the <strong>Reindex Data</strong> link has to be clicked:</p> <ul> <li>Algolia Search Products</li> <li>Algolia Search Categories</li> <li>Algolia Search Pages</li> <li>Algolia Search Suggestions</li> </ul> <p>When the indexing is done, the search should now be available in your Magento installation.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/indexers-a88f04f2.png" alt="Magento store indexers"/></p> </figure> </section> </div> <div class=mt-88>
|
7
|
+
</div></div></main></body>
|
8
|
+
</html>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html> <html lang=en> <head> <title> Quick Start | Magento 1 extension | Algolia Documentation </title>
|
3
|
+
</head> <body class=relative><main class='lg:max-w-648 min-h-full w-full'> <div class='text-grey-1000 leading-normal'> <section class=mb-48> <div class="mb-4 flex justify-between"> <div class="text-xs leading-tight"> <div class="font-sans-alt uppercase font-semibold tracking-wide"> Integrations / Extensions / <span class=text-nebula-500>Magento 1</span> </div> </div> <div class="flex items-center uppercase font-semibold tracking-wide text-grey-1000-opacity-30 text-xs leading-tight whitespace-no-wrap font-sans-alt"> <span class="block mr-4 w-16 h-16 fill-current"> <span class="block p-2"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><path d="M11,22A11,11,0,1,1,22,11,11,11,0,0,1,11,22ZM11,2a9,9,0,1,0,9,9A9,9,0,0,0,11,2Z"/><path d="M15,14a.93.93,0,0,1-.45-.11l-4-2A1,1,0,0,1,10,11V5a1,1,0,0,1,2,0v5.38l3.45,1.73a1,1,0,0,1,.44,1.34A1,1,0,0,1,15,14Z"/></svg> </span> </span> Feb. 15, 2019 </div> </div> <div class="flex justify-between"> <h1 class="md:text-4xl lg:text-5xl text-3xl leading-tall tracking-tight font-bold hyphenated"> Quick Start </h1> <div class="mt-16 ml-16"> <a class='edit-link w-24 h-24 items-center justify-center bg-grey-400-opacity-40 hover:bg-grey-400-opacity-60 rounded-full transition-fast-out hidden' href='https://github.com/algolia/doc/edit/master/source/doc/integration/magento-1/1-getting-started/1-quick-start.html.md.erb' rel=noopener target=_blank> <span class='flex items-center justify-center w-16 h-16 text-grey-700 fill-current'> <svg class=h-full xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.58 31.77"><path d="M16.29,0a16.29,16.29,0,0,0-5.15,31.75c.82.15,1.11-.36,1.11-.79s0-1.41,0-2.77C7.7,29.18,6.74,26,6.74,26a4.36,4.36,0,0,0-1.81-2.39c-1.47-1,.12-1,.12-1a3.43,3.43,0,0,1,2.49,1.68,3.48,3.48,0,0,0,4.74,1.36,3.46,3.46,0,0,1,1-2.18c-3.62-.41-7.42-1.81-7.42-8a6.3,6.3,0,0,1,1.67-4.37,5.94,5.94,0,0,1,.16-4.31s1.37-.44,4.48,1.67a15.41,15.41,0,0,1,8.16,0c3.11-2.11,4.47-1.67,4.47-1.67A5.91,5.91,0,0,1,25,11.07a6.3,6.3,0,0,1,1.67,4.37c0,6.26-3.81,7.63-7.44,8a3.85,3.85,0,0,1,1.11,3c0,2.18,0,3.94,0,4.47s.29.94,1.12.78A16.29,16.29,0,0,0,16.29,0Z"/></svg> <span aria-hidden=true class=hidden> Edit this guide </span> </span> </a> </div> </div> </section> <div class='content mb-32'> <section> <p>To get started using Algolia in your Magento installation, just follow the steps in this video or on the page below.</p> <div class="flex transition-fast-in-out items-center" data-video=true> <div class="group embed flex-no-grow flex-no-shrink md:w-248 border-l-4 border-solid border-red-500-opacity-80 shadow-md rounded-r overflow-hidden mt-0 mb-0 transition-fast-in-out" data-video-container=DUuv9ALS5cM> <div class=embed-item data-video-frame=DUuv9ALS5cM data-video-start=0 id=DUuv9ALS5cM></div> <div class="absolute pin bg-center bg-cover pointer-events-none flex items-center justify-center" data-video-thumbnail=true style="background-image: url(https://img.youtube.com/vi/DUuv9ALS5cM/hqdefault.jpg)"> <div class="py-16 px-32 rounded-lg bg-gradient-red-400-red-500 shadow group-hover:shadow-md cursor-pointer transition-fast-out"> <div class="m-4 h-24 text-white"> <div class="h-full fill-current"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 10"><polygon points="0 0 0 10 8 5 0 0"/></svg> </div> </div> </div> </div> </div> <div class="ml-32 md:block hidden" data-video-description=true> <div> <div class="mb-8 text-grey-1000 font-bold text-lg"> Algolia Instant Search on your Magento Store </div> <div class=text-grey-400> By Algolia, 17 min </div> </div> </div> </div> <h2 id=installation>Installation</h2> <p>There are two possible ways to install the extension:</p> <ol> <li>Through <a href="https://github.com/colinmollenhour/modman">modman</a></li> <li>Through <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a></li> </ol> <h3 id=modman>Modman</h3> <p>With <a href="https://github.com/colinmollenhour/modman">modman</a> installed, run the following commands:</p> <div class=snippet-wrapper><div class=snippet-actions markdown=0><div class="copy-link snippet-action btn-satellite btn-satellite-white ml-8">Copy</div></div><div class=snippet-header><div class="nav nav-tabs snippet-tabs" markdown=0><span class="snippet-tab-wrapper snippet-tab-wrapper-active"><a href="#snippet_bash" data-toggle=tab class=snippet-tab>bash</a></span></div></div><div id=snippet_bash data-tab-pane class="snippet-body snippet-body-active" data-active=true data-language=bash><div class=highlight><pre class="highlight shell"><code><span class="nb">cd</span> /path/to/your/magento/directory
|
4
|
+
modman init
|
5
|
+
modman clone https://github.com/algolia/algoliasearch-magento.git
|
6
|
+
<%= 'testing erb' %>
|
7
|
+
</code></pre></div></div></div> <h3 id=magento-marketplace>Magento Marketplace</h3> <p>Navigate to the <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a> to get the extension and follow the instructions to install.</p> <h2 id=configuration>Configuration</h2> <p>Before Algolia can be used with Magento, an Algolia account is needed. With the account, it’s possible to configure the Magento extension to work properly.</p> <h3 id=algolia-account>Algolia account</h3> <p>An account can be created in the <a href="/users/sign_up">sign-up wizard</a>.</p> <p class="alert alert-info">Pay attention while picking a data center during the sign-up. For performance reasons, it’s best to pick the one closest to the data center of your Magento installation.</p> <h3 id=magento-settings>Magento settings</h3> <p>To configure the Magento extension, you will need the following Algolia credentials:</p> <ul> <li>Application ID</li> <li><a href="/doc/guides/security/api-keys/#search-only-api-key">Search-only API key</a></li> <li><a href="/doc/guides/security/api-keys/#admin-api-key">Admin API key</a></li> </ul> <p>These credentials can be found on the <a href="/dashboard">Algolia Dashboard</a>, on the <strong>API keys</strong> page from the menu.</p> <p>In the administration section of your Magento project, navigate to <strong>System > Configuration > Catalog > Algolia Search</strong> and fill in the form with all the information required.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/configuration-ef05486e.png" alt="Basic information configuration"/></p> </figure> </section> <section> <h2 id=indexing>Indexing</h2> <p>With the extension configured, the data in your Magento installation should be pushed to Algolia for the first time by a process called <a href="/doc/guides/getting-started/how-algolia-works/in-depth/implementation-process/#indexing-data"><em>indexing</em></a>. This can be accomplished by navigating to <strong>System > Indexing Management</strong>. On this page, a list of indices will show up for which the <strong>Reindex Data</strong> link has to be clicked:</p> <ul> <li>Algolia Search Products</li> <li>Algolia Search Categories</li> <li>Algolia Search Pages</li> <li>Algolia Search Suggestions</li> </ul> <p>When the indexing is done, the search should now be available in your Magento installation.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/indexers-a88f04f2.png" alt="Magento store indexers"/></p> </figure> </section> </div> <div class=mt-88>
|
8
|
+
</div></div></main></body>
|
9
|
+
</html>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html> <html lang=en> <head> <title> Quick Start | Magento 1 extension | Algolia Documentation </title>
|
3
|
+
</head> <body class=relative><main class='lg:max-w-648 min-h-full w-full'> <div class='text-grey-1000 leading-normal'> <section class=mb-48> <div class="mb-4 flex justify-between"> <div class="text-xs leading-tight"> <div class="font-sans-alt uppercase font-semibold tracking-wide"> Integrations / Extensions / <span class=text-nebula-500>Magento 1</span> </div> </div> <div class="flex items-center uppercase font-semibold tracking-wide text-grey-1000-opacity-30 text-xs leading-tight whitespace-no-wrap font-sans-alt"> <span class="block mr-4 w-16 h-16 fill-current"> <span class="block p-2"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><path d="M11,22A11,11,0,1,1,22,11,11,11,0,0,1,11,22ZM11,2a9,9,0,1,0,9,9A9,9,0,0,0,11,2Z"/><path d="M15,14a.93.93,0,0,1-.45-.11l-4-2A1,1,0,0,1,10,11V5a1,1,0,0,1,2,0v5.38l3.45,1.73a1,1,0,0,1,.44,1.34A1,1,0,0,1,15,14Z"/></svg> </span> </span> Feb. 15, 2019 </div> </div> <div class="flex justify-between"> <h1 class="md:text-4xl lg:text-5xl text-3xl leading-tall tracking-tight font-bold hyphenated"> Quick Start </h1> <div class="mt-16 ml-16"> <a class='edit-link w-24 h-24 items-center justify-center bg-grey-400-opacity-40 hover:bg-grey-400-opacity-60 rounded-full transition-fast-out hidden' href='https://github.com/algolia/doc/edit/master/source/doc/integration/magento-1/1-getting-started/1-quick-start.html.md.erb' rel=noopener target=_blank> <span class='flex items-center justify-center w-16 h-16 text-grey-700 fill-current'> <svg class=h-full xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.58 31.77"><path d="M16.29,0a16.29,16.29,0,0,0-5.15,31.75c.82.15,1.11-.36,1.11-.79s0-1.41,0-2.77C7.7,29.18,6.74,26,6.74,26a4.36,4.36,0,0,0-1.81-2.39c-1.47-1,.12-1,.12-1a3.43,3.43,0,0,1,2.49,1.68,3.48,3.48,0,0,0,4.74,1.36,3.46,3.46,0,0,1,1-2.18c-3.62-.41-7.42-1.81-7.42-8a6.3,6.3,0,0,1,1.67-4.37,5.94,5.94,0,0,1,.16-4.31s1.37-.44,4.48,1.67a15.41,15.41,0,0,1,8.16,0c3.11-2.11,4.47-1.67,4.47-1.67A5.91,5.91,0,0,1,25,11.07a6.3,6.3,0,0,1,1.67,4.37c0,6.26-3.81,7.63-7.44,8a3.85,3.85,0,0,1,1.11,3c0,2.18,0,3.94,0,4.47s.29.94,1.12.78A16.29,16.29,0,0,0,16.29,0Z"/></svg> <span aria-hidden=true class=hidden> Edit this guide </span> </span> </a> </div> </div> </section> <div class='content mb-32'> <section> <p>To get started using Algolia in your Magento installation, just follow the steps in this video or on the page below.</p> <div class="flex transition-fast-in-out items-center" data-video=true> <div class="group embed flex-no-grow flex-no-shrink md:w-248 border-l-4 border-solid border-red-500-opacity-80 shadow-md rounded-r overflow-hidden mt-0 mb-0 transition-fast-in-out" data-video-container=DUuv9ALS5cM> <div class=embed-item data-video-frame=DUuv9ALS5cM data-video-start=0 id=DUuv9ALS5cM></div> <div class="absolute pin bg-center bg-cover pointer-events-none flex items-center justify-center" data-video-thumbnail=true style="background-image: url(https://img.youtube.com/vi/DUuv9ALS5cM/hqdefault.jpg)"> <div class="py-16 px-32 rounded-lg bg-gradient-red-400-red-500 shadow group-hover:shadow-md cursor-pointer transition-fast-out"> <div class="m-4 h-24 text-white"> <div class="h-full fill-current"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 10"><polygon points="0 0 0 10 8 5 0 0"/></svg> </div> </div> </div> </div> </div> <div class="ml-32 md:block hidden" data-video-description=true> <div> <div class="mb-8 text-grey-1000 font-bold text-lg"> Algolia Instant Search on your Magento Store </div> <div class=text-grey-400> By Algolia, 17 min </div> </div> </div> </div> <h2 id=installation>Installation</h2> <p>There are two possible ways to install the extension:</p> <ol> <li>Through <a href="https://github.com/colinmollenhour/modman">modman</a></li> <li>Through <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a></li> </ol> <h3 id=modman>Modman</h3> <p>With <a href="https://github.com/colinmollenhour/modman">modman</a> installed, run the following commands:</p> <div class=snippet-wrapper><div class=snippet-actions markdown=0><div class="copy-link snippet-action btn-satellite btn-satellite-white ml-8">Copy</div></div><div class=snippet-header><div class="nav nav-tabs snippet-tabs" markdown=0><span class="snippet-tab-wrapper snippet-tab-wrapper-active"><a href="#snippet_bash" data-toggle=tab class=snippet-tab>bash</a></span></div></div><div id=snippet_bash data-tab-pane class="snippet-body snippet-body-active" data-active=true data-language=bash><div class=highlight><pre class="highlight shell"><code><span class="nb">cd</span> /path/to/your/magento/directory
|
4
|
+
modman init
|
5
|
+
modman clone https://github.com/algolia/algoliasearch-magento.git
|
6
|
+
</code></pre></div></div></div> <h3 id=magento-marketplace>Magento Marketplace</h3> <p>Navigate to the <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a> to get the extension and follow the instructions to install.</p> <h2 id=configuration>Configuration</h2> <p>Before Algolia can be used with Magento, an Algolia account is needed. With the account, it’s possible to configure the Magento extension to work properly.</p> <h3 id=algolia-account>Algolia account</h3> <p>An account can be created in the <a href="/users/sign_up">sign-up wizard</a>.</p> <p class="alert alert-info">Pay attention while picking a data center during the sign-up. For performance reasons, it’s best to pick the one closest to the data center of your Magento installation.</p> <h3 id=magento-settings>Magento settings</h3> <p>To configure the Magento extension, you will need the following Algolia credentials:</p> <ul> <li>Application ID</li> <li><a href="/doc/guides/security/api-keys/#search-only-api-key">Search-only API key</a></li> <li><a href="/doc/guides/security/api-keys/#admin-api-key">Admin API key</a></li> </ul> <p>These credentials can be found on the <a href="/dashboard">Algolia Dashboard</a>, on the <strong>API keys</strong> page from the menu.</p> <p>In the administration section of your Magento project, navigate to <strong>System > Configuration > Catalog > Algolia Search</strong> and fill in the form with all the information required.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/configuration-ef05486e.png" alt="Basic information configuration"/></p> </figure> </section> <section> <h2 id=indexing>Indexing</h2> <p>With the extension configured, the data in your Magento installation should be pushed to Algolia for the first time by a process called <a href="/doc/guides/getting-started/how-algolia-works/in-depth/implementation-process/#indexing-data"><em>indexing</em></a>. This can be accomplished by navigating to <strong>System > Indexing Management</strong>. On this page, a list of indices will show up for which the <strong>Reindex Data</strong> link has to be clicked:</p> <ul> <li>Algolia Search Products</li> <li>Algolia Search Categories</li> <li>Algolia Search Pages</li> <li>Algolia Search Suggestions</li> </ul> <p>When the indexing is done, the search should now be available in your Magento installation.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/indexers-a88f04f2.png" alt="Magento store indexers"/></p> </figure> </section> </div> <div class=mt-88>
|
7
|
+
</div></div></main></body>
|
8
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
= yield
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html> <html lang=en> <head> <title> Quick Start | Magento 1 extension | Algolia Documentation </title>
|
3
|
+
</head> <body class=relative><main class='lg:max-w-648 min-h-full w-full'> <div class='text-grey-1000 leading-normal'> <section class=mb-48> <div class="mb-4 flex justify-between"> <div class="text-xs leading-tight"> <div class="font-sans-alt uppercase font-semibold tracking-wide"> Integrations / Extensions / <span class=text-nebula-500>Magento 1</span> </div> </div> <div class="flex items-center uppercase font-semibold tracking-wide text-grey-1000-opacity-30 text-xs leading-tight whitespace-no-wrap font-sans-alt"> <span class="block mr-4 w-16 h-16 fill-current"> <span class="block p-2"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><path d="M11,22A11,11,0,1,1,22,11,11,11,0,0,1,11,22ZM11,2a9,9,0,1,0,9,9A9,9,0,0,0,11,2Z"/><path d="M15,14a.93.93,0,0,1-.45-.11l-4-2A1,1,0,0,1,10,11V5a1,1,0,0,1,2,0v5.38l3.45,1.73a1,1,0,0,1,.44,1.34A1,1,0,0,1,15,14Z"/></svg> </span> </span> Feb. 15, 2019 </div> </div> <div class="flex justify-between"> <h1 class="md:text-4xl lg:text-5xl text-3xl leading-tall tracking-tight font-bold hyphenated"> Quick Start </h1> <div class="mt-16 ml-16"> <a class='edit-link w-24 h-24 items-center justify-center bg-grey-400-opacity-40 hover:bg-grey-400-opacity-60 rounded-full transition-fast-out hidden' href='https://github.com/algolia/doc/edit/master/source/doc/integration/magento-1/1-getting-started/1-quick-start.html.md.erb' rel=noopener target=_blank> <span class='flex items-center justify-center w-16 h-16 text-grey-700 fill-current'> <svg class=h-full xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.58 31.77"><path d="M16.29,0a16.29,16.29,0,0,0-5.15,31.75c.82.15,1.11-.36,1.11-.79s0-1.41,0-2.77C7.7,29.18,6.74,26,6.74,26a4.36,4.36,0,0,0-1.81-2.39c-1.47-1,.12-1,.12-1a3.43,3.43,0,0,1,2.49,1.68,3.48,3.48,0,0,0,4.74,1.36,3.46,3.46,0,0,1,1-2.18c-3.62-.41-7.42-1.81-7.42-8a6.3,6.3,0,0,1,1.67-4.37,5.94,5.94,0,0,1,.16-4.31s1.37-.44,4.48,1.67a15.41,15.41,0,0,1,8.16,0c3.11-2.11,4.47-1.67,4.47-1.67A5.91,5.91,0,0,1,25,11.07a6.3,6.3,0,0,1,1.67,4.37c0,6.26-3.81,7.63-7.44,8a3.85,3.85,0,0,1,1.11,3c0,2.18,0,3.94,0,4.47s.29.94,1.12.78A16.29,16.29,0,0,0,16.29,0Z"/></svg> <span aria-hidden=true class=hidden> Edit this guide </span> </span> </a> </div> </div> </section> <div class='content mb-32'> <section> <p>To get started using Algolia in your Magento installation, just follow the steps in this video or on the page below.</p> <div class="flex transition-fast-in-out items-center" data-video=true> <div class="group embed flex-no-grow flex-no-shrink md:w-248 border-l-4 border-solid border-red-500-opacity-80 shadow-md rounded-r overflow-hidden mt-0 mb-0 transition-fast-in-out" data-video-container=DUuv9ALS5cM> <div class=embed-item data-video-frame=DUuv9ALS5cM data-video-start=0 id=DUuv9ALS5cM></div> <div class="absolute pin bg-center bg-cover pointer-events-none flex items-center justify-center" data-video-thumbnail=true style="background-image: url(https://img.youtube.com/vi/DUuv9ALS5cM/hqdefault.jpg)"> <div class="py-16 px-32 rounded-lg bg-gradient-red-400-red-500 shadow group-hover:shadow-md cursor-pointer transition-fast-out"> <div class="m-4 h-24 text-white"> <div class="h-full fill-current"> <svg class="block h-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 10"><polygon points="0 0 0 10 8 5 0 0"/></svg> </div> </div> </div> </div> </div> <div class="ml-32 md:block hidden" data-video-description=true> <div> <div class="mb-8 text-grey-1000 font-bold text-lg"> Algolia Instant Search on your Magento Store </div> <div class=text-grey-400> By Algolia, 17 min </div> </div> </div> </div> <h2 id=installation>Installation</h2> <p>There are two possible ways to install the extension:</p> <ol> <li>Through <a href="https://github.com/colinmollenhour/modman">modman</a></li> <li>Through <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a></li> </ol> <h3 id=modman>Modman</h3> <p>With <a href="https://github.com/colinmollenhour/modman">modman</a> installed, run the following commands:</p> <div class=snippet-wrapper><div class=snippet-actions markdown=0><div class="copy-link snippet-action btn-satellite btn-satellite-white ml-8">Copy</div></div><div class=snippet-header><div class="nav nav-tabs snippet-tabs" markdown=0><span class="snippet-tab-wrapper snippet-tab-wrapper-active"><a href="#snippet_bash" data-toggle=tab class=snippet-tab>bash</a></span></div></div><div id=snippet_bash data-tab-pane class="snippet-body snippet-body-active" data-active=true data-language=bash><div class=highlight><pre class="highlight shell"><code><span class="nb">cd</span> /path/to/your/magento/directory
|
4
|
+
modman init
|
5
|
+
modman clone https://github.com/algolia/algoliasearch-magento.git
|
6
|
+
</code></pre></div></div></div> <h3 id=magento-marketplace>Magento Marketplace</h3> <p>Navigate to the <a href="https://marketplace.magento.com/algolia-algoliasearch.html">Magento Marketplace</a> to get the extension and follow the instructions to install.</p> <h2 id=configuration>Configuration</h2> <p>Before Algolia can be used with Magento, an Algolia account is needed. With the account, it’s possible to configure the Magento extension to work properly.</p> <h3 id=algolia-account>Algolia account</h3> <p>An account can be created in the <a href="/users/sign_up">sign-up wizard</a>.</p> <p class="alert alert-info">Pay attention while picking a data center during the sign-up. For performance reasons, it’s best to pick the one closest to the data center of your Magento installation.</p> <h3 id=magento-settings>Magento settings</h3> <p>To configure the Magento extension, you will need the following Algolia credentials:</p> <ul> <li>Application ID</li> <li><a href="/doc/guides/security/api-keys/#search-only-api-key">Search-only API key</a></li> <li><a href="/doc/guides/security/api-keys/#admin-api-key">Admin API key</a></li> </ul> <p>These credentials can be found on the <a href="/dashboard">Algolia Dashboard</a>, on the <strong>API keys</strong> page from the menu.</p> <p>In the administration section of your Magento project, navigate to <strong>System > Configuration > Catalog > Algolia Search</strong> and fill in the form with all the information required.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/configuration-ef05486e.png" alt="Basic information configuration"/></p> </figure> </section> <section> <h2 id=indexing>Indexing</h2> <p>With the extension configured, the data in your Magento installation should be pushed to Algolia for the first time by a process called <a href="/doc/guides/getting-started/how-algolia-works/in-depth/implementation-process/#indexing-data"><em>indexing</em></a>. This can be accomplished by navigating to <strong>System > Indexing Management</strong>. On this page, a list of indices will show up for which the <strong>Reindex Data</strong> link has to be clicked:</p> <ul> <li>Algolia Search Products</li> <li>Algolia Search Categories</li> <li>Algolia Search Pages</li> <li>Algolia Search Suggestions</li> </ul> <p>When the indexing is done, the search should now be available in your Magento installation.</p> <figure> <p><img src="/doc/assets/images/integrations/magento-1/getting-started/indexers-a88f04f2.png" alt="Magento store indexers"/></p> </figure> </section> </div> <div class=mt-88>
|
7
|
+
</div></div></main></body>
|
8
|
+
</html>
|
@@ -0,0 +1,670 @@
|
|
1
|
+
batch_multiple_indices:
|
2
|
+
android: |
|
3
|
+
```java
|
4
|
+
List<JSONObject> array = new ArrayList<>();
|
5
|
+
array.add(new JSONObject()
|
6
|
+
.put("action", "addObject")
|
7
|
+
.put("indexName", "index1")
|
8
|
+
.put("body", new JSONObject()
|
9
|
+
.put("firstname", "Jimmie")
|
10
|
+
.put("lastname", "Barninger")
|
11
|
+
)
|
12
|
+
);
|
13
|
+
|
14
|
+
array.add(new JSONObject()
|
15
|
+
.put("action", "updateObject")
|
16
|
+
.put("indexName", "index1")
|
17
|
+
.put("body", new JSONObject()
|
18
|
+
.put("objectID", "myID2")
|
19
|
+
.put("firstname", "Max")
|
20
|
+
.put("lastname", "Barninger")
|
21
|
+
)
|
22
|
+
);
|
23
|
+
|
24
|
+
array.add(new JSONObject()
|
25
|
+
.put("action", "partialUpdateObject")
|
26
|
+
.put("indexName", "index1")
|
27
|
+
.put("body", new JSONObject()
|
28
|
+
.put("objectID", "myID3")
|
29
|
+
.put("lastname", "McFarway")
|
30
|
+
)
|
31
|
+
);
|
32
|
+
|
33
|
+
array.add(new JSONObject()
|
34
|
+
.put("action", "partialUpdateObjectNoCreate")
|
35
|
+
.put("indexName", "index1")
|
36
|
+
.put("body", new JSONObject()
|
37
|
+
.put("objectID", "myID4")
|
38
|
+
.put("firstname", "Warren")
|
39
|
+
)
|
40
|
+
);
|
41
|
+
|
42
|
+
array.add(new JSONObject()
|
43
|
+
.put("action", "deleteObject")
|
44
|
+
.put("indexName", "index2")
|
45
|
+
.put("body", new JSONObject()
|
46
|
+
.put("objectID", "myID5")
|
47
|
+
)
|
48
|
+
);
|
49
|
+
|
50
|
+
client.batchAsync(new JSONArray(array), null);
|
51
|
+
```
|
52
|
+
|
53
|
+
csharp: |
|
54
|
+
```csharp
|
55
|
+
List<BatchOperation<Contact>> operations = new List<BatchOperation<Contact>>
|
56
|
+
{
|
57
|
+
new BatchOperation<Contact>
|
58
|
+
{
|
59
|
+
Action = BatchActionType.AddObject,
|
60
|
+
IndexName = "index1",
|
61
|
+
Body = new Contact { FirstName = "Jimmie", LastName = "Barninger" }
|
62
|
+
},
|
63
|
+
new BatchOperation<Contact>
|
64
|
+
{
|
65
|
+
Action = BatchActionType.UpdateObject,
|
66
|
+
IndexName = "index1",
|
67
|
+
Body = new Contact { ObjectID = "myID2", FirstName = "Max", LastName = "Barninger" }
|
68
|
+
},
|
69
|
+
new BatchOperation<Contact>
|
70
|
+
{
|
71
|
+
Action = BatchActionType.PartialUpdateObject,
|
72
|
+
IndexName = "index1",
|
73
|
+
Body = new Contact { ObjectID = "myID3", LastName = "McFarway" }
|
74
|
+
},
|
75
|
+
new BatchOperation<Contact>
|
76
|
+
{
|
77
|
+
Action = BatchActionType.PartialUpdateObjectNoCreate,
|
78
|
+
IndexName = "index1",
|
79
|
+
Body = new Contact { ObjectID = "myID4", LastName = "Warren" }
|
80
|
+
},
|
81
|
+
new BatchOperation<Contact>
|
82
|
+
{
|
83
|
+
Action = BatchActionType.DeleteObject,
|
84
|
+
IndexName = "index2",
|
85
|
+
Body = new Contact { ObjectID = "myID5" }
|
86
|
+
}
|
87
|
+
};
|
88
|
+
|
89
|
+
client.MultipleBatch(operations);
|
90
|
+
|
91
|
+
// Asynchronous
|
92
|
+
client.MultipleBatchAsync(operations);
|
93
|
+
```
|
94
|
+
|
95
|
+
go: |
|
96
|
+
```go
|
97
|
+
operations := []algoliasearch.BatchOperationIndexed{
|
98
|
+
{
|
99
|
+
IndexName: "index1",
|
100
|
+
BatchOperation: algoliasearch.BatchOperation{
|
101
|
+
Action: "addObject",
|
102
|
+
Body: algoliasearch.Map{
|
103
|
+
"firstname": "Jimmie",
|
104
|
+
"lastname": "Barninger",
|
105
|
+
},
|
106
|
+
},
|
107
|
+
},
|
108
|
+
{
|
109
|
+
IndexName: "index1",
|
110
|
+
BatchOperation: algoliasearch.BatchOperation{
|
111
|
+
Action: "updateObject",
|
112
|
+
Body: algoliasearch.Map{
|
113
|
+
"objectID": "myID2",
|
114
|
+
"firstname": "Max",
|
115
|
+
"lastname": "Barninger",
|
116
|
+
},
|
117
|
+
},
|
118
|
+
},
|
119
|
+
{
|
120
|
+
IndexName: "index1",
|
121
|
+
BatchOperation: algoliasearch.BatchOperation{
|
122
|
+
Action: "partialUpdateObject",
|
123
|
+
Body: algoliasearch.Map{
|
124
|
+
"objectID": "myID3",
|
125
|
+
"lastname": "McFarway",
|
126
|
+
},
|
127
|
+
},
|
128
|
+
},
|
129
|
+
{
|
130
|
+
IndexName: "index1",
|
131
|
+
BatchOperation: algoliasearch.BatchOperation{
|
132
|
+
Action: "partialUpdateObjectNoCreate",
|
133
|
+
Body: algoliasearch.Map{
|
134
|
+
"objectID": "myID4",
|
135
|
+
"firstname": "Warren",
|
136
|
+
},
|
137
|
+
},
|
138
|
+
},
|
139
|
+
{
|
140
|
+
IndexName: "index2",
|
141
|
+
BatchOperation: algoliasearch.BatchOperation{
|
142
|
+
Action: "deleteObject",
|
143
|
+
Body: algoliasearch.Map{
|
144
|
+
"objectID": "myID5",
|
145
|
+
},
|
146
|
+
},
|
147
|
+
},
|
148
|
+
}
|
149
|
+
|
150
|
+
res, err := client.Batch(operations)
|
151
|
+
```
|
152
|
+
|
153
|
+
java: |
|
154
|
+
```java
|
155
|
+
// Sync and Async version
|
156
|
+
|
157
|
+
client.batch(Arrays.asList(
|
158
|
+
new BatchAddObjectOperation<>(
|
159
|
+
"index1",
|
160
|
+
new Contact().setFirstName("Jimmie").setLastName("Barninger")
|
161
|
+
),
|
162
|
+
new BatchUpdateObjectOperation<>(
|
163
|
+
"index1",
|
164
|
+
new Contact().setObjectID("myID2").setFirstName("Max").setLastName("Barninger")
|
165
|
+
),
|
166
|
+
new BatchPartialUpdateObjectOperation<>(
|
167
|
+
"index1",
|
168
|
+
new Contact().setObjectID("myID3").setLastName("McFarway")
|
169
|
+
),
|
170
|
+
new BatchPartialUpdateObjectNoCreateOperation<>(
|
171
|
+
"index1",
|
172
|
+
new Contact().setObjectID("myID4").setFirstName("Warren")
|
173
|
+
),
|
174
|
+
new BatchDeleteObjectOperation(
|
175
|
+
"index2",
|
176
|
+
"myID5"
|
177
|
+
)
|
178
|
+
));
|
179
|
+
```
|
180
|
+
|
181
|
+
javascript: |
|
182
|
+
```js
|
183
|
+
client.batch([
|
184
|
+
{
|
185
|
+
action: 'addObject',
|
186
|
+
indexName: 'index1',
|
187
|
+
body: {
|
188
|
+
firstname: 'Jimmie',
|
189
|
+
lastname: 'Barninger'
|
190
|
+
}
|
191
|
+
},
|
192
|
+
{
|
193
|
+
action: 'updateObject',
|
194
|
+
indexName: 'index1',
|
195
|
+
body: {
|
196
|
+
objectID: 'myID2',
|
197
|
+
firstname: 'Max',
|
198
|
+
lastname: 'Barninger'
|
199
|
+
}
|
200
|
+
},
|
201
|
+
{
|
202
|
+
action: 'partialUpdateObject',
|
203
|
+
indexName: 'index1',
|
204
|
+
body: {
|
205
|
+
objectID: 'myID3',
|
206
|
+
lastname: 'McFarway'
|
207
|
+
}
|
208
|
+
},
|
209
|
+
{
|
210
|
+
action: 'partialUpdateObjectNoCreate',
|
211
|
+
indexName: 'index1',
|
212
|
+
body: {
|
213
|
+
objectID: 'myID4',
|
214
|
+
firstname: 'Warren'
|
215
|
+
}
|
216
|
+
},
|
217
|
+
{
|
218
|
+
action: 'deleteObject',
|
219
|
+
indexName: 'index2',
|
220
|
+
body: {
|
221
|
+
objectID: 'myID5'
|
222
|
+
}
|
223
|
+
}
|
224
|
+
], function(err, content) {
|
225
|
+
if (err) throw err;
|
226
|
+
|
227
|
+
console.log(content);
|
228
|
+
})
|
229
|
+
```
|
230
|
+
|
231
|
+
php: |
|
232
|
+
```php
|
233
|
+
$res = $client->multipleBatch(
|
234
|
+
[
|
235
|
+
[
|
236
|
+
'action' => 'addObject',
|
237
|
+
'indexName' => 'index1',
|
238
|
+
'body' => [
|
239
|
+
'firstname' => 'Jimmie',
|
240
|
+
'lastname' => 'Barninger'
|
241
|
+
]
|
242
|
+
],
|
243
|
+
[
|
244
|
+
'action' => 'updateObject',
|
245
|
+
'indexName' => 'index1',
|
246
|
+
'body' => [
|
247
|
+
'objectID' => 'myID2',
|
248
|
+
'firstname' => 'Max',
|
249
|
+
'lastname' => 'Barninger'
|
250
|
+
]
|
251
|
+
],
|
252
|
+
[
|
253
|
+
'action' => 'partialUpdateObject',
|
254
|
+
'indexName' => 'index1',
|
255
|
+
'body' => [
|
256
|
+
'objectID' => 'myID3',
|
257
|
+
'lastname' => 'McFarway'
|
258
|
+
]
|
259
|
+
],
|
260
|
+
[
|
261
|
+
'action' => 'partialUpdateObjectNoCreate',
|
262
|
+
'indexName' => 'index1',
|
263
|
+
'body' => [
|
264
|
+
'objectID' => 'myID4',
|
265
|
+
'firstname' => 'Warren'
|
266
|
+
]
|
267
|
+
],
|
268
|
+
[
|
269
|
+
'action' => 'deleteObject',
|
270
|
+
'indexName' => 'index2',
|
271
|
+
'body' => [
|
272
|
+
'objectID' => 'myID5'
|
273
|
+
]
|
274
|
+
]
|
275
|
+
]
|
276
|
+
);
|
277
|
+
```
|
278
|
+
|
279
|
+
python: |
|
280
|
+
```python
|
281
|
+
res = client.multiple_batch([
|
282
|
+
{
|
283
|
+
'action': 'addObject',
|
284
|
+
'indexName': 'index1',
|
285
|
+
'body': {
|
286
|
+
'firstname': 'Jimmie',
|
287
|
+
'lastname': 'Barninger'
|
288
|
+
}
|
289
|
+
},
|
290
|
+
{
|
291
|
+
'action': 'updateObject',
|
292
|
+
'indexName': 'index1',
|
293
|
+
'body': {
|
294
|
+
'objectID': 'myID2',
|
295
|
+
'firstname': 'Max',
|
296
|
+
'lastname': 'Barninger'
|
297
|
+
}
|
298
|
+
},
|
299
|
+
{
|
300
|
+
'action': 'partialUpdateObject',
|
301
|
+
'indexName': 'index1',
|
302
|
+
'body': {
|
303
|
+
'objectID': 'myID3',
|
304
|
+
'lastname': 'McFarway'
|
305
|
+
}
|
306
|
+
},
|
307
|
+
{
|
308
|
+
'action': 'partialUpdateObjectNoCreate',
|
309
|
+
'indexName': 'index1',
|
310
|
+
'body': {
|
311
|
+
'objectID': 'myID4',
|
312
|
+
'firstname': 'Warren'
|
313
|
+
}
|
314
|
+
},
|
315
|
+
{
|
316
|
+
'action': 'deleteObject',
|
317
|
+
'indexName': 'index2',
|
318
|
+
'body': {
|
319
|
+
'objectID': 'myID5'
|
320
|
+
}
|
321
|
+
}
|
322
|
+
])
|
323
|
+
```
|
324
|
+
|
325
|
+
ruby: |
|
326
|
+
```ruby
|
327
|
+
res = client.batch([
|
328
|
+
{
|
329
|
+
'action': 'addObject',
|
330
|
+
'indexName': 'index1',
|
331
|
+
'body': {
|
332
|
+
'firstname': 'Jimmie',
|
333
|
+
'lastname': 'Barninger'
|
334
|
+
}
|
335
|
+
},
|
336
|
+
{
|
337
|
+
'action': 'updateObject',
|
338
|
+
'indexName': 'index1',
|
339
|
+
'body': {
|
340
|
+
'objectID': 'myID2',
|
341
|
+
'firstname': 'Max',
|
342
|
+
'lastname': 'Barninger'
|
343
|
+
}
|
344
|
+
}
|
345
|
+
{
|
346
|
+
'action': 'partialUpdateObject',
|
347
|
+
'indexName': 'index1',
|
348
|
+
'body': {
|
349
|
+
'objectID': 'myID3',
|
350
|
+
'lastname': 'McFarway'
|
351
|
+
}
|
352
|
+
}
|
353
|
+
{
|
354
|
+
'action': 'partialUpdateObjectNoCreate',
|
355
|
+
'indexName': 'index1',
|
356
|
+
'body': {
|
357
|
+
'objectID': 'myID4',
|
358
|
+
'firstname': 'Warren'
|
359
|
+
}
|
360
|
+
}
|
361
|
+
{
|
362
|
+
'action': 'deleteObject',
|
363
|
+
'indexName': 'index2',
|
364
|
+
'body': {
|
365
|
+
'objectID': 'myID5'
|
366
|
+
}
|
367
|
+
}
|
368
|
+
])
|
369
|
+
```
|
370
|
+
|
371
|
+
scala: |
|
372
|
+
```scala
|
373
|
+
client.execute {
|
374
|
+
batch(
|
375
|
+
index into "index1" `object` Contact("", "Jimmie", "Barninger"),
|
376
|
+
index into "index1" `object` ContactWithObjectID("myID2", "Max", "Barninger"),
|
377
|
+
partialUpdate from "index1" `object` ContactWithObjectID("myID3", "", "McFarway"),
|
378
|
+
partialUpdate from "index1" `object` ContactWithObjectID("myID4", "Warren", "") createIfNotExists false,
|
379
|
+
delete from "index2" objectId "myID5"
|
380
|
+
)
|
381
|
+
}
|
382
|
+
```
|
383
|
+
|
384
|
+
swift: |
|
385
|
+
```swift
|
386
|
+
let operations: [JSONObject] = [
|
387
|
+
[
|
388
|
+
"action": "addObject",
|
389
|
+
"indexName": "index1",
|
390
|
+
"body": [
|
391
|
+
"firstname": "Jimmie",
|
392
|
+
"lastname": "Barninger"
|
393
|
+
]
|
394
|
+
],
|
395
|
+
[
|
396
|
+
"action": "updateObject",
|
397
|
+
"indexName": "index1",
|
398
|
+
"body": [
|
399
|
+
"objectID": "myID2",
|
400
|
+
"firstname": "Max",
|
401
|
+
"lastname": "Barninger"
|
402
|
+
]
|
403
|
+
],
|
404
|
+
[
|
405
|
+
"action": "partialUpdateObject",
|
406
|
+
"indexName": "index1",
|
407
|
+
"body": [
|
408
|
+
"objectID": "myID3",
|
409
|
+
"lastname": "McFarway"
|
410
|
+
]
|
411
|
+
],
|
412
|
+
[
|
413
|
+
"action": "partialUpdateObjectNoCreate",
|
414
|
+
"indexName": "index1",
|
415
|
+
"body": [
|
416
|
+
"objectID": "myID4",
|
417
|
+
"firstname": "Warren"
|
418
|
+
]
|
419
|
+
],
|
420
|
+
[
|
421
|
+
"action": "deleteObject",
|
422
|
+
"indexName": "index2",
|
423
|
+
"body": [
|
424
|
+
"objectID": "myID5"
|
425
|
+
]
|
426
|
+
]
|
427
|
+
]
|
428
|
+
|
429
|
+
client.batch(operations: operations) {
|
430
|
+
(content, error) in
|
431
|
+
// Handle response
|
432
|
+
}
|
433
|
+
```
|
434
|
+
|
435
|
+
batch_multiple_indices_with_extra_headers:
|
436
|
+
android: |
|
437
|
+
```java
|
438
|
+
List<JSONObject> array = new ArrayList<>();
|
439
|
+
|
440
|
+
array.add(new JSONObject()
|
441
|
+
.put("action", "addObject")
|
442
|
+
.put("indexName", "index1")
|
443
|
+
.put("body", new JSONObject()
|
444
|
+
.put("firstname", "Jimmie")
|
445
|
+
.put("lastname", "Barninger")
|
446
|
+
)
|
447
|
+
);
|
448
|
+
|
449
|
+
array.add(new JSONObject()
|
450
|
+
.put("action", "addObject")
|
451
|
+
.put("indexName", "index2")
|
452
|
+
.put("body", new JSONObject()
|
453
|
+
.put("firstname", "Warren")
|
454
|
+
.put("lastname", "Speach")
|
455
|
+
)
|
456
|
+
);
|
457
|
+
|
458
|
+
client.batchAsync(
|
459
|
+
new JSONArray(array),
|
460
|
+
new RequestOptions().setHeader("X-Algolia-User-ID", "94.228.178.246"),
|
461
|
+
null
|
462
|
+
);
|
463
|
+
```
|
464
|
+
csharp: |
|
465
|
+
```csharp
|
466
|
+
RequestOptions requestOptions = new RequestOptions
|
467
|
+
{
|
468
|
+
Headers = new Dictionary<string,string>{ { "X-Algolia-User-ID", "user123" } }
|
469
|
+
};
|
470
|
+
|
471
|
+
List<BatchOperation<Contact>> operations = new List<BatchOperation<Contact>>
|
472
|
+
{
|
473
|
+
new BatchOperation<Contact>
|
474
|
+
{
|
475
|
+
Action = BatchActionType.AddObject,
|
476
|
+
IndexName = "index1",
|
477
|
+
Body = new Contact { FirstName = "Jimmie", LastName = "Barninger" }
|
478
|
+
},
|
479
|
+
new BatchOperation<Contact>
|
480
|
+
{
|
481
|
+
Action = BatchActionType.AddObject,
|
482
|
+
IndexName = "index1",
|
483
|
+
Body = new Contact { FirstName = "Warren", LastName = "Speach" }
|
484
|
+
}
|
485
|
+
};
|
486
|
+
|
487
|
+
client.MultipleBatch(operations, requestOptions);
|
488
|
+
|
489
|
+
// Asynchronous
|
490
|
+
client.MultipleBatchAsync(operations, requestOptions);
|
491
|
+
```
|
492
|
+
go: |
|
493
|
+
```go
|
494
|
+
person := algoliasearch.Map{
|
495
|
+
"firstname": "Jimmie",
|
496
|
+
"lastname": "Barninger",
|
497
|
+
}
|
498
|
+
|
499
|
+
operation := algoliasearch.BatchOperation{
|
500
|
+
Action: "addObject",
|
501
|
+
Body: person,
|
502
|
+
}
|
503
|
+
|
504
|
+
operations := []algoliasearch.BatchOperationIndexed{
|
505
|
+
{IndexName: "prodIndex", BatchOperation: operation},
|
506
|
+
{IndexName: "devIndex", BatchOperation: operation},
|
507
|
+
}
|
508
|
+
|
509
|
+
opts := &algoliasearch.RequestOptions{
|
510
|
+
ExtraHeaders: map[string]string{
|
511
|
+
"X-Algolia-User-ID": "userID2",
|
512
|
+
},
|
513
|
+
}
|
514
|
+
|
515
|
+
res, err := client.BatchWithRequestOptions(operations, opts)
|
516
|
+
```
|
517
|
+
|
518
|
+
java: |
|
519
|
+
```java
|
520
|
+
// Sync and Async version
|
521
|
+
|
522
|
+
client.batch(
|
523
|
+
Arrays.asList(
|
524
|
+
new BatchAddObjectOperation<>(
|
525
|
+
"index1",
|
526
|
+
new Contact().setFirstName("Jimmie").setLastName("Barninger")
|
527
|
+
),
|
528
|
+
new BatchAddObjectOperation<>(
|
529
|
+
"index2",
|
530
|
+
new Contact().setFirstName("Warren").setLastName("Speach")
|
531
|
+
)
|
532
|
+
),
|
533
|
+
new RequestOptions().addExtraHeader("X-Algolia-User-ID", "user123")
|
534
|
+
);
|
535
|
+
```
|
536
|
+
|
537
|
+
javascript: |
|
538
|
+
```js
|
539
|
+
client.setExtraHeader('X-FORWARDED-FOR', '94.228.178.246');
|
540
|
+
client.batch([
|
541
|
+
{
|
542
|
+
action: 'addObject',
|
543
|
+
indexName: 'index1',
|
544
|
+
body:
|
545
|
+
{
|
546
|
+
firstname: 'Jimmie',
|
547
|
+
lastname: 'Barninger'
|
548
|
+
}
|
549
|
+
},
|
550
|
+
{
|
551
|
+
action: 'addObject',
|
552
|
+
indexName: 'index2',
|
553
|
+
body: {
|
554
|
+
firstname: 'Warren',
|
555
|
+
lastname: 'Speach'
|
556
|
+
}
|
557
|
+
}
|
558
|
+
], function(err, content) {
|
559
|
+
if (err) throw err;
|
560
|
+
|
561
|
+
console.log(content);
|
562
|
+
})
|
563
|
+
```
|
564
|
+
php: |
|
565
|
+
```php
|
566
|
+
$operations = [
|
567
|
+
[
|
568
|
+
'action' => 'addObject',
|
569
|
+
'indexName' => 'index1',
|
570
|
+
'body' => [
|
571
|
+
'firstname' => 'Jimmie',
|
572
|
+
'lastname' => 'Barninger'
|
573
|
+
]
|
574
|
+
],
|
575
|
+
[
|
576
|
+
'action' => 'addObject',
|
577
|
+
'indexName' => 'index2',
|
578
|
+
'body' => [
|
579
|
+
'firstname' => 'Warren',
|
580
|
+
'lastname' => 'Speach'
|
581
|
+
]
|
582
|
+
]
|
583
|
+
];
|
584
|
+
|
585
|
+
$res = $client->multipleBatch($operations, [
|
586
|
+
'X-FORWARDED-FOR' => '94.228.178.246'
|
587
|
+
]);
|
588
|
+
```
|
589
|
+
python: |
|
590
|
+
```python
|
591
|
+
res = client.multiple_batch(
|
592
|
+
[
|
593
|
+
{
|
594
|
+
'action': 'addObject',
|
595
|
+
'indexName': 'index1',
|
596
|
+
'body': {'firstname': 'Jimmie', 'lastname': 'Barninger'}
|
597
|
+
},
|
598
|
+
{
|
599
|
+
'action': 'addObject',
|
600
|
+
'indexName': 'index2',
|
601
|
+
'body': {'firstname': 'Warren', 'lastname': 'Speach'}
|
602
|
+
}
|
603
|
+
],
|
604
|
+
{
|
605
|
+
'X-FORWARDED-FOR': '94.228.178.246'
|
606
|
+
}
|
607
|
+
)
|
608
|
+
```
|
609
|
+
ruby: |
|
610
|
+
```ruby
|
611
|
+
operations = [
|
612
|
+
{
|
613
|
+
'action': 'addObject',
|
614
|
+
'indexName': 'index1',
|
615
|
+
'body': {'firstname': 'Jimmie', 'lastname': 'Barninger'}
|
616
|
+
},
|
617
|
+
{
|
618
|
+
'action': 'addObject',
|
619
|
+
'indexName': 'index2',
|
620
|
+
'body': {'firstname': 'Warren', 'lastname': 'Speach'}
|
621
|
+
}
|
622
|
+
]
|
623
|
+
|
624
|
+
extra_headers = {
|
625
|
+
'X-FORWARDED-FOR': '94.228.178.246'
|
626
|
+
}
|
627
|
+
|
628
|
+
res = client.batch(operations, extra_headers)
|
629
|
+
```
|
630
|
+
scala: |
|
631
|
+
```scala
|
632
|
+
client.execute {
|
633
|
+
batch(
|
634
|
+
index into "index1" `object` Contact("Jimmie", "Barninger"),
|
635
|
+
index into "index2" `object` Contact("Warren", "Speach")
|
636
|
+
) options RequestOptions(extraHeaders = Some(
|
637
|
+
Map("X-Algolia-User-ID" => "user123"))
|
638
|
+
)
|
639
|
+
}
|
640
|
+
```
|
641
|
+
|
642
|
+
swift: |
|
643
|
+
```swift
|
644
|
+
let operations: [JSONObject] = [
|
645
|
+
[
|
646
|
+
"action": "addObject",
|
647
|
+
"indexName": "index1",
|
648
|
+
"body": [
|
649
|
+
"firstname": "Jimmie",
|
650
|
+
"lastname": "Barninger"
|
651
|
+
]
|
652
|
+
],
|
653
|
+
[
|
654
|
+
"action": "addObject",
|
655
|
+
"indexName": "index2",
|
656
|
+
"body": [
|
657
|
+
"firstname": "Warren",
|
658
|
+
"lastname": "Speach"
|
659
|
+
]
|
660
|
+
]
|
661
|
+
]
|
662
|
+
|
663
|
+
let requestOptions = RequestOptions()
|
664
|
+
requestOptions.headers["X-Algolia-User-ID"] = "user123"
|
665
|
+
|
666
|
+
client.batch(operations: operations, requestOptions: requestOptions) {
|
667
|
+
(content, error) in
|
668
|
+
// Handle response
|
669
|
+
}
|
670
|
+
```
|