mongo 2.0.6 → 2.1.0
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 +5 -2
- data/lib/mongo/address/ipv4.rb +6 -1
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/address.rb +18 -10
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +7 -3
- data/lib/mongo/auth/scram/conversation.rb +9 -3
- data/lib/mongo/auth/user/view.rb +23 -2
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- 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 +191 -0
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +132 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/bulk_write.rb +159 -23
- data/lib/mongo/client.rb +52 -16
- data/lib/mongo/cluster/topology/replica_set.rb +27 -9
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/cluster.rb +42 -7
- data/lib/mongo/collection/view/aggregation.rb +48 -9
- data/lib/mongo/collection/view/immutable.rb +6 -6
- data/lib/mongo/collection/view/iterable.rb +18 -4
- data/lib/mongo/collection/view/map_reduce.rb +58 -17
- data/lib/mongo/collection/view/readable.rb +173 -42
- data/lib/mongo/collection/view/writable.rb +37 -23
- data/lib/mongo/collection/view.rb +2 -2
- data/lib/mongo/collection.rb +370 -33
- data/lib/mongo/cursor.rb +15 -3
- data/lib/mongo/database/view.rb +5 -4
- data/lib/mongo/database.rb +14 -4
- data/lib/mongo/dbref.rb +113 -0
- data/lib/mongo/error/closed_stream.rb +34 -0
- data/lib/mongo/error/extra_file_chunk.rb +34 -0
- data/lib/mongo/error/{invalid_uri_option.rb → file_not_found.rb} +11 -12
- 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/parser.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/error.rb +13 -2
- data/lib/mongo/event/description_changed.rb +1 -1
- data/lib/mongo/grid/file/chunk.rb +6 -6
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/file.rb +13 -10
- data/lib/mongo/grid/fs_bucket.rb +448 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/index/view.rb +3 -3
- data/lib/mongo/index.rb +5 -0
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring/command_log_subscriber.rb +112 -0
- data/lib/mongo/monitoring/event/command_failed.rb +96 -0
- data/lib/mongo/monitoring/event/command_started.rb +89 -0
- data/lib/mongo/monitoring/event/command_succeeded.rb +118 -0
- data/lib/mongo/monitoring/event/secure.rb +58 -0
- data/lib/mongo/monitoring/event.rb +18 -0
- data/lib/mongo/monitoring/publishable.rb +106 -0
- data/lib/mongo/monitoring.rb +195 -0
- data/lib/mongo/operation/{aggregate.rb → commands/aggregate.rb} +3 -41
- data/lib/mongo/operation/commands/collections_info/result.rb +39 -0
- data/lib/mongo/operation/commands/collections_info.rb +68 -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/result.rb +112 -0
- data/lib/mongo/operation/commands/list_collections.rb +54 -0
- data/lib/mongo/operation/commands/list_indexes/result.rb +116 -0
- data/lib/mongo/operation/commands/list_indexes.rb +56 -0
- data/lib/mongo/operation/{map_reduce → commands/map_reduce}/result.rb +1 -1
- data/lib/mongo/operation/{map_reduce.rb → commands/map_reduce.rb} +3 -41
- data/lib/mongo/operation/commands/parallel_scan/result.rb +72 -0
- data/lib/mongo/operation/commands/parallel_scan.rb +56 -0
- data/lib/mongo/operation/commands/user_query.rb +69 -0
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → operation/commands/users_info/result.rb} +18 -30
- data/lib/mongo/operation/commands/users_info.rb +53 -0
- data/lib/mongo/operation/commands.rb +24 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → operation/read/query/result.rb} +20 -26
- data/lib/mongo/operation/read/query.rb +4 -21
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/result.rb +13 -1
- data/lib/mongo/operation/specifiable.rb +42 -0
- data/lib/mongo/operation/write/bulk/bulkable.rb +82 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +74 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -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/result.rb +174 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- 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 +6 -29
- 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 +13 -36
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation.rb +32 -4
- data/lib/mongo/options/mapper.rb +4 -2
- data/lib/mongo/options/redacted.rb +156 -0
- data/lib/mongo/options.rb +1 -0
- data/lib/mongo/protocol/delete.rb +75 -15
- data/lib/mongo/protocol/get_more.rb +65 -13
- data/lib/mongo/protocol/insert.rb +85 -13
- data/lib/mongo/protocol/kill_cursors.rb +59 -14
- data/lib/mongo/protocol/message.rb +12 -12
- data/lib/mongo/protocol/query.rb +163 -37
- data/lib/mongo/protocol/reply.rb +103 -0
- data/lib/mongo/protocol/serializers.rb +1 -1
- data/lib/mongo/protocol/update.rb +82 -14
- data/lib/mongo/retryable.rb +83 -0
- data/lib/mongo/server/connectable.rb +21 -25
- data/lib/mongo/server/connection.rb +75 -4
- data/lib/mongo/server/connection_pool/queue.rb +15 -0
- data/lib/mongo/server/connection_pool.rb +12 -0
- data/lib/mongo/server/description/features.rb +2 -1
- data/lib/mongo/server/description.rb +52 -1
- data/lib/mongo/server/monitor/connection.rb +26 -2
- data/lib/mongo/server/monitor.rb +19 -3
- data/lib/mongo/server.rb +39 -5
- data/lib/mongo/server_selector/selectable.rb +40 -31
- data/lib/mongo/server_selector.rb +19 -10
- data/lib/mongo/socket/ssl.rb +28 -16
- data/lib/mongo/socket/tcp.rb +3 -3
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/socket.rb +11 -4
- data/lib/mongo/uri.rb +248 -137
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo.rb +5 -3
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/cr_spec.rb +9 -1
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/ldap_spec.rb +9 -1
- data/spec/mongo/auth/scram_spec.rb +9 -1
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/auth/x509_spec.rb +9 -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 +428 -0
- data/spec/mongo/client_spec.rb +167 -17
- data/spec/mongo/cluster/topology/replica_set_spec.rb +18 -9
- data/spec/mongo/cluster/topology/sharded_spec.rb +11 -3
- data/spec/mongo/cluster/topology/single_spec.rb +12 -4
- data/spec/mongo/cluster_spec.rb +55 -10
- data/spec/mongo/collection/view/aggregation_spec.rb +188 -1
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/immutable_spec.rb +103 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +99 -4
- data/spec/mongo/collection/view/readable_spec.rb +238 -6
- data/spec/mongo/collection/view/writable_spec.rb +4 -4
- data/spec/mongo/collection/view_spec.rb +459 -71
- data/spec/mongo/collection_spec.rb +1291 -9
- data/spec/mongo/command_monitoring_spec.rb +51 -0
- data/spec/mongo/connection_string_spec.rb +115 -0
- data/spec/mongo/crud_spec.rb +2 -2
- data/spec/mongo/cursor_spec.rb +3 -3
- data/spec/mongo/database_spec.rb +47 -11
- data/spec/mongo/dbref_spec.rb +149 -0
- 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/monitoring/event/command_started_spec.rb +26 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
- data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
- data/spec/mongo/monitoring_spec.rb +168 -0
- data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +0 -18
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
- data/spec/mongo/operation/read/get_more_spec.rb +0 -16
- data/spec/mongo/operation/read/query_spec.rb +19 -16
- 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} +18 -29
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +3 -14
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +8 -19
- data/spec/mongo/operation/write/command/delete_spec.rb +0 -16
- data/spec/mongo/operation/write/command/insert_spec.rb +0 -16
- data/spec/mongo/operation/write/command/update_spec.rb +0 -16
- data/spec/mongo/operation/write/delete_spec.rb +4 -4
- data/spec/mongo/operation/write/insert_spec.rb +2 -13
- data/spec/mongo/operation/write/update_spec.rb +7 -7
- data/spec/mongo/options/redacted_spec.rb +350 -0
- data/spec/mongo/protocol/kill_cursors_spec.rb +5 -3
- data/spec/mongo/protocol/query_spec.rb +15 -30
- data/spec/mongo/retryable_spec.rb +147 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
- data/spec/mongo/server/connection_pool_spec.rb +50 -6
- data/spec/mongo/server/connection_spec.rb +49 -4
- data/spec/mongo/server/description_spec.rb +49 -3
- data/spec/mongo/server/monitor_spec.rb +51 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +32 -59
- data/spec/mongo/server_selection_rtt_spec.rb +37 -57
- data/spec/mongo/server_selection_spec.rb +19 -9
- data/spec/mongo/server_selector/nearest_spec.rb +35 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
- data/spec/mongo/server_selector/primary_spec.rb +21 -14
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
- data/spec/mongo/server_selector/secondary_spec.rb +24 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/server_spec.rb +94 -8
- data/spec/mongo/socket/ssl_spec.rb +123 -13
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +295 -67
- data/spec/spec_helper.rb +40 -24
- data/spec/support/authorization.rb +23 -9
- data/spec/support/certificates/client.pem +4 -4
- 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/command_monitoring.rb +365 -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/read.rb +22 -19
- data/spec/support/crud/write.rb +58 -27
- data/spec/support/crud.rb +10 -2
- 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/matchers.rb +1 -1
- data/spec/support/sdam/rs/equal_electionids.yml +44 -0
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +95 -0
- data/spec/support/sdam/rs/null_election_id.yml +144 -0
- data/spec/support/sdam/rs/primary_disconnect_electionid.yml +124 -0
- 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/sharded/mongos_disconnect.yml +104 -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 +22 -3
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +218 -22
- data/spec/support/shared/server_selector.rb +80 -14
- data.tar.gz.sig +0 -0
- metadata +188 -59
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -196
- data/lib/mongo/bulk_write/deletable.rb +0 -56
- data/lib/mongo/bulk_write/insertable.rb +0 -48
- data/lib/mongo/bulk_write/replacable.rb +0 -57
- data/lib/mongo/bulk_write/updatable.rb +0 -68
- data/lib/mongo/grid/fs.rb +0 -149
- 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/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -162
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/bulk/bulk_write_spec.rb +0 -262
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
- data/spec/mongo/operation/aggregate_spec.rb +0 -127
- /data/lib/mongo/operation/{aggregate → commands/aggregate}/result.rb +0 -0
@@ -16,10 +16,10 @@ module Mongo
|
|
16
16
|
module Grid
|
17
17
|
class File
|
18
18
|
|
19
|
-
# Encapsulates behaviour around GridFS file
|
19
|
+
# Encapsulates behaviour around GridFS files collection file document.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
-
class
|
22
|
+
class Info
|
23
23
|
|
24
24
|
# Name of the files collection.
|
25
25
|
#
|
@@ -35,8 +35,10 @@ module Mongo
|
|
35
35
|
:filename => :filename,
|
36
36
|
:_id => :_id,
|
37
37
|
:md5 => :md5,
|
38
|
+
:length => :length,
|
38
39
|
:metadata => :metadata,
|
39
|
-
:upload_date => :uploadDate
|
40
|
+
:upload_date => :uploadDate,
|
41
|
+
:aliases => :aliases
|
40
42
|
}.freeze
|
41
43
|
|
42
44
|
# Default content type for stored files.
|
@@ -44,13 +46,13 @@ module Mongo
|
|
44
46
|
# @since 2.0.0
|
45
47
|
DEFAULT_CONTENT_TYPE = 'binary/octet-stream'.freeze
|
46
48
|
|
47
|
-
# @return [ BSON::Document ] document The
|
49
|
+
# @return [ BSON::Document ] document The files collection document.
|
48
50
|
attr_reader :document
|
49
51
|
|
50
|
-
# Is this
|
52
|
+
# Is this file information document equal to another?
|
51
53
|
#
|
52
|
-
# @example Check
|
53
|
-
#
|
54
|
+
# @example Check file information document equality.
|
55
|
+
# file_info == other
|
54
56
|
#
|
55
57
|
# @param [ Object ] other The object to check against.
|
56
58
|
#
|
@@ -58,14 +60,14 @@ module Mongo
|
|
58
60
|
#
|
59
61
|
# @since 2.0.0
|
60
62
|
def ==(other)
|
61
|
-
return false unless other.is_a?(
|
63
|
+
return false unless other.is_a?(Info)
|
62
64
|
document == other.document
|
63
65
|
end
|
64
66
|
|
65
|
-
# Get the BSON type for a
|
67
|
+
# Get the BSON type for a files information document.
|
66
68
|
#
|
67
69
|
# @example Get the BSON type.
|
68
|
-
#
|
70
|
+
# file_info.bson_type
|
69
71
|
#
|
70
72
|
# @return [ Integer ] The BSON type.
|
71
73
|
#
|
@@ -74,10 +76,10 @@ module Mongo
|
|
74
76
|
BSON::Hash::BSON_TYPE
|
75
77
|
end
|
76
78
|
|
77
|
-
# Get the
|
79
|
+
# Get the file chunk size.
|
78
80
|
#
|
79
81
|
# @example Get the chunk size.
|
80
|
-
#
|
82
|
+
# file_info.chunk_size
|
81
83
|
#
|
82
84
|
# @return [ Integer ] The chunksize in bytes.
|
83
85
|
#
|
@@ -86,10 +88,10 @@ module Mongo
|
|
86
88
|
document[:chunkSize]
|
87
89
|
end
|
88
90
|
|
89
|
-
# Get the
|
91
|
+
# Get the file information content type.
|
90
92
|
#
|
91
93
|
# @example Get the content type.
|
92
|
-
#
|
94
|
+
# file_info.content_type
|
93
95
|
#
|
94
96
|
# @return [ String ] The content type.
|
95
97
|
#
|
@@ -98,32 +100,32 @@ module Mongo
|
|
98
100
|
document[:contentType]
|
99
101
|
end
|
100
102
|
|
101
|
-
# Get the
|
103
|
+
# Get the filename from the file information.
|
102
104
|
#
|
103
105
|
# @example Get the filename.
|
104
|
-
#
|
106
|
+
# file_info.filename
|
105
107
|
#
|
106
108
|
# @return [ String ] The filename.
|
107
109
|
def filename
|
108
110
|
document[:filename]
|
109
111
|
end
|
110
112
|
|
111
|
-
# Get the
|
113
|
+
# Get the file id from the file information.
|
112
114
|
#
|
113
|
-
# @example Get the
|
114
|
-
#
|
115
|
+
# @example Get the file id.
|
116
|
+
# file_info.id
|
115
117
|
#
|
116
|
-
# @return [ BSON::ObjectId ] The
|
118
|
+
# @return [ BSON::ObjectId ] The file id.
|
117
119
|
#
|
118
120
|
# @since 2.0.0
|
119
121
|
def id
|
120
122
|
document[:_id]
|
121
123
|
end
|
122
124
|
|
123
|
-
# Create the new
|
125
|
+
# Create the new file information document.
|
124
126
|
#
|
125
|
-
# @example Create the new
|
126
|
-
#
|
127
|
+
# @example Create the new file information document.
|
128
|
+
# Info.new(:filename => 'test.txt')
|
127
129
|
#
|
128
130
|
# @param [ BSON::Document ] document The document to create from.
|
129
131
|
#
|
@@ -135,23 +137,23 @@ module Mongo
|
|
135
137
|
|
136
138
|
# Get a readable inspection for the object.
|
137
139
|
#
|
138
|
-
# @example Inspect the
|
139
|
-
#
|
140
|
+
# @example Inspect the file information.
|
141
|
+
# file_info.inspect
|
140
142
|
#
|
141
143
|
# @return [ String ] The nice inspection.
|
142
144
|
#
|
143
145
|
# @since 2.0.0
|
144
146
|
def inspect
|
145
|
-
"#<Mongo::Grid::File::
|
147
|
+
"#<Mongo::Grid::File::Info:0x#{object_id} chunk_size=#{chunk_size} " +
|
146
148
|
"filename=#{filename} content_type=#{content_type} id=#{id} md5=#{md5}>"
|
147
149
|
end
|
148
150
|
|
149
151
|
# Get the length of the document in bytes.
|
150
152
|
#
|
151
|
-
# @example Get the length
|
152
|
-
#
|
153
|
+
# @example Get the file length from the file information document.
|
154
|
+
# file_info.length
|
153
155
|
#
|
154
|
-
# @return [ Integer ] The length.
|
156
|
+
# @return [ Integer ] The file length.
|
155
157
|
#
|
156
158
|
# @since 2.0.0
|
157
159
|
def length
|
@@ -159,12 +161,12 @@ module Mongo
|
|
159
161
|
end
|
160
162
|
alias :size :length
|
161
163
|
|
162
|
-
# Get the additional metadata.
|
164
|
+
# Get the additional metadata from the file information document.
|
163
165
|
#
|
164
166
|
# @example Get additional metadata.
|
165
|
-
#
|
167
|
+
# file_info.metadata
|
166
168
|
#
|
167
|
-
# @return [ String ] The additional metadata.
|
169
|
+
# @return [ String ] The additional metadata from file information document.
|
168
170
|
#
|
169
171
|
# @since 2.0.0
|
170
172
|
def metadata
|
@@ -174,7 +176,7 @@ module Mongo
|
|
174
176
|
# Get the md5 hash.
|
175
177
|
#
|
176
178
|
# @example Get the md5 hash.
|
177
|
-
#
|
179
|
+
# file_info.md5
|
178
180
|
#
|
179
181
|
# @return [ String ] The md5 hash as a string.
|
180
182
|
#
|
@@ -183,13 +185,13 @@ module Mongo
|
|
183
185
|
document[:md5] || @client_md5
|
184
186
|
end
|
185
187
|
|
186
|
-
#
|
188
|
+
# Convert the file information document to BSON for storage.
|
187
189
|
#
|
188
|
-
# @note If no md5 exists in the
|
189
|
-
# and is not a new file) then we digest the md5 and set it.
|
190
|
+
# @note If no md5 exists in the file information document (it was loaded
|
191
|
+
# from the server and is not a new file) then we digest the md5 and set it.
|
190
192
|
#
|
191
|
-
# @example Convert the
|
192
|
-
#
|
193
|
+
# @example Convert the file information document to BSON.
|
194
|
+
# file_info.to_bson
|
193
195
|
#
|
194
196
|
# @param [ String ] encoded The encoded data to append to.
|
195
197
|
#
|
@@ -204,7 +206,7 @@ module Mongo
|
|
204
206
|
# Get the upload date.
|
205
207
|
#
|
206
208
|
# @example Get the upload date.
|
207
|
-
#
|
209
|
+
# file_info.upload_date
|
208
210
|
#
|
209
211
|
# @return [ Time ] The upload date.
|
210
212
|
#
|
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,17 +24,17 @@ 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
|
32
32
|
|
33
|
-
# @return [ IO ] data The raw
|
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
|