aws-sdk 1.32.0 → 3.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 +5 -5
- data/CHANGELOG.md +100 -0
- data/LICENSE.txt +199 -9
- data/VERSION +1 -0
- data/lib/aws-sdk.rb +2 -14
- metadata +22 -591
- data/.yardopts +0 -7
- data/README.md +0 -291
- data/bin/aws-rb +0 -169
- data/ca-bundle.crt +0 -3554
- data/endpoints.json +0 -1506
- data/lib/aws.rb +0 -14
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +0 -869
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +0 -358
- data/lib/aws/api_config/CloudFront-2013-05-12.yml +0 -2448
- data/lib/aws/api_config/CloudFront-2013-08-26.yml +0 -2599
- data/lib/aws/api_config/CloudFront-2013-09-27.yml +0 -2765
- data/lib/aws/api_config/CloudFront-2013-11-11.yml +0 -2886
- data/lib/aws/api_config/CloudSearch-2011-02-01.yml +0 -681
- data/lib/aws/api_config/CloudTrail-2013-11-01.yml +0 -159
- data/lib/aws/api_config/CloudWatch-2010-08-01.yml +0 -433
- data/lib/aws/api_config/DataPipeline-2012-10-29.yml +0 -422
- data/lib/aws/api_config/DirectConnect-2012-10-25.yml +0 -735
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +0 -1168
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +0 -2005
- data/lib/aws/api_config/EC2-2013-08-15.yml +0 -4708
- data/lib/aws/api_config/EC2-2013-10-01.yml +0 -4726
- data/lib/aws/api_config/EC2-2013-10-15.yml +0 -4726
- data/lib/aws/api_config/ELB-2012-06-01.yml +0 -632
- data/lib/aws/api_config/EMR-2009-03-31.yml +0 -953
- data/lib/aws/api_config/ElastiCache-2013-06-15.yml +0 -1188
- data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +0 -847
- data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +0 -2285
- data/lib/aws/api_config/Glacier-2012-06-01.yml +0 -649
- data/lib/aws/api_config/IAM-2010-05-08.yml +0 -1297
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +0 -109
- data/lib/aws/api_config/Kinesis-2013-12-02.yml +0 -201
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +0 -1825
- data/lib/aws/api_config/RDS-2013-05-15.yml +0 -2464
- data/lib/aws/api_config/RDS-2013-09-09.yml +0 -2641
- data/lib/aws/api_config/Redshift-2012-12-01.yml +0 -2137
- data/lib/aws/api_config/Route53-2012-12-12.yml +0 -547
- data/lib/aws/api_config/SNS-2010-03-31.yml +0 -433
- data/lib/aws/api_config/SQS-2012-11-05.yml +0 -319
- data/lib/aws/api_config/STS-2011-06-15.yml +0 -147
- data/lib/aws/api_config/SimpleDB-2009-04-15.yml +0 -306
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +0 -346
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +0 -2388
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +0 -748
- data/lib/aws/api_config/StorageGateway-2013-06-30.yml +0 -1025
- data/lib/aws/api_config/Support-2013-04-15.yml +0 -426
- data/lib/aws/auto_scaling.rb +0 -163
- data/lib/aws/auto_scaling/activity.rb +0 -102
- data/lib/aws/auto_scaling/activity_collection.rb +0 -81
- data/lib/aws/auto_scaling/client.rb +0 -48
- data/lib/aws/auto_scaling/config.rb +0 -18
- data/lib/aws/auto_scaling/errors.rb +0 -22
- data/lib/aws/auto_scaling/group.rb +0 -421
- data/lib/aws/auto_scaling/group_collection.rb +0 -96
- data/lib/aws/auto_scaling/group_options.rb +0 -155
- data/lib/aws/auto_scaling/instance.rb +0 -192
- data/lib/aws/auto_scaling/instance_collection.rb +0 -63
- data/lib/aws/auto_scaling/launch_configuration.rb +0 -162
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +0 -160
- data/lib/aws/auto_scaling/notification_configuration.rb +0 -89
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +0 -183
- data/lib/aws/auto_scaling/scaling_policy.rb +0 -142
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +0 -72
- data/lib/aws/auto_scaling/scaling_policy_options.rb +0 -65
- data/lib/aws/auto_scaling/scheduled_action.rb +0 -141
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +0 -202
- data/lib/aws/auto_scaling/tag.rb +0 -59
- data/lib/aws/auto_scaling/tag_collection.rb +0 -114
- data/lib/aws/cloud_formation.rb +0 -272
- data/lib/aws/cloud_formation/client.rb +0 -48
- data/lib/aws/cloud_formation/config.rb +0 -18
- data/lib/aws/cloud_formation/errors.rb +0 -22
- data/lib/aws/cloud_formation/stack.rb +0 -266
- data/lib/aws/cloud_formation/stack_collection.rb +0 -232
- data/lib/aws/cloud_formation/stack_event.rb +0 -73
- data/lib/aws/cloud_formation/stack_event_collection.rb +0 -47
- data/lib/aws/cloud_formation/stack_options.rb +0 -72
- data/lib/aws/cloud_formation/stack_output.rb +0 -53
- data/lib/aws/cloud_formation/stack_resource.rb +0 -117
- data/lib/aws/cloud_formation/stack_resource_collection.rb +0 -83
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +0 -64
- data/lib/aws/cloud_formation/stack_summary_collection.rb +0 -123
- data/lib/aws/cloud_front.rb +0 -72
- data/lib/aws/cloud_front/client.rb +0 -45
- data/lib/aws/cloud_front/config.rb +0 -18
- data/lib/aws/cloud_front/errors.rb +0 -22
- data/lib/aws/cloud_search.rb +0 -73
- data/lib/aws/cloud_search/client.rb +0 -36
- data/lib/aws/cloud_search/config.rb +0 -18
- data/lib/aws/cloud_search/errors.rb +0 -22
- data/lib/aws/cloud_trail.rb +0 -72
- data/lib/aws/cloud_trail/client.rb +0 -35
- data/lib/aws/cloud_trail/config.rb +0 -18
- data/lib/aws/cloud_trail/errors.rb +0 -22
- data/lib/aws/cloud_watch.rb +0 -118
- data/lib/aws/cloud_watch/alarm.rb +0 -290
- data/lib/aws/cloud_watch/alarm_collection.rb +0 -153
- data/lib/aws/cloud_watch/alarm_history_item.rb +0 -50
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +0 -84
- data/lib/aws/cloud_watch/client.rb +0 -40
- data/lib/aws/cloud_watch/config.rb +0 -18
- data/lib/aws/cloud_watch/errors.rb +0 -22
- data/lib/aws/cloud_watch/metric.rb +0 -135
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +0 -160
- data/lib/aws/cloud_watch/metric_collection.rb +0 -129
- data/lib/aws/cloud_watch/metric_statistics.rb +0 -69
- data/lib/aws/core.rb +0 -701
- data/lib/aws/core/async_handle.rb +0 -90
- data/lib/aws/core/cacheable.rb +0 -77
- data/lib/aws/core/client.rb +0 -778
- data/lib/aws/core/collection.rb +0 -263
- data/lib/aws/core/collection/simple.rb +0 -82
- data/lib/aws/core/collection/with_limit_and_next_token.rb +0 -71
- data/lib/aws/core/collection/with_next_token.rb +0 -97
- data/lib/aws/core/configuration.rb +0 -541
- data/lib/aws/core/credential_providers.rb +0 -506
- data/lib/aws/core/data.rb +0 -247
- data/lib/aws/core/deprecations.rb +0 -84
- data/lib/aws/core/endpoints.rb +0 -37
- data/lib/aws/core/http/connection_pool.rb +0 -349
- data/lib/aws/core/http/curb_handler.rb +0 -148
- data/lib/aws/core/http/handler.rb +0 -89
- data/lib/aws/core/http/net_http_handler.rb +0 -147
- data/lib/aws/core/http/patch.rb +0 -102
- data/lib/aws/core/http/request.rb +0 -249
- data/lib/aws/core/http/response.rb +0 -81
- data/lib/aws/core/indifferent_hash.rb +0 -88
- data/lib/aws/core/inflection.rb +0 -56
- data/lib/aws/core/json_client.rb +0 -47
- data/lib/aws/core/json_parser.rb +0 -76
- data/lib/aws/core/json_request_builder.rb +0 -35
- data/lib/aws/core/json_response_parser.rb +0 -79
- data/lib/aws/core/lazy_error_classes.rb +0 -90
- data/lib/aws/core/log_formatter.rb +0 -428
- data/lib/aws/core/managed_file.rb +0 -32
- data/lib/aws/core/meta_utils.rb +0 -45
- data/lib/aws/core/model.rb +0 -57
- data/lib/aws/core/naming.rb +0 -30
- data/lib/aws/core/option_grammar.rb +0 -738
- data/lib/aws/core/options/json_serializer.rb +0 -82
- data/lib/aws/core/options/validator.rb +0 -155
- data/lib/aws/core/options/xml_serializer.rb +0 -118
- data/lib/aws/core/page_result.rb +0 -75
- data/lib/aws/core/policy.rb +0 -942
- data/lib/aws/core/query_client.rb +0 -41
- data/lib/aws/core/query_error_parser.rb +0 -24
- data/lib/aws/core/query_request_builder.rb +0 -47
- data/lib/aws/core/query_response_parser.rb +0 -35
- data/lib/aws/core/region.rb +0 -85
- data/lib/aws/core/region_collection.rb +0 -80
- data/lib/aws/core/resource.rb +0 -413
- data/lib/aws/core/resource_cache.rb +0 -40
- data/lib/aws/core/response.rb +0 -211
- data/lib/aws/core/response_cache.rb +0 -50
- data/lib/aws/core/rest_error_parser.rb +0 -24
- data/lib/aws/core/rest_json_client.rb +0 -40
- data/lib/aws/core/rest_request_builder.rb +0 -154
- data/lib/aws/core/rest_response_parser.rb +0 -66
- data/lib/aws/core/rest_xml_client.rb +0 -47
- data/lib/aws/core/service_interface.rb +0 -83
- data/lib/aws/core/signers/base.rb +0 -46
- data/lib/aws/core/signers/cloud_front.rb +0 -56
- data/lib/aws/core/signers/s3.rb +0 -159
- data/lib/aws/core/signers/version_2.rb +0 -72
- data/lib/aws/core/signers/version_3.rb +0 -86
- data/lib/aws/core/signers/version_3_https.rb +0 -61
- data/lib/aws/core/signers/version_4.rb +0 -228
- data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +0 -191
- data/lib/aws/core/uri_escape.rb +0 -44
- data/lib/aws/core/xml/frame.rb +0 -244
- data/lib/aws/core/xml/frame_stack.rb +0 -85
- data/lib/aws/core/xml/grammar.rb +0 -306
- data/lib/aws/core/xml/parser.rb +0 -70
- data/lib/aws/core/xml/root_frame.rb +0 -65
- data/lib/aws/core/xml/sax_handlers/libxml.rb +0 -47
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +0 -56
- data/lib/aws/core/xml/sax_handlers/ox.rb +0 -41
- data/lib/aws/core/xml/sax_handlers/rexml.rb +0 -47
- data/lib/aws/core/xml/stub.rb +0 -123
- data/lib/aws/data_pipeline.rb +0 -72
- data/lib/aws/data_pipeline/client.rb +0 -36
- data/lib/aws/data_pipeline/config.rb +0 -18
- data/lib/aws/data_pipeline/errors.rb +0 -20
- data/lib/aws/direct_connect.rb +0 -73
- data/lib/aws/direct_connect/client.rb +0 -36
- data/lib/aws/direct_connect/config.rb +0 -18
- data/lib/aws/direct_connect/errors.rb +0 -22
- data/lib/aws/dynamo_db.rb +0 -214
- data/lib/aws/dynamo_db/attribute_collection.rb +0 -456
- data/lib/aws/dynamo_db/batch_get.rb +0 -213
- data/lib/aws/dynamo_db/batch_write.rb +0 -252
- data/lib/aws/dynamo_db/binary.rb +0 -35
- data/lib/aws/dynamo_db/client.rb +0 -129
- data/lib/aws/dynamo_db/client/v20111205.rb +0 -1266
- data/lib/aws/dynamo_db/client/v20120810.rb +0 -1409
- data/lib/aws/dynamo_db/client_v2.rb +0 -44
- data/lib/aws/dynamo_db/config.rb +0 -24
- data/lib/aws/dynamo_db/errors.rb +0 -20
- data/lib/aws/dynamo_db/expectations.rb +0 -40
- data/lib/aws/dynamo_db/item.rb +0 -133
- data/lib/aws/dynamo_db/item_collection.rb +0 -856
- data/lib/aws/dynamo_db/item_data.rb +0 -31
- data/lib/aws/dynamo_db/keys.rb +0 -41
- data/lib/aws/dynamo_db/primary_key_element.rb +0 -48
- data/lib/aws/dynamo_db/resource.rb +0 -33
- data/lib/aws/dynamo_db/table.rb +0 -496
- data/lib/aws/dynamo_db/table_collection.rb +0 -165
- data/lib/aws/dynamo_db/types.rb +0 -111
- data/lib/aws/ec2.rb +0 -428
- data/lib/aws/ec2/attachment.rb +0 -135
- data/lib/aws/ec2/attachment_collection.rb +0 -54
- data/lib/aws/ec2/availability_zone.rb +0 -86
- data/lib/aws/ec2/availability_zone_collection.rb +0 -43
- data/lib/aws/ec2/block_device_mappings.rb +0 -53
- data/lib/aws/ec2/client.rb +0 -101
- data/lib/aws/ec2/collection.rb +0 -36
- data/lib/aws/ec2/config.rb +0 -30
- data/lib/aws/ec2/customer_gateway.rb +0 -90
- data/lib/aws/ec2/customer_gateway_collection.rb +0 -73
- data/lib/aws/ec2/dhcp_options.rb +0 -106
- data/lib/aws/ec2/dhcp_options_collection.rb +0 -87
- data/lib/aws/ec2/elastic_ip.rb +0 -209
- data/lib/aws/ec2/elastic_ip_collection.rb +0 -93
- data/lib/aws/ec2/errors.rb +0 -32
- data/lib/aws/ec2/export_task.rb +0 -120
- data/lib/aws/ec2/export_task_collection.rb +0 -67
- data/lib/aws/ec2/filtered_collection.rb +0 -87
- data/lib/aws/ec2/has_permissions.rb +0 -44
- data/lib/aws/ec2/image.rb +0 -270
- data/lib/aws/ec2/image_collection.rb +0 -220
- data/lib/aws/ec2/instance.rb +0 -803
- data/lib/aws/ec2/instance_collection.rb +0 -391
- data/lib/aws/ec2/internet_gateway.rb +0 -122
- data/lib/aws/ec2/internet_gateway/attachment.rb +0 -78
- data/lib/aws/ec2/internet_gateway_collection.rb +0 -54
- data/lib/aws/ec2/key_pair.rb +0 -82
- data/lib/aws/ec2/key_pair_collection.rb +0 -99
- data/lib/aws/ec2/network_acl.rb +0 -256
- data/lib/aws/ec2/network_acl/association.rb +0 -56
- data/lib/aws/ec2/network_acl/entry.rb +0 -147
- data/lib/aws/ec2/network_acl_collection.rb +0 -64
- data/lib/aws/ec2/network_interface.rb +0 -237
- data/lib/aws/ec2/network_interface/attachment.rb +0 -100
- data/lib/aws/ec2/network_interface_collection.rb +0 -103
- data/lib/aws/ec2/permission_collection.rb +0 -174
- data/lib/aws/ec2/region.rb +0 -106
- data/lib/aws/ec2/region_collection.rb +0 -51
- data/lib/aws/ec2/reserved_instances.rb +0 -56
- data/lib/aws/ec2/reserved_instances_collection.rb +0 -40
- data/lib/aws/ec2/reserved_instances_offering.rb +0 -60
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -45
- data/lib/aws/ec2/resource.rb +0 -161
- data/lib/aws/ec2/resource_tag_collection.rb +0 -211
- data/lib/aws/ec2/route_table.rb +0 -205
- data/lib/aws/ec2/route_table/association.rb +0 -119
- data/lib/aws/ec2/route_table/route.rb +0 -119
- data/lib/aws/ec2/route_table_collection.rb +0 -72
- data/lib/aws/ec2/security_group.rb +0 -482
- data/lib/aws/ec2/security_group/ip_permission.rb +0 -135
- data/lib/aws/ec2/security_group/ip_permission_collection.rb +0 -82
- data/lib/aws/ec2/security_group_collection.rb +0 -133
- data/lib/aws/ec2/snapshot.rb +0 -143
- data/lib/aws/ec2/snapshot_collection.rb +0 -131
- data/lib/aws/ec2/subnet.rb +0 -161
- data/lib/aws/ec2/subnet_collection.rb +0 -115
- data/lib/aws/ec2/tag.rb +0 -81
- data/lib/aws/ec2/tag_collection.rb +0 -107
- data/lib/aws/ec2/tagged_collection.rb +0 -53
- data/lib/aws/ec2/tagged_item.rb +0 -85
- data/lib/aws/ec2/volume.rb +0 -174
- data/lib/aws/ec2/volume_collection.rb +0 -98
- data/lib/aws/ec2/vpc.rb +0 -166
- data/lib/aws/ec2/vpc_collection.rb +0 -70
- data/lib/aws/ec2/vpn_connection.rb +0 -99
- data/lib/aws/ec2/vpn_connection/telemetry.rb +0 -49
- data/lib/aws/ec2/vpn_connection_collection.rb +0 -96
- data/lib/aws/ec2/vpn_gateway.rb +0 -123
- data/lib/aws/ec2/vpn_gateway/attachment.rb +0 -45
- data/lib/aws/ec2/vpn_gateway_collection.rb +0 -77
- data/lib/aws/elastic_beanstalk.rb +0 -49
- data/lib/aws/elastic_beanstalk/client.rb +0 -36
- data/lib/aws/elastic_beanstalk/config.rb +0 -18
- data/lib/aws/elastic_beanstalk/errors.rb +0 -22
- data/lib/aws/elastic_transcoder.rb +0 -29
- data/lib/aws/elastic_transcoder/client.rb +0 -48
- data/lib/aws/elastic_transcoder/config.rb +0 -18
- data/lib/aws/elastic_transcoder/errors.rb +0 -23
- data/lib/aws/elasticache.rb +0 -49
- data/lib/aws/elasticache/client.rb +0 -35
- data/lib/aws/elasticache/config.rb +0 -18
- data/lib/aws/elasticache/errors.rb +0 -22
- data/lib/aws/elb.rb +0 -66
- data/lib/aws/elb/availability_zone_collection.rb +0 -138
- data/lib/aws/elb/backend_server_policy_collection.rb +0 -139
- data/lib/aws/elb/client.rb +0 -35
- data/lib/aws/elb/config.rb +0 -18
- data/lib/aws/elb/errors.rb +0 -26
- data/lib/aws/elb/instance_collection.rb +0 -168
- data/lib/aws/elb/listener.rb +0 -190
- data/lib/aws/elb/listener_collection.rb +0 -113
- data/lib/aws/elb/listener_opts.rb +0 -45
- data/lib/aws/elb/load_balancer.rb +0 -280
- data/lib/aws/elb/load_balancer_collection.rb +0 -146
- data/lib/aws/elb/load_balancer_policy.rb +0 -93
- data/lib/aws/elb/load_balancer_policy_collection.rb +0 -208
- data/lib/aws/emr.rb +0 -87
- data/lib/aws/emr/client.rb +0 -35
- data/lib/aws/emr/config.rb +0 -18
- data/lib/aws/emr/errors.rb +0 -22
- data/lib/aws/emr/instance_group.rb +0 -138
- data/lib/aws/emr/instance_group_collection.rb +0 -82
- data/lib/aws/emr/job_flow.rb +0 -307
- data/lib/aws/emr/job_flow_collection.rb +0 -185
- data/lib/aws/errors.rb +0 -162
- data/lib/aws/glacier.rb +0 -79
- data/lib/aws/glacier/archive.rb +0 -56
- data/lib/aws/glacier/archive_collection.rb +0 -146
- data/lib/aws/glacier/client.rb +0 -49
- data/lib/aws/glacier/config.rb +0 -19
- data/lib/aws/glacier/errors.rb +0 -22
- data/lib/aws/glacier/resource.rb +0 -30
- data/lib/aws/glacier/vault.rb +0 -145
- data/lib/aws/glacier/vault_collection.rb +0 -75
- data/lib/aws/glacier/vault_notification_configuration.rb +0 -29
- data/lib/aws/iam.rb +0 -408
- data/lib/aws/iam/access_key.rb +0 -185
- data/lib/aws/iam/access_key_collection.rb +0 -128
- data/lib/aws/iam/account_alias_collection.rb +0 -79
- data/lib/aws/iam/client.rb +0 -49
- data/lib/aws/iam/collection.rb +0 -83
- data/lib/aws/iam/config.rb +0 -18
- data/lib/aws/iam/errors.rb +0 -22
- data/lib/aws/iam/group.rb +0 -111
- data/lib/aws/iam/group_collection.rb +0 -132
- data/lib/aws/iam/group_policy_collection.rb +0 -47
- data/lib/aws/iam/group_user_collection.rb +0 -84
- data/lib/aws/iam/login_profile.rb +0 -99
- data/lib/aws/iam/mfa_device.rb +0 -52
- data/lib/aws/iam/mfa_device_collection.rb +0 -127
- data/lib/aws/iam/policy.rb +0 -46
- data/lib/aws/iam/policy_collection.rb +0 -188
- data/lib/aws/iam/resource.rb +0 -62
- data/lib/aws/iam/server_certificate.rb +0 -141
- data/lib/aws/iam/server_certificate_collection.rb +0 -138
- data/lib/aws/iam/signing_certificate.rb +0 -174
- data/lib/aws/iam/signing_certificate_collection.rb +0 -131
- data/lib/aws/iam/user.rb +0 -200
- data/lib/aws/iam/user_collection.rb +0 -133
- data/lib/aws/iam/user_group_collection.rb +0 -98
- data/lib/aws/iam/user_policy.rb +0 -90
- data/lib/aws/iam/user_policy_collection.rb +0 -45
- data/lib/aws/iam/virtual_mfa_device.rb +0 -139
- data/lib/aws/iam/virtual_mfa_device_collection.rb +0 -73
- data/lib/aws/import_export.rb +0 -73
- data/lib/aws/import_export/client.rb +0 -35
- data/lib/aws/import_export/config.rb +0 -19
- data/lib/aws/import_export/errors.rb +0 -22
- data/lib/aws/kinesis.rb +0 -53
- data/lib/aws/kinesis/client.rb +0 -35
- data/lib/aws/kinesis/config.rb +0 -18
- data/lib/aws/kinesis/errors.rb +0 -20
- data/lib/aws/ops_works.rb +0 -29
- data/lib/aws/ops_works/client.rb +0 -35
- data/lib/aws/ops_works/config.rb +0 -18
- data/lib/aws/ops_works/errors.rb +0 -20
- data/lib/aws/rails.rb +0 -195
- data/lib/aws/rds.rb +0 -70
- data/lib/aws/rds/client.rb +0 -42
- data/lib/aws/rds/config.rb +0 -18
- data/lib/aws/rds/db_instance.rb +0 -216
- data/lib/aws/rds/db_instance_collection.rb +0 -75
- data/lib/aws/rds/db_snapshot.rb +0 -163
- data/lib/aws/rds/db_snapshot_collection.rb +0 -89
- data/lib/aws/rds/errors.rb +0 -22
- data/lib/aws/record.rb +0 -139
- data/lib/aws/record/abstract_base.rb +0 -690
- data/lib/aws/record/attributes.rb +0 -388
- data/lib/aws/record/conversion.rb +0 -38
- data/lib/aws/record/dirty_tracking.rb +0 -287
- data/lib/aws/record/errors.rb +0 -143
- data/lib/aws/record/exceptions.rb +0 -51
- data/lib/aws/record/hash_model.rb +0 -204
- data/lib/aws/record/hash_model/attributes.rb +0 -195
- data/lib/aws/record/hash_model/finder_methods.rb +0 -172
- data/lib/aws/record/hash_model/scope.rb +0 -108
- data/lib/aws/record/model.rb +0 -453
- data/lib/aws/record/model/attributes.rb +0 -377
- data/lib/aws/record/model/finder_methods.rb +0 -232
- data/lib/aws/record/model/scope.rb +0 -212
- data/lib/aws/record/naming.rb +0 -31
- data/lib/aws/record/scope.rb +0 -203
- data/lib/aws/record/validations.rb +0 -694
- data/lib/aws/record/validator.rb +0 -246
- data/lib/aws/record/validators/acceptance.rb +0 -49
- data/lib/aws/record/validators/block.rb +0 -36
- data/lib/aws/record/validators/confirmation.rb +0 -41
- data/lib/aws/record/validators/count.rb +0 -106
- data/lib/aws/record/validators/exclusion.rb +0 -41
- data/lib/aws/record/validators/format.rb +0 -55
- data/lib/aws/record/validators/inclusion.rb +0 -54
- data/lib/aws/record/validators/length.rb +0 -105
- data/lib/aws/record/validators/method.rb +0 -31
- data/lib/aws/record/validators/numericality.rb +0 -136
- data/lib/aws/record/validators/presence.rb +0 -43
- data/lib/aws/redshift.rb +0 -51
- data/lib/aws/redshift/client.rb +0 -35
- data/lib/aws/redshift/config.rb +0 -18
- data/lib/aws/redshift/errors.rb +0 -22
- data/lib/aws/route_53.rb +0 -86
- data/lib/aws/route_53/change_batch.rb +0 -161
- data/lib/aws/route_53/change_info.rb +0 -72
- data/lib/aws/route_53/client.rb +0 -35
- data/lib/aws/route_53/config.rb +0 -18
- data/lib/aws/route_53/errors.rb +0 -22
- data/lib/aws/route_53/hosted_zone.rb +0 -111
- data/lib/aws/route_53/hosted_zone_collection.rb +0 -100
- data/lib/aws/route_53/resource_record_set.rb +0 -251
- data/lib/aws/route_53/resource_record_set_collection.rb +0 -110
- data/lib/aws/s3.rb +0 -156
- data/lib/aws/s3/access_control_list.rb +0 -265
- data/lib/aws/s3/acl_object.rb +0 -264
- data/lib/aws/s3/acl_options.rb +0 -204
- data/lib/aws/s3/bucket.rb +0 -742
- data/lib/aws/s3/bucket_collection.rb +0 -162
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +0 -457
- data/lib/aws/s3/bucket_tag_collection.rb +0 -111
- data/lib/aws/s3/bucket_version_collection.rb +0 -79
- data/lib/aws/s3/cipher_io.rb +0 -120
- data/lib/aws/s3/client.rb +0 -1919
- data/lib/aws/s3/client/xml.rb +0 -259
- data/lib/aws/s3/config.rb +0 -48
- data/lib/aws/s3/cors_rule.rb +0 -108
- data/lib/aws/s3/cors_rule_collection.rb +0 -194
- data/lib/aws/s3/data_options.rb +0 -191
- data/lib/aws/s3/encryption_utils.rb +0 -146
- data/lib/aws/s3/errors.rb +0 -94
- data/lib/aws/s3/multipart_upload.rb +0 -351
- data/lib/aws/s3/multipart_upload_collection.rb +0 -76
- data/lib/aws/s3/object_collection.rb +0 -353
- data/lib/aws/s3/object_metadata.rb +0 -103
- data/lib/aws/s3/object_upload_collection.rb +0 -77
- data/lib/aws/s3/object_version.rb +0 -154
- data/lib/aws/s3/object_version_collection.rb +0 -89
- data/lib/aws/s3/paginated_collection.rb +0 -75
- data/lib/aws/s3/policy.rb +0 -74
- data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -47
- data/lib/aws/s3/prefixed_collection.rb +0 -85
- data/lib/aws/s3/presign_v4.rb +0 -127
- data/lib/aws/s3/presigned_post.rb +0 -554
- data/lib/aws/s3/request.rb +0 -62
- data/lib/aws/s3/s3_object.rb +0 -1781
- data/lib/aws/s3/tree.rb +0 -116
- data/lib/aws/s3/tree/branch_node.rb +0 -68
- data/lib/aws/s3/tree/child_collection.rb +0 -104
- data/lib/aws/s3/tree/leaf_node.rb +0 -94
- data/lib/aws/s3/tree/node.rb +0 -22
- data/lib/aws/s3/tree/parent.rb +0 -87
- data/lib/aws/s3/uploaded_part.rb +0 -82
- data/lib/aws/s3/uploaded_part_collection.rb +0 -84
- data/lib/aws/s3/website_configuration.rb +0 -102
- data/lib/aws/simple_db.rb +0 -218
- data/lib/aws/simple_db/attribute.rb +0 -156
- data/lib/aws/simple_db/attribute_collection.rb +0 -240
- data/lib/aws/simple_db/client.rb +0 -67
- data/lib/aws/simple_db/config.rb +0 -20
- data/lib/aws/simple_db/consistent_read_option.rb +0 -42
- data/lib/aws/simple_db/delete_attributes.rb +0 -62
- data/lib/aws/simple_db/domain.rb +0 -123
- data/lib/aws/simple_db/domain_collection.rb +0 -86
- data/lib/aws/simple_db/domain_metadata.rb +0 -110
- data/lib/aws/simple_db/errors.rb +0 -55
- data/lib/aws/simple_db/expect_condition_option.rb +0 -45
- data/lib/aws/simple_db/item.rb +0 -93
- data/lib/aws/simple_db/item_collection.rb +0 -654
- data/lib/aws/simple_db/item_data.rb +0 -73
- data/lib/aws/simple_db/put_attributes.rb +0 -60
- data/lib/aws/simple_email_service.rb +0 -430
- data/lib/aws/simple_email_service/client.rb +0 -37
- data/lib/aws/simple_email_service/config.rb +0 -18
- data/lib/aws/simple_email_service/email_address_collection.rb +0 -69
- data/lib/aws/simple_email_service/errors.rb +0 -22
- data/lib/aws/simple_email_service/identity.rb +0 -209
- data/lib/aws/simple_email_service/identity_collection.rb +0 -81
- data/lib/aws/simple_email_service/quotas.rb +0 -66
- data/lib/aws/simple_workflow.rb +0 -227
- data/lib/aws/simple_workflow/activity_task.rb +0 -178
- data/lib/aws/simple_workflow/activity_task_collection.rb +0 -123
- data/lib/aws/simple_workflow/activity_type.rb +0 -131
- data/lib/aws/simple_workflow/activity_type_collection.rb +0 -93
- data/lib/aws/simple_workflow/client.rb +0 -69
- data/lib/aws/simple_workflow/config.rb +0 -18
- data/lib/aws/simple_workflow/count.rb +0 -49
- data/lib/aws/simple_workflow/decision_task.rb +0 -603
- data/lib/aws/simple_workflow/decision_task_collection.rb +0 -225
- data/lib/aws/simple_workflow/domain.rb +0 -122
- data/lib/aws/simple_workflow/domain_collection.rb +0 -169
- data/lib/aws/simple_workflow/errors.rb +0 -20
- data/lib/aws/simple_workflow/history_event.rb +0 -276
- data/lib/aws/simple_workflow/history_event_collection.rb +0 -76
- data/lib/aws/simple_workflow/option_formatters.rb +0 -82
- data/lib/aws/simple_workflow/resource.rb +0 -94
- data/lib/aws/simple_workflow/type.rb +0 -89
- data/lib/aws/simple_workflow/type_collection.rb +0 -140
- data/lib/aws/simple_workflow/workflow_execution.rb +0 -384
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +0 -617
- data/lib/aws/simple_workflow/workflow_type.rb +0 -179
- data/lib/aws/simple_workflow/workflow_type_collection.rb +0 -91
- data/lib/aws/sns.rb +0 -76
- data/lib/aws/sns/client.rb +0 -35
- data/lib/aws/sns/config.rb +0 -18
- data/lib/aws/sns/errors.rb +0 -22
- data/lib/aws/sns/has_delivery_policy.rb +0 -68
- data/lib/aws/sns/message.rb +0 -194
- data/lib/aws/sns/originators/from_auto_scaling.rb +0 -68
- data/lib/aws/sns/policy.rb +0 -47
- data/lib/aws/sns/subscription.rb +0 -165
- data/lib/aws/sns/subscription_collection.rb +0 -78
- data/lib/aws/sns/topic.rb +0 -403
- data/lib/aws/sns/topic_collection.rb +0 -62
- data/lib/aws/sns/topic_subscription_collection.rb +0 -54
- data/lib/aws/sqs.rb +0 -80
- data/lib/aws/sqs/client.rb +0 -53
- data/lib/aws/sqs/config.rb +0 -20
- data/lib/aws/sqs/errors.rb +0 -125
- data/lib/aws/sqs/policy.rb +0 -48
- data/lib/aws/sqs/queue.rb +0 -843
- data/lib/aws/sqs/queue_collection.rb +0 -182
- data/lib/aws/sqs/received_message.rb +0 -182
- data/lib/aws/sqs/received_sns_message.rb +0 -116
- data/lib/aws/storage_gateway.rb +0 -72
- data/lib/aws/storage_gateway/client.rb +0 -42
- data/lib/aws/storage_gateway/config.rb +0 -18
- data/lib/aws/storage_gateway/errors.rb +0 -22
- data/lib/aws/sts.rb +0 -164
- data/lib/aws/sts/client.rb +0 -46
- data/lib/aws/sts/config.rb +0 -18
- data/lib/aws/sts/errors.rb +0 -22
- data/lib/aws/sts/federated_session.rb +0 -56
- data/lib/aws/sts/policy.rb +0 -30
- data/lib/aws/sts/session.rb +0 -48
- data/lib/aws/support.rb +0 -29
- data/lib/aws/support/client.rb +0 -35
- data/lib/aws/support/config.rb +0 -18
- data/lib/aws/support/errors.rb +0 -20
- data/lib/aws/version.rb +0 -17
- data/rails/init.rb +0 -15
|
@@ -1,690 +0,0 @@
|
|
|
1
|
-
# Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
-
# may not use this file except in compliance with the License. A copy of
|
|
5
|
-
# the License is located at
|
|
6
|
-
#
|
|
7
|
-
# http://aws.amazon.com/apache2.0/
|
|
8
|
-
#
|
|
9
|
-
# or in the "license" file accompanying this file. This file is
|
|
10
|
-
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
-
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
-
# language governing permissions and limitations under the License.
|
|
13
|
-
|
|
14
|
-
require 'uuidtools'
|
|
15
|
-
require 'set'
|
|
16
|
-
|
|
17
|
-
module AWS
|
|
18
|
-
module Record
|
|
19
|
-
module AbstractBase
|
|
20
|
-
|
|
21
|
-
def self.extended base
|
|
22
|
-
|
|
23
|
-
base.send(:extend, ClassMethods)
|
|
24
|
-
base.send(:include, InstanceMethods)
|
|
25
|
-
base.send(:include, DirtyTracking)
|
|
26
|
-
base.send(:extend, Validations)
|
|
27
|
-
|
|
28
|
-
# these 3 modules are for rails 3+ active model compatability
|
|
29
|
-
base.send(:extend, Naming)
|
|
30
|
-
base.send(:include, Naming)
|
|
31
|
-
base.send(:include, Conversion)
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
module InstanceMethods
|
|
36
|
-
|
|
37
|
-
# Constructs a new record.
|
|
38
|
-
#
|
|
39
|
-
# @param [Hash] attributes Attributes that should be bulk assigned
|
|
40
|
-
# to this record. You can also specify the shard (i.e. domain
|
|
41
|
-
# or table) this record should persist to via `:shard`).
|
|
42
|
-
#
|
|
43
|
-
# @option attributes [String] :shard The domain/table this record
|
|
44
|
-
# should persist to. If this is omitted, it will persist to the
|
|
45
|
-
# class default shard (which defaults to the class name).
|
|
46
|
-
#
|
|
47
|
-
# @return [Model,HashModel] Returns a new (non-persisted) record.
|
|
48
|
-
# Call {#save} to persist changes to AWS.
|
|
49
|
-
#
|
|
50
|
-
def initialize attributes = {}
|
|
51
|
-
|
|
52
|
-
attributes = attributes.dup
|
|
53
|
-
|
|
54
|
-
# supporting :domain for backwards compatability, :shard is prefered
|
|
55
|
-
@_shard = attributes.delete(:domain)
|
|
56
|
-
@_shard ||= attributes.delete('domain')
|
|
57
|
-
@_shard ||= attributes.delete(:shard)
|
|
58
|
-
@_shard ||= attributes.delete('shard')
|
|
59
|
-
@_shard = self.class.shard_name(@_shard)
|
|
60
|
-
|
|
61
|
-
@_data = {}
|
|
62
|
-
assign_default_values
|
|
63
|
-
bulk_assign(attributes)
|
|
64
|
-
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# @return [String] Returns the name of the shard this record
|
|
68
|
-
# is persisted to or will be persisted to. Defaults to the
|
|
69
|
-
# domain/table named after this record class.
|
|
70
|
-
def shard
|
|
71
|
-
@_shard
|
|
72
|
-
end
|
|
73
|
-
alias_method :domain, :shard # for backwards compatability
|
|
74
|
-
|
|
75
|
-
# @return [Hash] A hash with attribute names as hash keys (strings) and
|
|
76
|
-
# attribute values (of mixed types) as hash values.
|
|
77
|
-
def attributes
|
|
78
|
-
attributes = Core::IndifferentHash.new
|
|
79
|
-
self.class.attributes.keys.inject(attributes) do |hash,attr_name|
|
|
80
|
-
hash.merge(attr_name => __send__(attr_name))
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# Acts like {#update} but does not call {#save}.
|
|
85
|
-
#
|
|
86
|
-
# record.attributes = { :name => 'abc', :age => 20 }
|
|
87
|
-
#
|
|
88
|
-
# @param [Hash] attributes A hash of attributes to set on this record
|
|
89
|
-
# without calling save.
|
|
90
|
-
#
|
|
91
|
-
# @return [Hash] Returns the attribute hash that was passed in.
|
|
92
|
-
#
|
|
93
|
-
def attributes= attributes
|
|
94
|
-
bulk_assign(attributes)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# Persistence indicates if the record has been saved previously or not.
|
|
98
|
-
#
|
|
99
|
-
# @example
|
|
100
|
-
# @recipe = Recipe.new(:name => 'Buttermilk Pancackes')
|
|
101
|
-
# @recipe.persisted? #=> false
|
|
102
|
-
# @recipe.save!
|
|
103
|
-
# @recipe.persisted? #=> true
|
|
104
|
-
#
|
|
105
|
-
# @return [Boolean] Returns true if this record has been persisted.
|
|
106
|
-
def persisted?
|
|
107
|
-
!!@_persisted
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
# @return [Boolean] Returns true if this record has not been persisted
|
|
111
|
-
# to SimpleDB.
|
|
112
|
-
def new_record?
|
|
113
|
-
!persisted?
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# @param [Hash] opts Pass :validate => false to skip validations
|
|
117
|
-
# @return [Boolean] Returns true if this record has no validation errors.
|
|
118
|
-
def valid? opts = {}
|
|
119
|
-
opts = {} if opts.nil?
|
|
120
|
-
opts = {:validate => true}.merge(opts)
|
|
121
|
-
run_validations if opts[:validate]
|
|
122
|
-
errors.empty?
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def errors
|
|
126
|
-
@errors ||= Errors.new
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
# Creates new records, updates existing records.
|
|
130
|
-
# @param [Hash] opts Pass :validate => false to skip validations
|
|
131
|
-
# @return [Boolean] Returns true if the record saved without errors,
|
|
132
|
-
# false otherwise.
|
|
133
|
-
def save opts = {}
|
|
134
|
-
if valid?(opts)
|
|
135
|
-
persisted? ? update : create
|
|
136
|
-
clear_changes!
|
|
137
|
-
true
|
|
138
|
-
else
|
|
139
|
-
false
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
# Creates new records, updates exsting records. If there is a validation
|
|
144
|
-
# error then an exception is raised.
|
|
145
|
-
# @raise [InvalidRecordError] Raised when the record has validation
|
|
146
|
-
# errors and can not be saved.
|
|
147
|
-
# @return [true] Returns true after a successful save.
|
|
148
|
-
def save!
|
|
149
|
-
raise InvalidRecordError.new(self) unless save
|
|
150
|
-
true
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# Bulk assigns the attributes and then saves the record.
|
|
154
|
-
# @param [Hash] attribute_hash A hash of attribute names (keys) and
|
|
155
|
-
# attribute values to assign to this record.
|
|
156
|
-
# @return (see #save)
|
|
157
|
-
def update_attributes attribute_hash
|
|
158
|
-
bulk_assign(attribute_hash)
|
|
159
|
-
save
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# Bulk assigns the attributes and then saves the record. Raises
|
|
163
|
-
# an exception (AWS::Record::InvalidRecordError) if the record is not
|
|
164
|
-
# valid.
|
|
165
|
-
# @param (see #update_attributes)
|
|
166
|
-
# @return [true]
|
|
167
|
-
def update_attributes! attribute_hash
|
|
168
|
-
if update_attributes(attribute_hash)
|
|
169
|
-
true
|
|
170
|
-
else
|
|
171
|
-
raise InvalidRecordError.new(self)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
# Deletes the record.
|
|
176
|
-
# @return [true]
|
|
177
|
-
def delete
|
|
178
|
-
if persisted?
|
|
179
|
-
if deleted?
|
|
180
|
-
raise 'unable to delete, this object has already been deleted'
|
|
181
|
-
else
|
|
182
|
-
delete_storage
|
|
183
|
-
@_deleted = true
|
|
184
|
-
end
|
|
185
|
-
else
|
|
186
|
-
raise 'unable to delete, this object has not been saved yet'
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
alias_method :destroy, :delete
|
|
190
|
-
|
|
191
|
-
# @return [Boolean] Returns true if this instance object has been deleted.
|
|
192
|
-
def deleted?
|
|
193
|
-
persisted? ? !!@_deleted : false
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
# If you define a custom setter, you use #[]= to set the value
|
|
197
|
-
# on the record.
|
|
198
|
-
#
|
|
199
|
-
# class Book < AWS::Record::Model
|
|
200
|
-
#
|
|
201
|
-
# string_attr :name
|
|
202
|
-
#
|
|
203
|
-
# # replace the default #author= method
|
|
204
|
-
# def author= name
|
|
205
|
-
# self['author'] = name.blank? ? 'Anonymous' : name
|
|
206
|
-
# end
|
|
207
|
-
#
|
|
208
|
-
# end
|
|
209
|
-
#
|
|
210
|
-
# @param [String,Symbol] The attribute name to set a value for
|
|
211
|
-
# @param attribute_value The value to assign.
|
|
212
|
-
protected
|
|
213
|
-
def []= attribute_name, new_value
|
|
214
|
-
self.class.attribute_for(attribute_name) do |attribute|
|
|
215
|
-
|
|
216
|
-
if_tracking_changes do
|
|
217
|
-
original_value = type_cast(attribute, attribute_was(attribute.name))
|
|
218
|
-
incoming_value = type_cast(attribute, new_value)
|
|
219
|
-
if original_value == incoming_value
|
|
220
|
-
clear_change!(attribute.name)
|
|
221
|
-
else
|
|
222
|
-
attribute_will_change!(attribute.name)
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
@_data[attribute.name] = new_value
|
|
227
|
-
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
# Returns the typecasted value for the named attribute.
|
|
232
|
-
#
|
|
233
|
-
# book = Book.new(:title => 'My Book')
|
|
234
|
-
# book['title'] #=> 'My Book'
|
|
235
|
-
# book.title #=> 'My Book'
|
|
236
|
-
#
|
|
237
|
-
# ### Intended Use
|
|
238
|
-
#
|
|
239
|
-
# This method's primary use is for getting/setting the value for
|
|
240
|
-
# an attribute inside a custom method:
|
|
241
|
-
#
|
|
242
|
-
# class Book < AWS::Record::Model
|
|
243
|
-
#
|
|
244
|
-
# string_attr :title
|
|
245
|
-
#
|
|
246
|
-
# def title
|
|
247
|
-
# self['title'] ? self['title'].upcase : nil
|
|
248
|
-
# end
|
|
249
|
-
#
|
|
250
|
-
# end
|
|
251
|
-
#
|
|
252
|
-
# book = Book.new(:title => 'My Book')
|
|
253
|
-
# book.title #=> 'MY BOOK'
|
|
254
|
-
#
|
|
255
|
-
# @param [String,Symbol] attribute_name The name of the attribute to fetch
|
|
256
|
-
# a value for.
|
|
257
|
-
# @return The current type-casted value for the named attribute.
|
|
258
|
-
protected
|
|
259
|
-
def [] attribute_name
|
|
260
|
-
self.class.attribute_for(attribute_name) do |attribute|
|
|
261
|
-
type_cast(attribute, @_data[attribute.name])
|
|
262
|
-
end
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
protected
|
|
266
|
-
def create
|
|
267
|
-
populate_id
|
|
268
|
-
touch_timestamps('created_at', 'updated_at')
|
|
269
|
-
increment_optimistic_lock_value
|
|
270
|
-
create_storage
|
|
271
|
-
@_persisted = true
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
private
|
|
275
|
-
def update
|
|
276
|
-
return unless changed?
|
|
277
|
-
touch_timestamps('updated_at')
|
|
278
|
-
increment_optimistic_lock_value
|
|
279
|
-
update_storage
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
protected
|
|
283
|
-
def touch_timestamps *attributes
|
|
284
|
-
now = Time.now
|
|
285
|
-
attributes.each do |attr_name|
|
|
286
|
-
if
|
|
287
|
-
self.class.attributes[attr_name] and
|
|
288
|
-
!attribute_changed?(attr_name)
|
|
289
|
-
# don't touch timestamps the user modified
|
|
290
|
-
then
|
|
291
|
-
__send__("#{attr_name}=", now)
|
|
292
|
-
end
|
|
293
|
-
end
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
protected
|
|
297
|
-
def increment_optimistic_lock_value
|
|
298
|
-
if_locks_optimistically do |lock_attr|
|
|
299
|
-
if value = self[lock_attr.name]
|
|
300
|
-
self[lock_attr.name] = value + 1
|
|
301
|
-
else
|
|
302
|
-
self[lock_attr.name] = 1
|
|
303
|
-
end
|
|
304
|
-
end
|
|
305
|
-
end
|
|
306
|
-
|
|
307
|
-
protected
|
|
308
|
-
def if_locks_optimistically &block
|
|
309
|
-
if opt_lock_attr = self.class.optimistic_locking_attr
|
|
310
|
-
yield(opt_lock_attr)
|
|
311
|
-
end
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
protected
|
|
315
|
-
def opt_lock_conditions
|
|
316
|
-
conditions = {}
|
|
317
|
-
if_locks_optimistically do |lock_attr|
|
|
318
|
-
if was = attribute_was(lock_attr.name)
|
|
319
|
-
conditions[:if] = { lock_attr.name => lock_attr.serialize(was) }
|
|
320
|
-
else
|
|
321
|
-
conditions[:unless_exists] = lock_attr.name
|
|
322
|
-
end
|
|
323
|
-
end
|
|
324
|
-
conditions
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
private
|
|
328
|
-
def assign_default_values
|
|
329
|
-
# populate default attribute values
|
|
330
|
-
ignore_changes do
|
|
331
|
-
self.class.attributes.values.each do |attribute|
|
|
332
|
-
default = attribute.default_value
|
|
333
|
-
begin
|
|
334
|
-
# copy default values down so methods like #gsub! don't
|
|
335
|
-
# modify the default values for other objects
|
|
336
|
-
@_data[attribute.name] = default.clone
|
|
337
|
-
rescue TypeError
|
|
338
|
-
@_data[attribute.name] = default
|
|
339
|
-
end
|
|
340
|
-
end
|
|
341
|
-
end
|
|
342
|
-
end
|
|
343
|
-
|
|
344
|
-
private
|
|
345
|
-
def bulk_assign hash
|
|
346
|
-
flatten_date_parts(hash).each_pair do |attr_name, attr_value|
|
|
347
|
-
__send__("#{attr_name}=", attr_value)
|
|
348
|
-
end
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
private
|
|
352
|
-
# Rails date and time select helpers split date and time
|
|
353
|
-
# attributes into multiple values for form submission.
|
|
354
|
-
# These attributes get named things like 'created_at(1i)'
|
|
355
|
-
# and represent year/month/day/hour/min/sec parts of
|
|
356
|
-
# the date/time.
|
|
357
|
-
#
|
|
358
|
-
# This method converts these attributes back into a single
|
|
359
|
-
# value and converts them to Date and DateTime objects.
|
|
360
|
-
def flatten_date_parts attributes
|
|
361
|
-
|
|
362
|
-
multi_attributes = Set.new
|
|
363
|
-
|
|
364
|
-
hash = attributes.inject({}) do |hash,(key,value)|
|
|
365
|
-
# collects attribuets like "created_at(1i)" into an array of parts
|
|
366
|
-
if key =~ /\(/
|
|
367
|
-
key, index = key.to_s.split(/\(|i\)/)
|
|
368
|
-
hash[key] ||= []
|
|
369
|
-
hash[key][index.to_i - 1] = value.to_i
|
|
370
|
-
multi_attributes << key
|
|
371
|
-
else
|
|
372
|
-
hash[key] = value
|
|
373
|
-
end
|
|
374
|
-
hash
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
# convert multiattribute values into date/time objects
|
|
378
|
-
multi_attributes.each do |key|
|
|
379
|
-
|
|
380
|
-
values = hash[key]
|
|
381
|
-
|
|
382
|
-
hash[key] = case values.size
|
|
383
|
-
when 0 then nil
|
|
384
|
-
when 2
|
|
385
|
-
now = Time.now
|
|
386
|
-
Time.local(now.year, now.month, now.day, values[0], values[1], 0, 0)
|
|
387
|
-
when 3 then Date.new(*values)
|
|
388
|
-
else DateTime.new(*values)
|
|
389
|
-
end
|
|
390
|
-
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
hash
|
|
394
|
-
|
|
395
|
-
end
|
|
396
|
-
|
|
397
|
-
private
|
|
398
|
-
def type_cast attribute, raw
|
|
399
|
-
if attribute.set?
|
|
400
|
-
values = Record.as_array(raw).inject([]) do |values,value|
|
|
401
|
-
values << attribute.type_cast(value)
|
|
402
|
-
values
|
|
403
|
-
end
|
|
404
|
-
Set.new(values.compact)
|
|
405
|
-
else
|
|
406
|
-
attribute.type_cast(raw)
|
|
407
|
-
end
|
|
408
|
-
end
|
|
409
|
-
|
|
410
|
-
private
|
|
411
|
-
def serialize_attributes
|
|
412
|
-
|
|
413
|
-
hash = {}
|
|
414
|
-
self.class.attributes.each_pair do |attribute_name,attribute|
|
|
415
|
-
value = serialize_attribute(attribute, @_data[attribute_name])
|
|
416
|
-
unless [nil, []].include?(value)
|
|
417
|
-
hash[attribute_name] = value
|
|
418
|
-
end
|
|
419
|
-
end
|
|
420
|
-
|
|
421
|
-
# simple db does not support persisting items without attribute values
|
|
422
|
-
raise EmptyRecordError.new(self) if hash.empty?
|
|
423
|
-
|
|
424
|
-
hash
|
|
425
|
-
|
|
426
|
-
end
|
|
427
|
-
|
|
428
|
-
private
|
|
429
|
-
def serialize_attribute attribute, raw_value
|
|
430
|
-
type_casted_value = type_cast(attribute, raw_value)
|
|
431
|
-
case type_casted_value
|
|
432
|
-
when nil then nil
|
|
433
|
-
when Set then type_casted_value.map{|v| attribute.serialize(v) }
|
|
434
|
-
else attribute.serialize(type_casted_value)
|
|
435
|
-
end
|
|
436
|
-
end
|
|
437
|
-
|
|
438
|
-
# @api private
|
|
439
|
-
protected
|
|
440
|
-
def hydrate id, data
|
|
441
|
-
# New objects are populated with default values, but we don't
|
|
442
|
-
# want these values to hang around when hydrating persisted values
|
|
443
|
-
# (those values may have been blanked out before save).
|
|
444
|
-
self.class.attributes.values.each do |attribute|
|
|
445
|
-
@_data[attribute.name] = nil
|
|
446
|
-
end
|
|
447
|
-
|
|
448
|
-
ignore_changes do
|
|
449
|
-
bulk_assign(deserialize_item_data(data))
|
|
450
|
-
end
|
|
451
|
-
|
|
452
|
-
@_persisted = true
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
protected
|
|
456
|
-
def create_storage
|
|
457
|
-
raise NotImplementedError
|
|
458
|
-
end
|
|
459
|
-
|
|
460
|
-
protected
|
|
461
|
-
def update_storage
|
|
462
|
-
raise NotImplementedError
|
|
463
|
-
end
|
|
464
|
-
|
|
465
|
-
protected
|
|
466
|
-
def delete_storage
|
|
467
|
-
raise NotImplementedError
|
|
468
|
-
end
|
|
469
|
-
|
|
470
|
-
end
|
|
471
|
-
|
|
472
|
-
module ClassMethods
|
|
473
|
-
|
|
474
|
-
# Allows you to override the default shard name for this class.
|
|
475
|
-
# The shard name defaults to the class name.
|
|
476
|
-
# @param [String] name
|
|
477
|
-
def set_shard_name name
|
|
478
|
-
@_shard_name = name
|
|
479
|
-
end
|
|
480
|
-
alias_method :set_domain_name, :set_shard_name
|
|
481
|
-
alias_method :shard_name=, :set_shard_name
|
|
482
|
-
|
|
483
|
-
# Returns the name of the shard this class will persist records
|
|
484
|
-
# into by default.
|
|
485
|
-
#
|
|
486
|
-
# @param [String] name Defaults to the name of this class.
|
|
487
|
-
# @return [String] Returns the full prefixed domain name for this class.
|
|
488
|
-
def shard_name name = nil
|
|
489
|
-
case name
|
|
490
|
-
when nil
|
|
491
|
-
@_shard_name || self.name
|
|
492
|
-
when AWS::DynamoDB::Table
|
|
493
|
-
name.name.gsub(/^#{Record::table_prefix}/, '')
|
|
494
|
-
when AWS::SimpleDB::Domain
|
|
495
|
-
name.name.gsub(/^#{Record::domain_prefix}/, '')
|
|
496
|
-
else name
|
|
497
|
-
end
|
|
498
|
-
end
|
|
499
|
-
alias_method :domain_name, :shard_name
|
|
500
|
-
|
|
501
|
-
# Adds a scoped finder to this class.
|
|
502
|
-
#
|
|
503
|
-
# class Book < AWS::Record::Model
|
|
504
|
-
# scope :top_10, order(:popularity, :desc).limit(10)
|
|
505
|
-
# end
|
|
506
|
-
#
|
|
507
|
-
# Book.top_10.to_a
|
|
508
|
-
# #=> [#<Book...>, #<Book...>]
|
|
509
|
-
#
|
|
510
|
-
# Book.top_10.first
|
|
511
|
-
# #=> #<Book...>
|
|
512
|
-
#
|
|
513
|
-
# You can also provide a block that accepts params for the scoped
|
|
514
|
-
# finder. This block should return a scope.
|
|
515
|
-
#
|
|
516
|
-
# class Book < AWS::Record::Model
|
|
517
|
-
# scope :by_author, lambda {|name| where(:author => name) }
|
|
518
|
-
# end
|
|
519
|
-
#
|
|
520
|
-
# # top 10 books by the author 'John Doe'
|
|
521
|
-
# Book.by_author('John Doe').top_10
|
|
522
|
-
#
|
|
523
|
-
# @param [Symbol] name The name of the scope. Scope names should be
|
|
524
|
-
# method-safe and should not conflict with any other class methods.
|
|
525
|
-
#
|
|
526
|
-
# @param [Scope] scope
|
|
527
|
-
#
|
|
528
|
-
def scope name, scope = nil, &block
|
|
529
|
-
|
|
530
|
-
method_definition = scope ? lambda { scope } : block
|
|
531
|
-
|
|
532
|
-
extend(Module.new { define_method(name, &method_definition) })
|
|
533
|
-
|
|
534
|
-
end
|
|
535
|
-
|
|
536
|
-
# Creates an object (or multiple if you pass an array of attributes).
|
|
537
|
-
# The {#save} method is called on the object(s) after construction.
|
|
538
|
-
# The object(s) are returned wether or not the object(s) are valid.
|
|
539
|
-
#
|
|
540
|
-
# class Book < AWS::Record::Model
|
|
541
|
-
# string_attr :title
|
|
542
|
-
# end
|
|
543
|
-
#
|
|
544
|
-
# book = Book.create(:title => "The big book of tests")
|
|
545
|
-
# book.persisted?
|
|
546
|
-
# #=> true
|
|
547
|
-
#
|
|
548
|
-
# books = Book.create([{:title => 'abc'}, {:title => 'xyz'}])
|
|
549
|
-
# books.each(&:persisted?)
|
|
550
|
-
# #=> [true, true]
|
|
551
|
-
#
|
|
552
|
-
def create attributes = {}
|
|
553
|
-
create_impl(attributes, :create, :save)
|
|
554
|
-
end
|
|
555
|
-
|
|
556
|
-
# Creates an object (or multiple if you pass an array of attributes).
|
|
557
|
-
# The {#save!} method is called on the object(s) after construction.
|
|
558
|
-
# If the object(s) are not valid, then an error is raised.
|
|
559
|
-
#
|
|
560
|
-
# class Book < AWS::Record::Model
|
|
561
|
-
# string_attr :title
|
|
562
|
-
# validates_presence_of :title
|
|
563
|
-
# end
|
|
564
|
-
#
|
|
565
|
-
# book = Book.create!(:title => "The big book of tests")
|
|
566
|
-
# book.persisted?
|
|
567
|
-
# #=> true
|
|
568
|
-
#
|
|
569
|
-
# book = Book.create!()
|
|
570
|
-
# #=> raises AWS::Record::InvalidRecordError
|
|
571
|
-
#
|
|
572
|
-
def create! attributes = {}
|
|
573
|
-
create_impl(attributes, :create!, :save!)
|
|
574
|
-
end
|
|
575
|
-
|
|
576
|
-
# @api private
|
|
577
|
-
def new_scope
|
|
578
|
-
self::Scope.new(self)
|
|
579
|
-
end
|
|
580
|
-
|
|
581
|
-
def optimistic_locking attribute_name = :version_id
|
|
582
|
-
attribute = integer_attr(attribute_name)
|
|
583
|
-
@optimistic_locking_attr = attribute
|
|
584
|
-
end
|
|
585
|
-
|
|
586
|
-
# @return [Boolean] Returns true if this class is configured to
|
|
587
|
-
# perform optimistic locking.
|
|
588
|
-
def optimistic_locking?
|
|
589
|
-
!!@optimistic_locking_attr
|
|
590
|
-
end
|
|
591
|
-
|
|
592
|
-
# @private
|
|
593
|
-
def optimistic_locking_attr
|
|
594
|
-
@optimistic_locking_attr
|
|
595
|
-
end
|
|
596
|
-
|
|
597
|
-
# @return [Hash<String,Attribute>] Returns a hash of all of the
|
|
598
|
-
# configured attributes for this class.
|
|
599
|
-
def attributes
|
|
600
|
-
@attributes ||= {}
|
|
601
|
-
end
|
|
602
|
-
|
|
603
|
-
# @api private
|
|
604
|
-
def attribute_for attribute_name, &block
|
|
605
|
-
unless attribute = attributes[attribute_name.to_s]
|
|
606
|
-
raise UndefinedAttributeError.new(attribute_name.to_s)
|
|
607
|
-
end
|
|
608
|
-
block_given? ? yield(attribute) : attribute
|
|
609
|
-
end
|
|
610
|
-
|
|
611
|
-
# @api private
|
|
612
|
-
def add_attribute attribute
|
|
613
|
-
|
|
614
|
-
attr_name = attribute.name
|
|
615
|
-
|
|
616
|
-
attributes[attr_name] = attribute
|
|
617
|
-
|
|
618
|
-
# setter
|
|
619
|
-
define_method("#{attr_name}=") do |value|
|
|
620
|
-
self[attr_name] = value
|
|
621
|
-
end
|
|
622
|
-
|
|
623
|
-
# getter
|
|
624
|
-
define_method(attr_name) do
|
|
625
|
-
self[attr_name]
|
|
626
|
-
end
|
|
627
|
-
|
|
628
|
-
# before type-cast getter
|
|
629
|
-
define_method("#{attr_name}_before_type_cast") do
|
|
630
|
-
@_data[attr_name]
|
|
631
|
-
end
|
|
632
|
-
|
|
633
|
-
# dirty tracking methods
|
|
634
|
-
|
|
635
|
-
define_method("#{attr_name}_changed?") do
|
|
636
|
-
attribute_changed?(attr_name)
|
|
637
|
-
end
|
|
638
|
-
|
|
639
|
-
define_method("#{attr_name}_change") do
|
|
640
|
-
attribute_change(attr_name)
|
|
641
|
-
end
|
|
642
|
-
|
|
643
|
-
define_method("#{attr_name}_was") do
|
|
644
|
-
attribute_was(attr_name)
|
|
645
|
-
end
|
|
646
|
-
|
|
647
|
-
define_method("#{attr_name}_will_change!") do
|
|
648
|
-
attribute_will_change!(attr_name)
|
|
649
|
-
end
|
|
650
|
-
|
|
651
|
-
define_method("reset_#{attr_name}!") do
|
|
652
|
-
reset_attribute!(attr_name)
|
|
653
|
-
end
|
|
654
|
-
|
|
655
|
-
attribute
|
|
656
|
-
|
|
657
|
-
end
|
|
658
|
-
|
|
659
|
-
# @api private
|
|
660
|
-
def remove_attribute(attribute)
|
|
661
|
-
send(:remove_method, attribute.name)
|
|
662
|
-
send(:remove_method, "#{attribute.name}=")
|
|
663
|
-
send(:remove_method, "#{attribute.name}_before_type_cast")
|
|
664
|
-
send(:remove_method, "#{attribute.name}_changed?")
|
|
665
|
-
send(:remove_method, "#{attribute.name}_change")
|
|
666
|
-
send(:remove_method, "#{attribute.name}_was")
|
|
667
|
-
send(:remove_method, "#{attribute.name}_will_change!")
|
|
668
|
-
send(:remove_method, "reset_#{attribute.name}!")
|
|
669
|
-
validators.each do |validator|
|
|
670
|
-
validator.attribute_names.delete(attribute.name)
|
|
671
|
-
end
|
|
672
|
-
attributes.delete(attribute.name)
|
|
673
|
-
end
|
|
674
|
-
|
|
675
|
-
private
|
|
676
|
-
|
|
677
|
-
def create_impl attributes = {}, create_method = :create, save_method = :save
|
|
678
|
-
if attributes.is_a?(Array)
|
|
679
|
-
attributes.map {|attr| send(create_method, attr) }
|
|
680
|
-
else
|
|
681
|
-
obj = new(attributes)
|
|
682
|
-
obj.send(save_method)
|
|
683
|
-
obj
|
|
684
|
-
end
|
|
685
|
-
end
|
|
686
|
-
|
|
687
|
-
end
|
|
688
|
-
end
|
|
689
|
-
end
|
|
690
|
-
end
|