mongo 2.1.0.beta → 2.1.0.rc0
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +2 -2
- data/lib/mongo.rb +2 -3
- data/lib/mongo/address.rb +7 -5
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/auth/ldap/conversation.rb +6 -2
- data/lib/mongo/auth/scram/conversation.rb +8 -2
- data/lib/mongo/auth/user/view.rb +21 -0
- data/lib/mongo/bulk_write.rb +155 -23
- data/lib/mongo/bulk_write/combineable.rb +51 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
- data/lib/mongo/bulk_write/result.rb +61 -8
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +117 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/client.rb +7 -3
- data/lib/mongo/cluster.rb +3 -3
- data/lib/mongo/cluster/topology/replica_set.rb +8 -6
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/collection.rb +75 -4
- data/lib/mongo/collection/view.rb +1 -2
- data/lib/mongo/collection/view/aggregation.rb +13 -8
- data/lib/mongo/collection/view/immutable.rb +6 -6
- data/lib/mongo/collection/view/iterable.rb +13 -4
- data/lib/mongo/collection/view/map_reduce.rb +22 -17
- data/lib/mongo/collection/view/readable.rb +121 -70
- data/lib/mongo/cursor.rb +5 -1
- data/lib/mongo/database.rb +3 -3
- data/lib/mongo/database/view.rb +1 -1
- data/lib/mongo/error.rb +7 -0
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
- data/lib/mongo/error/file_not_found.rb +37 -0
- data/lib/mongo/error/invalid_file.rb +2 -2
- data/lib/mongo/error/invalid_file_revision.rb +37 -0
- data/lib/mongo/error/invalid_uri.rb +5 -4
- data/lib/mongo/error/missing_file_chunk.rb +38 -0
- data/lib/mongo/error/operation_failure.rb +1 -1
- data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/grid/file.rb +12 -9
- data/lib/mongo/grid/file/chunk.rb +6 -6
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/fs_bucket.rb +441 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/index/view.rb +1 -1
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring.rb +1 -5
- data/lib/mongo/monitoring/command_log_subscriber.rb +35 -17
- data/lib/mongo/monitoring/event/command_succeeded.rb +20 -1
- data/lib/mongo/monitoring/publishable.rb +22 -12
- data/lib/mongo/operation.rb +3 -6
- data/lib/mongo/operation/commands.rb +24 -0
- data/lib/mongo/operation/{aggregate.rb → commands/aggregate.rb} +3 -41
- data/lib/mongo/operation/{aggregate → commands/aggregate}/result.rb +0 -0
- data/lib/mongo/operation/commands/collections_info.rb +66 -0
- data/lib/mongo/operation/{command.rb → commands/command.rb} +2 -18
- data/lib/mongo/operation/commands/indexes.rb +70 -0
- data/lib/mongo/operation/commands/list_collections.rb +54 -0
- data/lib/mongo/operation/commands/list_collections/result.rb +112 -0
- data/lib/mongo/operation/commands/list_indexes.rb +56 -0
- data/lib/mongo/operation/commands/list_indexes/result.rb +115 -0
- data/lib/mongo/operation/{map_reduce.rb → commands/map_reduce.rb} +3 -41
- data/lib/mongo/operation/{map_reduce → commands/map_reduce}/result.rb +0 -0
- data/lib/mongo/operation/{parallel_scan.rb → commands/parallel_scan.rb} +3 -23
- data/lib/mongo/operation/{parallel_scan → commands/parallel_scan}/result.rb +0 -0
- data/lib/mongo/operation/commands/user_query.rb +69 -0
- data/lib/mongo/operation/commands/users_info.rb +53 -0
- data/lib/mongo/operation/commands/users_info/result.rb +36 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/operation/read/query.rb +2 -21
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/specifiable.rb +24 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- data/lib/mongo/operation/write/bulk/bulkable.rb +82 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +74 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
- data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
- data/lib/mongo/operation/write/command/create_index.rb +0 -1
- data/lib/mongo/operation/write/command/create_user.rb +0 -1
- data/lib/mongo/operation/write/command/delete.rb +0 -1
- data/lib/mongo/operation/write/command/drop_index.rb +0 -1
- data/lib/mongo/operation/write/command/insert.rb +0 -1
- data/lib/mongo/operation/write/command/remove_user.rb +0 -1
- data/lib/mongo/operation/write/command/update.rb +0 -1
- data/lib/mongo/operation/write/command/update_user.rb +0 -1
- data/lib/mongo/operation/write/command/writable.rb +13 -18
- data/lib/mongo/operation/write/create_index.rb +4 -27
- data/lib/mongo/operation/write/create_user.rb +4 -30
- data/lib/mongo/operation/write/delete.rb +5 -28
- data/lib/mongo/operation/write/drop_index.rb +3 -3
- data/lib/mongo/operation/write/gle.rb +48 -0
- data/lib/mongo/operation/write/idable.rb +5 -0
- data/lib/mongo/operation/write/insert.rb +2 -24
- data/lib/mongo/operation/write/remove_user.rb +4 -27
- data/lib/mongo/operation/write/update.rb +4 -32
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/options/mapper.rb +4 -2
- data/lib/mongo/protocol/delete.rb +68 -3
- data/lib/mongo/protocol/get_more.rb +54 -2
- data/lib/mongo/protocol/insert.rb +59 -1
- data/lib/mongo/protocol/kill_cursors.rb +53 -4
- data/lib/mongo/protocol/message.rb +12 -12
- data/lib/mongo/protocol/query.rb +139 -65
- data/lib/mongo/protocol/reply.rb +69 -1
- data/lib/mongo/protocol/update.rb +70 -1
- data/lib/mongo/server/connection.rb +11 -3
- data/lib/mongo/server/description.rb +29 -0
- data/lib/mongo/server/description/features.rb +2 -1
- data/lib/mongo/server/monitor.rb +2 -2
- data/lib/mongo/server_selector.rb +14 -10
- data/lib/mongo/server_selector/selectable.rb +24 -22
- data/lib/mongo/socket.rb +6 -3
- data/lib/mongo/socket/tcp.rb +2 -2
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/uri.rb +243 -139
- data/lib/mongo/version.rb +1 -1
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +271 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
- data/spec/mongo/bulk_write_spec.rb +332 -166
- data/spec/mongo/client_spec.rb +25 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
- data/spec/mongo/collection/view/immutable_spec.rb +103 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +98 -3
- data/spec/mongo/collection/view/readable_spec.rb +17 -30
- data/spec/mongo/collection/view_spec.rb +233 -7
- data/spec/mongo/collection_spec.rb +360 -18
- data/spec/mongo/command_monitoring_spec.rb +51 -0
- data/spec/mongo/connection_string_spec.rb +137 -0
- data/spec/mongo/database_spec.rb +27 -11
- data/spec/mongo/grid/file/chunk_spec.rb +5 -5
- data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
- data/spec/mongo/grid/file_spec.rb +8 -8
- data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
- data/spec/mongo/grid/stream/read_spec.rb +275 -0
- data/spec/mongo/grid/stream/write_spec.rb +440 -0
- data/spec/mongo/grid/stream_spec.rb +48 -0
- data/spec/mongo/gridfs_spec.rb +50 -0
- data/spec/mongo/logger_spec.rb +0 -40
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
- data/spec/mongo/operation/{aggregate_spec.rb → commands/aggregate_spec.rb} +0 -42
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +0 -0
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +0 -18
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -1
- data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
- data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +1 -12
- data/spec/mongo/operation/write/insert_spec.rb +0 -11
- data/spec/mongo/protocol/kill_cursors_spec.rb +5 -3
- data/spec/mongo/server/description_spec.rb +42 -0
- data/spec/mongo/server/monitor_spec.rb +21 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +1 -0
- data/spec/mongo/server_selection_spec.rb +3 -3
- data/spec/mongo/server_selector/nearest_spec.rb +34 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +31 -30
- data/spec/mongo/server_selector/primary_spec.rb +14 -13
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +27 -26
- data/spec/mongo/server_selector/secondary_spec.rb +23 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +251 -39
- data/spec/spec_helper.rb +11 -4
- data/spec/support/authorization.rb +4 -5
- data/spec/support/command_monitoring.rb +365 -0
- data/spec/support/command_monitoring/bulkWrite.yml +73 -0
- data/spec/support/command_monitoring/command.yml +42 -0
- data/spec/support/command_monitoring/deleteMany.yml +55 -0
- data/spec/support/command_monitoring/deleteOne.yml +55 -0
- data/spec/support/command_monitoring/find.yml +219 -0
- data/spec/support/command_monitoring/insertMany.yml +81 -0
- data/spec/support/command_monitoring/insertOne.yml +51 -0
- data/spec/support/command_monitoring/updateMany.yml +67 -0
- data/spec/support/command_monitoring/updateOne.yml +95 -0
- data/spec/support/connection_string.rb +228 -0
- data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
- data/spec/support/connection_string_tests/valid-auth.yml +256 -0
- data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
- data/spec/support/connection_string_tests/valid-options.yml +30 -0
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
- data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
- data/spec/support/crud.rb +3 -1
- data/spec/support/crud/read.rb +14 -10
- data/spec/support/crud/write.rb +36 -9
- data/spec/support/gridfs.rb +637 -0
- data/spec/support/gridfs_tests/delete.yml +157 -0
- data/spec/support/gridfs_tests/download.yml +210 -0
- data/spec/support/gridfs_tests/download_by_name.yml +113 -0
- data/spec/support/gridfs_tests/upload.yml +158 -0
- data/spec/support/sdam/rs/equal_electionids.yml +1 -2
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
- data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
- data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
- data/spec/support/sdam/single/not_ok_response.yml +0 -1
- data/spec/support/server_discovery_and_monitoring.rb +3 -1
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +192 -0
- data/spec/support/shared/server_selector.rb +21 -12
- metadata +147 -57
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
- data/lib/mongo/bulk_write/deletable.rb +0 -57
- data/lib/mongo/bulk_write/insertable.rb +0 -49
- data/lib/mongo/bulk_write/replacable.rb +0 -58
- data/lib/mongo/bulk_write/updatable.rb +0 -69
- data/lib/mongo/grid/fs.rb +0 -146
- data/lib/mongo/operation/list_collections/result.rb +0 -114
- data/lib/mongo/operation/list_indexes/result.rb +0 -118
- data/lib/mongo/operation/read/collections_info.rb +0 -68
- data/lib/mongo/operation/read/indexes.rb +0 -69
- data/lib/mongo/operation/read/list_collections.rb +0 -76
- data/lib/mongo/operation/read/list_indexes.rb +0 -78
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
data/lib/mongo/cursor.rb
CHANGED
data/lib/mongo/database.rb
CHANGED
@@ -138,7 +138,7 @@ module Mongo
|
|
138
138
|
#
|
139
139
|
# @return [ Hash ] The result of the command execution.
|
140
140
|
def command(operation, opts = {})
|
141
|
-
preference = opts[:read] ? ServerSelector.get(opts[:read]
|
141
|
+
preference = opts[:read] ? ServerSelector.get(opts[:read].merge(options)) : read_preference
|
142
142
|
server = preference.select_server(cluster)
|
143
143
|
Operation::Command.new({
|
144
144
|
:selector => operation,
|
@@ -196,11 +196,11 @@ module Mongo
|
|
196
196
|
# @example Get the GridFS.
|
197
197
|
# database.fs
|
198
198
|
#
|
199
|
-
# @return [ Grid::
|
199
|
+
# @return [ Grid::FSBucket ] The GridFS for the database.
|
200
200
|
#
|
201
201
|
# @since 2.0.0
|
202
202
|
def fs(options = {})
|
203
|
-
Grid::
|
203
|
+
Grid::FSBucket.new(self, options)
|
204
204
|
end
|
205
205
|
|
206
206
|
# Get the user view for this database.
|
data/lib/mongo/database/view.rb
CHANGED
data/lib/mongo/error.rb
CHANGED
@@ -67,6 +67,9 @@ end
|
|
67
67
|
|
68
68
|
require 'mongo/error/parser'
|
69
69
|
require 'mongo/error/bulk_write_error'
|
70
|
+
require 'mongo/error/closed_stream'
|
71
|
+
require 'mongo/error/extra_file_chunk'
|
72
|
+
require 'mongo/error/file_not_found'
|
70
73
|
require 'mongo/error/operation_failure'
|
71
74
|
require 'mongo/error/invalid_bulk_operation'
|
72
75
|
require 'mongo/error/invalid_bulk_operation_type'
|
@@ -74,6 +77,7 @@ require 'mongo/error/invalid_collection_name'
|
|
74
77
|
require 'mongo/error/invalid_database_name'
|
75
78
|
require 'mongo/error/invalid_document'
|
76
79
|
require 'mongo/error/invalid_file'
|
80
|
+
require 'mongo/error/invalid_file_revision'
|
77
81
|
require 'mongo/error/invalid_nonce'
|
78
82
|
require 'mongo/error/invalid_replacement_document'
|
79
83
|
require 'mongo/error/invalid_server_preference'
|
@@ -87,4 +91,7 @@ require 'mongo/error/need_primary_server'
|
|
87
91
|
require 'mongo/error/no_server_available'
|
88
92
|
require 'mongo/error/socket_error'
|
89
93
|
require 'mongo/error/socket_timeout_error'
|
94
|
+
require 'mongo/error/unchangeable_collection_option'
|
95
|
+
require 'mongo/error/unexpected_chunk_length'
|
96
|
+
require 'mongo/error/missing_file_chunk'
|
90
97
|
require 'mongo/error/unsupported_features'
|
@@ -13,30 +13,21 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
module Mongo
|
16
|
-
|
16
|
+
class Error
|
17
17
|
|
18
|
-
#
|
18
|
+
# Raised if the GridFS::Stream object is closed and an operation is attempted.
|
19
19
|
#
|
20
|
-
# @since 2.
|
21
|
-
class
|
22
|
-
include BulkWritable
|
20
|
+
# @since 2.1.0
|
21
|
+
class ClosedStream < Error
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
def
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
def process(result, indexes)
|
35
|
-
combine_results(result, indexes)
|
36
|
-
end
|
37
|
-
|
38
|
-
def finalize
|
39
|
-
Result.new(@results).validate!
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::ClosedStream.new
|
27
|
+
#
|
28
|
+
# @since 2.1.0
|
29
|
+
def initialize
|
30
|
+
super("The stream is closed and cannot be written to or read from.")
|
40
31
|
end
|
41
32
|
end
|
42
33
|
end
|
@@ -13,35 +13,21 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
module Mongo
|
16
|
-
|
16
|
+
class Error
|
17
17
|
|
18
|
-
#
|
18
|
+
# Raised if an extra chunk is found.
|
19
19
|
#
|
20
|
-
# @since 2.
|
21
|
-
class
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
merge_consecutive_ops(@operations)
|
32
|
-
end
|
33
|
-
|
34
|
-
def process(result, indexes)
|
35
|
-
combine_results(result, indexes)
|
36
|
-
raise Error::BulkWriteError.new(@results) if stop?
|
37
|
-
end
|
38
|
-
|
39
|
-
def stop?
|
40
|
-
@results.keys.include?(Error::WRITE_ERRORS)
|
41
|
-
end
|
42
|
-
|
43
|
-
def finalize
|
44
|
-
Result.new(@results).validate!
|
20
|
+
# @since 2.1.0
|
21
|
+
class ExtraFileChunk < Error
|
22
|
+
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::ExtraFileChunk.new
|
27
|
+
#
|
28
|
+
# @since 2.1.0
|
29
|
+
def initialize
|
30
|
+
super("Extra file chunk found.")
|
45
31
|
end
|
46
32
|
end
|
47
33
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if a file is deleted from a GridFS but it is not found.
|
19
|
+
#
|
20
|
+
# @since 2.1.0
|
21
|
+
class FileNotFound < Error
|
22
|
+
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::FileNotFound.new(id, :id)
|
27
|
+
#
|
28
|
+
# @param [ Object ] value The property value used to find the file.
|
29
|
+
# @param [ String, Symbol ] property The name of the property used to find the file.
|
30
|
+
#
|
31
|
+
# @since 2.1.0
|
32
|
+
def initialize(value, property)
|
33
|
+
super("File with #{property} '#{value}' not found.")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -21,9 +21,9 @@ module Mongo
|
|
21
21
|
# @since 2.0.0
|
22
22
|
class InvalidFile < Error
|
23
23
|
|
24
|
-
# Create the
|
24
|
+
# Create the new exception.
|
25
25
|
#
|
26
|
-
# @example Create the
|
26
|
+
# @example Create the new exception.
|
27
27
|
# Mongo::Error::InvalidFile.new(file_md5, server_md5)
|
28
28
|
#
|
29
29
|
# @param [ String ] client_md5 The client side file md5.
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the requested file revision is not found.
|
19
|
+
#
|
20
|
+
# @since 2.1.0
|
21
|
+
class InvalidFileRevision < Error
|
22
|
+
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::InvalidFileRevision.new('some-file.txt', 3)
|
27
|
+
#
|
28
|
+
# @param [ String ] filename The name of the file.
|
29
|
+
# @param [ Integer ] revision The requested revision.
|
30
|
+
#
|
31
|
+
# @since 2.1.0
|
32
|
+
def initialize(filename, revision)
|
33
|
+
super("No revision #{revision} found for file '#{filename}'.")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -27,10 +27,11 @@ module Mongo
|
|
27
27
|
# Mongo::Error::InvalidURI.new(uri)
|
28
28
|
#
|
29
29
|
# @since 2.0.0
|
30
|
-
def initialize(uri)
|
31
|
-
super("
|
32
|
-
"
|
33
|
-
"
|
30
|
+
def initialize(uri, details)
|
31
|
+
super("Bad URI: #{uri}\n" +
|
32
|
+
"#{details}\n" +
|
33
|
+
"MongoDB URI must be in the following format: #{Mongo::URI::FORMAT}\n" +
|
34
|
+
"Please see the following URL for more information: #{Mongo::URI::HELP}\n")
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the next chunk when reading from a GridFSBucket does not have the
|
19
|
+
# expected sequence number (n).
|
20
|
+
#
|
21
|
+
# @since 2.1.0
|
22
|
+
class MissingFileChunk < Error
|
23
|
+
|
24
|
+
# Create the new exception.
|
25
|
+
#
|
26
|
+
# @example Create the new exception.
|
27
|
+
# Mongo::Error::MissingFileChunk.new(expected_n, chunk)
|
28
|
+
#
|
29
|
+
# @param [ Integer ] expected_n The expected index value.
|
30
|
+
# @param [ Grid::File::Chunk ] chunk The chunk read from GridFS.
|
31
|
+
#
|
32
|
+
# @since 2.1.0
|
33
|
+
def initialize(expected_n, chunk)
|
34
|
+
super("Unexpected chunk in sequence. Expected next chunk to have index #{expected_n} but it has index #{chunk.n}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if a new collection is created from an existing one and options other than the
|
19
|
+
# changeable ones are provided.
|
20
|
+
#
|
21
|
+
# @since 2.1.0
|
22
|
+
class UnchangeableCollectionOption < Error
|
23
|
+
|
24
|
+
# Create the new exception.
|
25
|
+
#
|
26
|
+
# @example Create the new exception.
|
27
|
+
# Mongo::Error::UnchangeableCollectionOption.new(option)
|
28
|
+
#
|
29
|
+
# @param [ String, Symbol ] option The option that was attempted to be changed.
|
30
|
+
#
|
31
|
+
# @since 2.1.0
|
32
|
+
def initialize(option)
|
33
|
+
super("The option #{option} cannot be set on a new collection instance." +
|
34
|
+
" The options that can be updated are #{Collection::CHANGEABLE_OPTIONS}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the next chunk when reading from a GridFSBucket does not have the
|
19
|
+
# expected length.
|
20
|
+
#
|
21
|
+
# @since 2.1.0
|
22
|
+
class UnexpectedChunkLength < Error
|
23
|
+
|
24
|
+
# Create the new exception.
|
25
|
+
#
|
26
|
+
# @example Create the new exception.
|
27
|
+
# Mongo::Error::UnexpectedChunkLength.new(expected_len, chunk)
|
28
|
+
#
|
29
|
+
# @param [ Integer ] expected_len The expected length.
|
30
|
+
# @param [ Grid::File::Chunk ] chunk The chunk read from GridFS.
|
31
|
+
#
|
32
|
+
# @since 2.1.0
|
33
|
+
def initialize(expected_len, chunk)
|
34
|
+
super("Unexpected chunk length. Chunk has length #{chunk.data.data.size} but expected length " +
|
35
|
+
"#{expected_len} or for it to be the last chunk in the sequence.")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/mongo/grid.rb
CHANGED
data/lib/mongo/grid/file.rb
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require 'mongo/grid/file/chunk'
|
16
|
-
require 'mongo/grid/file/
|
16
|
+
require 'mongo/grid/file/info'
|
17
17
|
|
18
18
|
module Mongo
|
19
19
|
module Grid
|
@@ -24,8 +24,8 @@ module Mongo
|
|
24
24
|
class File
|
25
25
|
extend Forwardable
|
26
26
|
|
27
|
-
# Delegate to
|
28
|
-
def_delegators :
|
27
|
+
# Delegate to file info for convenience.
|
28
|
+
def_delegators :info, :chunk_size, :content_type, :filename, :id, :md5, :upload_date
|
29
29
|
|
30
30
|
# @return [ Array<Chunk> ] chunks The file chunks.
|
31
31
|
attr_reader :chunks
|
@@ -33,8 +33,8 @@ module Mongo
|
|
33
33
|
# @return [ IO ] data The raw data for the file.
|
34
34
|
attr_reader :data
|
35
35
|
|
36
|
-
# @return [
|
37
|
-
attr_reader :
|
36
|
+
# @return [ File::Info ] info The file information.
|
37
|
+
attr_reader :info
|
38
38
|
|
39
39
|
# Check equality of files.
|
40
40
|
#
|
@@ -48,7 +48,7 @@ module Mongo
|
|
48
48
|
# @since 2.0.0
|
49
49
|
def ==(other)
|
50
50
|
return false unless other.is_a?(File)
|
51
|
-
chunks == other.chunks && data == other.data &&
|
51
|
+
chunks == other.chunks && data == other.data && info == other.info
|
52
52
|
end
|
53
53
|
|
54
54
|
# Initialize the file.
|
@@ -58,17 +58,20 @@ module Mongo
|
|
58
58
|
#
|
59
59
|
# @param [ IO, Array<BSON::Document> ] data The file or IO object or
|
60
60
|
# chunks.
|
61
|
-
# @param [ BSON::Document, Hash ] options The
|
61
|
+
# @param [ BSON::Document, Hash ] options The info options.
|
62
62
|
#
|
63
63
|
# @option options [ String ] :filename Required name of the file.
|
64
64
|
# @option options [ String ] :content_type The content type of the file.
|
65
|
+
# Deprecated, please use the metadata document instead.
|
65
66
|
# @option options [ String ] :metadata Optional file metadata.
|
66
67
|
# @option options [ Integer ] :chunk_size Override the default chunk
|
67
68
|
# size.
|
69
|
+
# @option opts [ Array<String> ] :aliases A list of aliases.
|
70
|
+
# Deprecated, please use the metadata document instead.
|
68
71
|
#
|
69
72
|
# @since 2.0.0
|
70
73
|
def initialize(data, options = {})
|
71
|
-
@
|
74
|
+
@info = Info.new(options.merge(:length => data.length))
|
72
75
|
initialize_chunks!(data)
|
73
76
|
end
|
74
77
|
|
@@ -97,7 +100,7 @@ module Mongo
|
|
97
100
|
@chunks = chks
|
98
101
|
@data = Chunk.assemble(chks)
|
99
102
|
else
|
100
|
-
@chunks = Chunk.split(value,
|
103
|
+
@chunks = Chunk.split(value, info)
|
101
104
|
@data = value
|
102
105
|
end
|
103
106
|
end
|