abbyy-cloud 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/abbyy-cloud.gemspec +5 -1
- data/lib/abbyy/cloud.rb +2 -1
- data/lib/abbyy/cloud/models/full_order.rb +6 -6
- data/lib/abbyy/cloud/models/translation_link.rb +4 -4
- data/lib/abbyy/cloud/operations/base.rb +6 -5
- data/lib/abbyy/cloud/operations/file.rb +29 -0
- data/lib/abbyy/cloud/operations/submit_order.rb +1 -0
- data/spec/feature/abbyy/orders_create_spec.rb +2 -2
- data/spec/feature/abbyy/orders_find_spec.rb +0 -1
- data/spec/unit/abbyy/cloud/models/full_order_spec.rb +0 -24
- data/spec/unit/abbyy/cloud/models/translation_link_spec.rb +0 -9
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22ccdf6c83c1c16d2d88e4e2c1db6e92350f855b
|
4
|
+
data.tar.gz: 5487edca014bb2b01839ad1c018c417b9ba90d6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73afb10ed62e83e82275e2ed91b4dea2c4a84e3624b5b6352ed163f63bc34db49c0acdb3e824a8394232c8a9773e26628b1c8f43bd14e54a2def0edda5415822
|
7
|
+
data.tar.gz: c3238c14723df68f93233c9f99d03b7203a82a1b09f84f25e190dab8597a126799baa4dbd66dc03b4a82fe1aa4fdd9d3230f3534684ed68bbc6739bc3a7c93e8
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Master (to be released)
|
2
2
|
|
3
|
+
[Compare v0.0.7...HEAD](https://github.com/nepalez/abbyy-cloud/compare/v0.0.7...HEAD)
|
4
|
+
|
5
|
+
# [v0.0.7 2016-09-09](https://github.com/nepalez/abbyy-cloud/tree/v0.0.7)
|
6
|
+
|
7
|
+
### Bugs Fixed
|
8
|
+
|
9
|
+
* Order of loading files (nepalez)
|
10
|
+
|
11
|
+
[Compare v0.0.6...v0.0.7](https://github.com/nepalez/abbyy-cloud/compare/v0.0.6...v0.0.7)
|
12
|
+
|
13
|
+
# [v0.0.6 2016-09-09](https://github.com/nepalez/abbyy-cloud/tree/v0.0.6)
|
14
|
+
|
3
15
|
### Added
|
4
16
|
|
5
17
|
* Operation `files.upload` (nepalez)
|
@@ -7,7 +19,7 @@
|
|
7
19
|
* Operation `orders.create(options)` (nepalez)
|
8
20
|
* Operation `orders.find(id)` (nepalez)
|
9
21
|
|
10
|
-
[Compare v0.0.5...
|
22
|
+
[Compare v0.0.5...v0.0.6](https://github.com/nepalez/abbyy-cloud/compare/v0.0.5...v0.0.6)
|
11
23
|
|
12
24
|
# [v0.0.5 2016-08-23](https://github.com/nepalez/abbyy-cloud/tree/v0.0.5)
|
13
25
|
|
data/abbyy-cloud.gemspec
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
1
4
|
Gem::Specification.new do |gem|
|
2
5
|
gem.name = "abbyy-cloud"
|
3
|
-
gem.version = "0.0.
|
6
|
+
gem.version = "0.0.7"
|
4
7
|
gem.authors = ["Andrew Kozin"]
|
5
8
|
gem.email = ["andrew.kozin@gmail.com"]
|
6
9
|
gem.summary = "HTTP client to ABBYY Cloud API"
|
@@ -18,6 +21,7 @@ Gem::Specification.new do |gem|
|
|
18
21
|
gem.add_runtime_dependency "dry-struct", "~> 0.0.1"
|
19
22
|
gem.add_runtime_dependency "hashie", "~> 3.4"
|
20
23
|
gem.add_runtime_dependency "multipart_body", "~> 0.2"
|
24
|
+
gem.add_runtime_dependency "mime-types", "~> 3.1"
|
21
25
|
|
22
26
|
gem.add_development_dependency "bundler", "~> 1.12"
|
23
27
|
gem.add_development_dependency "rake", "~> 10.0"
|
data/lib/abbyy/cloud.rb
CHANGED
@@ -5,6 +5,7 @@ require "json"
|
|
5
5
|
require "net/http"
|
6
6
|
require "net/https"
|
7
7
|
require "multipart_body"
|
8
|
+
require "mime-types"
|
8
9
|
|
9
10
|
module ABBYY
|
10
11
|
class Cloud
|
@@ -14,7 +15,7 @@ module ABBYY
|
|
14
15
|
require_relative "cloud/settings"
|
15
16
|
|
16
17
|
%w(exceptions models operations namespaces).each do |dir|
|
17
|
-
path = File.expand_path("
|
18
|
+
path = File.expand_path("../cloud/#{dir}/**", __FILE__)
|
18
19
|
Dir[path].each { |file| require file }
|
19
20
|
end
|
20
21
|
|
@@ -11,7 +11,7 @@ require_relative "unit_type"
|
|
11
11
|
class ABBYY::Cloud
|
12
12
|
module Models
|
13
13
|
class FullOrder < Struct
|
14
|
-
attribute :amount, Types::Coercible::Float
|
14
|
+
attribute :amount, Types::Coercible::Float.optional
|
15
15
|
attribute :approval_required, Types::Form::Bool
|
16
16
|
attribute :created, Types::Form::Time
|
17
17
|
attribute :currency, Types::Currency
|
@@ -26,18 +26,18 @@ class ABBYY::Cloud
|
|
26
26
|
attribute :is_manual_estimation, Types::Form::Bool
|
27
27
|
attribute :label, Types::Label.optional
|
28
28
|
attribute :number, Types::Coercible::Int
|
29
|
-
attribute :payment_provider, Types::Strict::String
|
29
|
+
attribute :payment_provider, Types::Strict::String.optional
|
30
30
|
attribute :payment_type, Types::PaymentType
|
31
31
|
attribute :progress, Types::Coercible::Int
|
32
32
|
attribute :started, Types::Form::Time.optional
|
33
|
-
attribute :statistics, Types::OrderStatistics
|
33
|
+
attribute :statistics, Types::OrderStatistics.optional
|
34
34
|
attribute :status, Types::Status
|
35
35
|
attribute :to, Types::FilledArray.member(Types::Locale)
|
36
36
|
attribute :translations, Types::Array.member(Types::TranslationLink)
|
37
37
|
attribute :type, Types::TranslationType
|
38
|
-
attribute :unit_count, Types::Coercible::Int
|
39
|
-
attribute :unit_type, Types::UnitType
|
40
|
-
attribute :units_count, Types::Hash
|
38
|
+
attribute :unit_count, Types::Coercible::Int.optional
|
39
|
+
attribute :unit_type, Types::UnitType.optional
|
40
|
+
attribute :units_count, Types::Hash.optional
|
41
41
|
end
|
42
42
|
|
43
43
|
# Registers type Types::FullOrder
|
@@ -4,10 +4,10 @@ require_relative "file_link"
|
|
4
4
|
class ABBYY::Cloud
|
5
5
|
module Models
|
6
6
|
class TranslationLink < Struct
|
7
|
-
attribute :delivered,
|
8
|
-
attribute :started,
|
9
|
-
attribute :progress,
|
10
|
-
attribute :status,
|
7
|
+
attribute :delivered, Types::Form::Time.optional
|
8
|
+
attribute :started, Types::Form::Time.optional
|
9
|
+
attribute :progress, Types::Hash
|
10
|
+
attribute :status, Types::Status
|
11
11
|
attribute :source_file, Types::FileLink
|
12
12
|
attribute :target_file, Types::FileLink
|
13
13
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative "file"
|
2
|
+
|
1
3
|
# Base class for specific operations
|
2
4
|
# It validates request and response using corresponding structs
|
3
5
|
#
|
@@ -79,11 +81,10 @@ class ABBYY::Cloud
|
|
79
81
|
|
80
82
|
private
|
81
83
|
|
82
|
-
def prepare_multipart(
|
84
|
+
def prepare_multipart(data, content_type: "text/plain", **)
|
83
85
|
name = SecureRandom.hex(10)
|
84
|
-
|
85
|
-
|
86
|
-
part = Part.new(name, data || file, path || "file")
|
86
|
+
file = File.new(data, content_type: content_type)
|
87
|
+
part = Part.new(name, file.read, file.path)
|
87
88
|
part.content_type = content_type
|
88
89
|
MultipartBody.new [part]
|
89
90
|
end
|
@@ -91,7 +92,7 @@ class ABBYY::Cloud
|
|
91
92
|
def prepare_request_body(multipart, data)
|
92
93
|
case request_type
|
93
94
|
when :json then JSON(request_body[data].to_h)
|
94
|
-
when :file then multipart.
|
95
|
+
when :file then [nil, nil, multipart, nil].join("\r\n")
|
95
96
|
else data
|
96
97
|
end
|
97
98
|
rescue => error
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Emulates a source to ensure it has methods [#read] and [#path]
|
2
|
+
class ABBYY::Cloud
|
3
|
+
module Operations
|
4
|
+
class File
|
5
|
+
extend Dry::Initializer::Mixin
|
6
|
+
param :source
|
7
|
+
option :content_type
|
8
|
+
|
9
|
+
def read
|
10
|
+
source.respond_to?(:read) ? source.read : source
|
11
|
+
end
|
12
|
+
|
13
|
+
def path
|
14
|
+
@path ||= \
|
15
|
+
if source.respond_to?(:path)
|
16
|
+
Pathname.new(source.path).basename
|
17
|
+
else
|
18
|
+
"#{SecureRandom.hex(4)}.#{ext}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def ext
|
25
|
+
MIME::Types[content_type].first.preferred_extension
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -24,6 +24,7 @@ class ABBYY::Cloud
|
|
24
24
|
attribute :label, Types::Label.optional
|
25
25
|
attribute :to, Types::FilledArray.member(Types::Locale)
|
26
26
|
attribute :files, Types::FilledArray.member(Types::FileReference)
|
27
|
+
attribute :category, Types::Strict::String.optional
|
27
28
|
end
|
28
29
|
|
29
30
|
response_body Models::FullOrder
|
@@ -18,7 +18,8 @@ RSpec.describe "orders.create" do
|
|
18
18
|
currency: "RUB",
|
19
19
|
from: "ru",
|
20
20
|
to: ["de"],
|
21
|
-
files: [{ id: "foo", token: "bar" }]
|
21
|
+
files: [{ id: "foo", token: "bar" }],
|
22
|
+
category: "Games > Lego"
|
22
23
|
}
|
23
24
|
end
|
24
25
|
|
@@ -63,7 +64,6 @@ RSpec.describe "orders.create" do
|
|
63
64
|
payment_type: "External",
|
64
65
|
unit_type: "Words",
|
65
66
|
unit_count: 32,
|
66
|
-
units_count: 32,
|
67
67
|
currency: "RUB",
|
68
68
|
amount: 100.0,
|
69
69
|
deadline: "2019-01-23T10:00:00Z",
|
@@ -134,22 +134,6 @@ RSpec.describe ABBYY::Cloud::Models::FullOrder do
|
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
|
-
context "without unit_type:" do
|
138
|
-
before { data.delete :unit_type }
|
139
|
-
|
140
|
-
it "fails" do
|
141
|
-
expect { subject }.to raise_error(StandardError)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
context "without unit_count:" do
|
146
|
-
before { data.delete :unit_count }
|
147
|
-
|
148
|
-
it "fails" do
|
149
|
-
expect { subject }.to raise_error(StandardError)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
137
|
context "without currency:" do
|
154
138
|
before { data.delete :currency }
|
155
139
|
|
@@ -181,12 +165,4 @@ RSpec.describe ABBYY::Cloud::Models::FullOrder do
|
|
181
165
|
expect { subject }.to raise_error(StandardError)
|
182
166
|
end
|
183
167
|
end
|
184
|
-
|
185
|
-
context "without statistics:" do
|
186
|
-
before { data.delete :statistics }
|
187
|
-
|
188
|
-
it "fails" do
|
189
|
-
expect { subject }.to raise_error(StandardError)
|
190
|
-
end
|
191
|
-
end
|
192
168
|
end
|
@@ -23,7 +23,6 @@ RSpec.describe ABBYY::Cloud::Models::TranslationLink do
|
|
23
23
|
},
|
24
24
|
started: "2016-03-13T10:00:00Z",
|
25
25
|
delivered: "2019-03-14T11:00:00Z",
|
26
|
-
progress: 10,
|
27
26
|
status: "InProgress"
|
28
27
|
}
|
29
28
|
end
|
@@ -55,12 +54,4 @@ RSpec.describe ABBYY::Cloud::Models::TranslationLink do
|
|
55
54
|
expect { subject }.to raise_error(StandardError)
|
56
55
|
end
|
57
56
|
end
|
58
|
-
|
59
|
-
context "without progress:" do
|
60
|
-
before { data.delete :progress }
|
61
|
-
|
62
|
-
it "fails" do
|
63
|
-
expect { subject }.to raise_error(StandardError)
|
64
|
-
end
|
65
|
-
end
|
66
57
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abbyy-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-initializer
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mime-types
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.1'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.1'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,6 +233,7 @@ files:
|
|
219
233
|
- lib/abbyy/cloud/operations/base.rb
|
220
234
|
- lib/abbyy/cloud/operations/download_file.rb
|
221
235
|
- lib/abbyy/cloud/operations/engines.rb
|
236
|
+
- lib/abbyy/cloud/operations/file.rb
|
222
237
|
- lib/abbyy/cloud/operations/find_order.rb
|
223
238
|
- lib/abbyy/cloud/operations/prices.rb
|
224
239
|
- lib/abbyy/cloud/operations/submit_order.rb
|