antbird 0.0.1 → 0.0.2
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/.rspec +0 -1
- data/.travis.yml +15 -1
- data/Guardfile +1 -1
- data/README.md +0 -1
- data/lib/antbird/client/errors.rb +22 -0
- data/lib/antbird/client.rb +38 -17
- data/lib/antbird/rest_api/rest_api_v5_5.rb +1 -1
- data/lib/antbird/rest_api/rest_api_v5_6.rb +2 -2
- data/lib/antbird/rest_api/rest_api_v6_1.rb +1 -1
- data/lib/antbird/rest_api/rest_api_v6_2.rb +3 -3
- data/lib/antbird/version.rb +1 -1
- data/lib/antbird.rb +1 -1
- data/script/generate_api_methods +5 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b134c730af7d5ff2f88b64158aba346bf92e412439de8501df3608bc52dba06
|
4
|
+
data.tar.gz: 75efcb9f9e87f3371ef48e793fbfd630a122213719e79c43d276cf48186ef69b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d2b4cde70a9eefe2ca1e5776c6bb1743ec7c0a57d77bf8487fc3098f37499a12402597a18afd31b12d815bee7bedf08f808e3877aff490295a554b5365c904e
|
7
|
+
data.tar.gz: dea3a216fb467d5aa03be1ee51ad14f6955f4dfdc23653b122d574f373c94aabde8f31e385665ad15ba29aedbffc0e54205f55faac495fd0e29f9bc754a5c413
|
data/.rspec
CHANGED
data/.travis.yml
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
sudo: false
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
- 2.5.
|
4
|
+
- 2.5.1
|
5
|
+
env:
|
6
|
+
- ES_VERSION=6.2.4
|
7
|
+
- ES_VERSION=6.1.4
|
8
|
+
- ES_VERSION=5.6.9
|
9
|
+
- ES_VERSION=5.5.3
|
10
|
+
|
5
11
|
before_install: gem install bundler -v 1.16.1
|
12
|
+
install:
|
13
|
+
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ES_VERSION}.tar.gz
|
14
|
+
- tar -xzf elasticsearch-${ES_VERSION}.tar.gz
|
15
|
+
- ./elasticsearch-${ES_VERSION}/bin/elasticsearch &
|
16
|
+
- bundle install
|
17
|
+
- wget --quiet --waitretry=1 --retry-connrefused --timeout=10 --output-document=- http://127.0.0.1:9200
|
18
|
+
|
19
|
+
script: bundle exec rspec
|
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Antbird
|
2
|
+
class Client
|
3
|
+
class Error < StandardError; end
|
4
|
+
|
5
|
+
class ApiError < Error
|
6
|
+
def initialize(response)
|
7
|
+
@response = response
|
8
|
+
@status = response.status
|
9
|
+
|
10
|
+
body = response.body
|
11
|
+
@error = body["error"] if body.is_a?(Hash) && body.key?("error")
|
12
|
+
|
13
|
+
message = @error || body.to_s
|
14
|
+
super message
|
15
|
+
end
|
16
|
+
attr_reader :response, :status
|
17
|
+
end
|
18
|
+
|
19
|
+
class ServerError < ApiError; end
|
20
|
+
class RequestError < ApiError; end
|
21
|
+
end
|
22
|
+
end
|
data/lib/antbird/client.rb
CHANGED
@@ -1,27 +1,26 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
require 'faraday_middleware'
|
3
|
+
require 'antbird/client/errors'
|
3
4
|
|
4
5
|
module Antbird
|
5
6
|
class Client
|
6
|
-
DEFAULT_VERSION = '6.2.3'
|
7
|
-
|
8
7
|
def initialize(
|
9
8
|
scope: {},
|
10
9
|
url: "http://localhost:9200",
|
11
|
-
version:
|
10
|
+
version: nil,
|
12
11
|
read_timeout: 5,
|
13
|
-
open_timeout: 2
|
14
|
-
)
|
15
|
-
@scope = scope.transform_keys(&:to_sym)
|
16
|
-
@url = url
|
17
|
-
@version = version
|
12
|
+
open_timeout: 2)
|
18
13
|
|
19
14
|
@read_timeout = read_timeout
|
20
15
|
@open_timeout = open_timeout
|
16
|
+
@url = url
|
17
|
+
|
18
|
+
@scope = scope.transform_keys(&:to_sym)
|
19
|
+
@version = version || fetch_version
|
21
20
|
|
22
21
|
@api_specs = {}
|
23
22
|
|
24
|
-
class_version = version.split('.')[0,2].join('_')
|
23
|
+
class_version = @version.split('.')[0,2].join('_')
|
25
24
|
|
26
25
|
require "antbird/rest_api/rest_api_v#{class_version}"
|
27
26
|
extend Antbird::RestApi.const_get "RestApiV#{class_version}"
|
@@ -41,6 +40,8 @@ module Antbird
|
|
41
40
|
end
|
42
41
|
|
43
42
|
def request(api_name, api_spec, params)
|
43
|
+
validate_params(api_spec, params)
|
44
|
+
|
44
45
|
body = extract_body(params)
|
45
46
|
scopes = extract_scopes(params)
|
46
47
|
|
@@ -85,23 +86,20 @@ module Antbird
|
|
85
86
|
req.options[:timeout] = read_timeout if read_timeout
|
86
87
|
end
|
87
88
|
else
|
88
|
-
raise ArgumentError, "
|
89
|
+
raise ArgumentError, "Unknown HTTP request method: #{method.inspect}"
|
89
90
|
end
|
90
91
|
|
91
92
|
if method == :head
|
92
93
|
case response.status
|
93
94
|
when 200
|
94
|
-
true
|
95
|
+
return true
|
95
96
|
when 404
|
96
|
-
false
|
97
|
-
else
|
98
|
-
raise 'error'
|
97
|
+
return false
|
99
98
|
end
|
100
|
-
else
|
101
|
-
response.body
|
102
99
|
end
|
103
100
|
|
104
|
-
|
101
|
+
handle_errors!(response)
|
102
|
+
response.body
|
105
103
|
end
|
106
104
|
|
107
105
|
def extract_scopes(params)
|
@@ -148,5 +146,28 @@ module Antbird
|
|
148
146
|
conn.adapter Faraday.default_adapter
|
149
147
|
end
|
150
148
|
end
|
149
|
+
|
150
|
+
private
|
151
|
+
|
152
|
+
def handle_errors!(response)
|
153
|
+
if response.status >= 500
|
154
|
+
raise ServerError, response
|
155
|
+
elsif response.body.is_a?(Hash) && response.body.key?("error")
|
156
|
+
raise RequestError, response
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def validate_params(api_spec, params)
|
161
|
+
# TODO case: required parameter is missing
|
162
|
+
# TODO case: invalid parameter name
|
163
|
+
# TODO case: invalid parameter format
|
164
|
+
if api_spec.dig('body', 'required') && !params.key?(:body)
|
165
|
+
raise ArgumentError, 'Body is missing'
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def fetch_version
|
170
|
+
connection.get('/').body.dig('version', 'number')
|
171
|
+
end
|
151
172
|
end
|
152
173
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Generated REST API methods file - DO NOT EDIT!
|
2
|
-
# Date: 2018-04-
|
3
|
-
# ES version: 6.2.
|
2
|
+
# Date: 2018-04-20
|
3
|
+
# ES version: 6.2.4
|
4
4
|
|
5
5
|
module Antbird
|
6
6
|
module RestApi
|
@@ -475,7 +475,7 @@ module Antbird
|
|
475
475
|
# http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html
|
476
476
|
def indices_forcemerge(params = {})
|
477
477
|
api_name = 'indices.forcemerge'
|
478
|
-
api_spec = @api_specs[api_name] ||= {"documentation"=>"http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html", "methods"=>["POST"], "url"=>{"path"=>"/_forcemerge", "paths"=>["/_forcemerge", "/{index}/_forcemerge"], "parts"=>{"index"=>{"type"=>"list", "description"=>"A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices"}}, "params"=>{"flush"=>{"type"=>"boolean", "description"=>"Specify whether the index should be flushed after performing the operation (default: true)"}, "ignore_unavailable"=>{"type"=>"boolean", "description"=>"Whether specified concrete indices should be ignored when unavailable (missing or closed)"}, "allow_no_indices"=>{"type"=>"boolean", "description"=>"Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)"}, "expand_wildcards"=>{"type"=>"enum", "options"=>["open", "closed", "none", "all"], "default"=>"open", "description"=>"Whether to expand wildcard expression to concrete indices that are open, closed or both."}, "max_num_segments"=>{"type"=>"number", "description"=>"The number of segments the index should be merged into (default: dynamic)"}, "only_expunge_deletes"=>{"type"=>"boolean", "description"=>"Specify whether the operation should only expunge deleted documents"}
|
478
|
+
api_spec = @api_specs[api_name] ||= {"documentation"=>"http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html", "methods"=>["POST"], "url"=>{"path"=>"/_forcemerge", "paths"=>["/_forcemerge", "/{index}/_forcemerge"], "parts"=>{"index"=>{"type"=>"list", "description"=>"A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices"}}, "params"=>{"flush"=>{"type"=>"boolean", "description"=>"Specify whether the index should be flushed after performing the operation (default: true)"}, "ignore_unavailable"=>{"type"=>"boolean", "description"=>"Whether specified concrete indices should be ignored when unavailable (missing or closed)"}, "allow_no_indices"=>{"type"=>"boolean", "description"=>"Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)"}, "expand_wildcards"=>{"type"=>"enum", "options"=>["open", "closed", "none", "all"], "default"=>"open", "description"=>"Whether to expand wildcard expression to concrete indices that are open, closed or both."}, "max_num_segments"=>{"type"=>"number", "description"=>"The number of segments the index should be merged into (default: dynamic)"}, "only_expunge_deletes"=>{"type"=>"boolean", "description"=>"Specify whether the operation should only expunge deleted documents"}}}, "body"=>nil}
|
479
479
|
request(api_name, api_spec, params)
|
480
480
|
end
|
481
481
|
|
data/lib/antbird/version.rb
CHANGED
data/lib/antbird.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require
|
1
|
+
require 'antbird/version'
|
2
2
|
require 'antbird/client'
|
data/script/generate_api_methods
CHANGED
@@ -41,4 +41,8 @@ class ApiMethodsGenerator
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
|
44
|
+
travis_yaml = YAML.load_file('.travis.yml')
|
45
|
+
versions = travis_yaml['env'].map { |v| v.scan(/ES_VERSION=([\d\.]+)/) }.flatten.uniq
|
46
|
+
versions.each do |version|
|
47
|
+
ApiMethodsGenerator.new(version).run
|
48
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: antbird
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fukayatsu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- bin/setup
|
158
158
|
- lib/antbird.rb
|
159
159
|
- lib/antbird/client.rb
|
160
|
+
- lib/antbird/client/errors.rb
|
160
161
|
- lib/antbird/rest_api/rest_api_v5_5.rb
|
161
162
|
- lib/antbird/rest_api/rest_api_v5_6.rb
|
162
163
|
- lib/antbird/rest_api/rest_api_v6_1.rb
|