clientside_aws 0.0.23 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/clientside_aws.gemspec +1 -1
- data/examples/dockerized/app/Gemfile +0 -2
- data/examples/dockerized/app/index.rb +9 -2
- data/examples/dockerized/app/views/index.erb +5 -5
- data/examples/dockerized/docker-compose.yml +4 -3
- data/examples/local/test.rb +9 -23
- data/lib/clientside_aws/version.rb +1 -1
- data/spec/dynamodb_spec.rb +23 -24
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa4605924db8e40740bbe014617f533b9a0ddc50
|
4
|
+
data.tar.gz: 4c9c9f6e90281a6dbff7e03d9d1851f5d950d501
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 186e49b50aea5a13d9819213d82942c07d5dcbe6bb6203e22b982515503a557580f7675397760fb157f6e903c29a7cbec756fa4a51cdb5103a6f0a18a994108b
|
7
|
+
data.tar.gz: 52f690874266a4bec8892b33e8a4099c8213a6872ababbd54041f9eecf6bab39d70b4c369cb0176e3e91562034925c3da1dd5f2219b0487780d597bf369fabf3
|
data/Gemfile
CHANGED
@@ -6,7 +6,7 @@ source 'https://rubygems.org'
|
|
6
6
|
# not for our Gemfile which points clients to our docker image
|
7
7
|
gem 'aws-sdk', '2.10.26'
|
8
8
|
gem 'aws-sdk-v1', '1.66.0'
|
9
|
-
gem 'builder', '3.
|
9
|
+
gem 'builder', '~> 3.2'
|
10
10
|
gem 'httparty', '0.15.6'
|
11
11
|
gem 'json', '1.8.6'
|
12
12
|
gem 'json_pure', '1.8.6'
|
@@ -15,8 +15,8 @@ gem 'pry'
|
|
15
15
|
gem 'rack', '1.5.2'
|
16
16
|
gem 'rack-cors', '0.2.9', require: 'rack/cors'
|
17
17
|
gem 'rack-test', '0.5.7'
|
18
|
-
gem 'redis', '
|
19
|
-
gem 'rspec', '
|
18
|
+
gem 'redis', '~> 4.0'
|
19
|
+
gem 'rspec', '~> 3.0'
|
20
20
|
gem 'sinatra', '1.4.8'
|
21
21
|
gem 'sinatra-reloader', '0.5.0'
|
22
22
|
gem 'webmock', '3.1.0'
|
data/clientside_aws.gemspec
CHANGED
@@ -19,12 +19,19 @@ post '/image' do
|
|
19
19
|
|
20
20
|
bucket = Aws::S3::Resource.new.bucket('test')
|
21
21
|
|
22
|
-
# Now, store
|
22
|
+
# Now, store an image
|
23
23
|
object = bucket.object('image')
|
24
|
-
|
24
|
+
file = File.open(params[:image][:tempfile].path, 'rb')
|
25
|
+
image = file.read
|
26
|
+
file.close
|
27
|
+
|
28
|
+
object.put(body: image, content_type: 'image/jpeg')
|
29
|
+
|
30
|
+
redirect '/'
|
25
31
|
end
|
26
32
|
|
27
33
|
get '/image' do
|
34
|
+
bucket = Aws::S3::Resource.new.bucket('test')
|
28
35
|
object = bucket.object('image')
|
29
36
|
|
30
37
|
content_type 'image/jpeg'
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<html>
|
2
2
|
<head>
|
3
|
-
<title>
|
3
|
+
<title>clientside_aws test app</title>
|
4
4
|
</head>
|
5
5
|
<body>
|
6
|
-
<
|
7
|
-
Upload an image
|
8
|
-
</
|
6
|
+
<h1>
|
7
|
+
Upload an image to clientside_aws S3
|
8
|
+
</h1>
|
9
9
|
<p>
|
10
10
|
<form method='post' action='/image' enctype='multipart/form-data'>
|
11
11
|
File: <input type="file" name="image" id="image"/>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
</form>
|
14
14
|
</p>
|
15
15
|
<hr>
|
16
|
-
<
|
16
|
+
<h1>Here is the image, loaded directly from clientside_aws S3:</h1>
|
17
17
|
<image src='/image' />
|
18
18
|
</body>
|
19
19
|
</html>
|
@@ -1,15 +1,17 @@
|
|
1
1
|
version: '2'
|
2
2
|
services:
|
3
|
-
app:
|
3
|
+
app:
|
4
4
|
image: clientside_aws_test_app
|
5
5
|
container_name: clientside_aws_test_app
|
6
6
|
links:
|
7
7
|
- aws
|
8
|
-
build:
|
8
|
+
build:
|
9
9
|
context: ./
|
10
10
|
dockerfile: ./Dockerfile
|
11
11
|
command:
|
12
12
|
/sbin/my_init
|
13
|
+
ports:
|
14
|
+
- '4567'
|
13
15
|
aws:
|
14
16
|
image: clientside_aws:latest
|
15
17
|
container_name: clientside_aws_test_aws
|
@@ -19,4 +21,3 @@ services:
|
|
19
21
|
command: /sbin/my_init
|
20
22
|
ports:
|
21
23
|
- '4567'
|
22
|
-
|
data/examples/local/test.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'aws-sdk-v1'
|
3
|
-
require 'aws-sdk'
|
4
2
|
require 'clientside_aws'
|
5
|
-
require 'pry'
|
6
3
|
|
7
4
|
ClientsideAws.configure do |config|
|
8
5
|
config.host = 'localhost'
|
@@ -16,30 +13,19 @@ config = { region: 'us-mockregion-1',
|
|
16
13
|
Aws.config.update(config)
|
17
14
|
AWS.config(config)
|
18
15
|
|
16
|
+
s3 = Aws::S3::Client.new
|
17
|
+
s3.create_bucket(bucket: 'test')
|
19
18
|
|
20
|
-
|
21
|
-
# s3.create_bucket(bucket: 'test')
|
19
|
+
bucket = Aws::S3::Resource.new.bucket('test')
|
22
20
|
|
23
|
-
#
|
21
|
+
# Now, store a JSON document
|
22
|
+
json_value = { foo: 'bar' }.to_json
|
23
|
+
object = bucket.object('test.json')
|
24
|
+
object.put(body: json_value, content_type: 'application/json')
|
24
25
|
|
25
|
-
|
26
|
-
# json_value = { foo: 'bar' }.to_json
|
27
|
-
# object = bucket.object('test.json')
|
28
|
-
# object.put(body: json_value, content_type: 'application/json')
|
26
|
+
object = bucket.object('test.json')
|
29
27
|
|
30
|
-
|
28
|
+
puts object.get.body.read
|
31
29
|
|
32
|
-
# puts object.get.body.read
|
33
|
-
|
34
|
-
AWS::ElasticTranscoder::Client.new.create_pipeline(
|
35
|
-
name: 'SCRUFF_CHAT_VIDEO',
|
36
|
-
input_bucket: 'foo',
|
37
|
-
output_bucket: 'bar',
|
38
|
-
role: '...',
|
39
|
-
notifications: {
|
40
|
-
progressing: '',
|
41
|
-
completed: '',
|
42
|
-
warning: '',
|
43
|
-
error: '' })
|
44
30
|
|
45
31
|
puts "Done"
|
data/spec/dynamodb_spec.rb
CHANGED
@@ -28,7 +28,6 @@ describe 'Profiles Spec' do
|
|
28
28
|
|
29
29
|
expect(dynamo_db.tables.to_a.length).to eq 1
|
30
30
|
expect(dynamo_db.tables['test1'].exists?).to be true
|
31
|
-
# dynamo_db.tables['test_fake'].exists?.should be_false # this test fails for some reason
|
32
31
|
|
33
32
|
test_table.hash_key = [:creator_id, :number]
|
34
33
|
test_table.range_key = [:date, :number]
|
@@ -203,14 +202,14 @@ describe 'Profiles Spec' do
|
|
203
202
|
ct = 0
|
204
203
|
results = visitors_table.items.query(hash_value: 1, scan_index_forward: false)
|
205
204
|
results.to_a.each do |item|
|
206
|
-
item.attributes['target_id'].to_i.
|
205
|
+
expect(item.attributes['target_id'].to_i).to eq 10 + ct
|
207
206
|
ct += 1
|
208
207
|
end
|
209
208
|
|
210
209
|
ct = 0
|
211
210
|
results = visitors_table.items.query(hash_value: 1)
|
212
211
|
results.to_a.each do |item|
|
213
|
-
item.attributes['target_id'].to_i.
|
212
|
+
expect(item.attributes['target_id'].to_i).to eq 20 - ct
|
214
213
|
ct += 1
|
215
214
|
end
|
216
215
|
|
@@ -226,7 +225,7 @@ describe 'Profiles Spec' do
|
|
226
225
|
visitors2_table.items.put(profile_id: idx, date_profile: "#{timestamp}:#{profile_id}", target_id: profile_id)
|
227
226
|
end
|
228
227
|
results = visitors2_table.items.query(hash_value: 1)
|
229
|
-
results.to_a.length.
|
228
|
+
expect(results.to_a.length).to eq 1
|
230
229
|
end
|
231
230
|
|
232
231
|
it 'v2: test vistors' do
|
@@ -421,7 +420,7 @@ describe 'Profiles Spec' do
|
|
421
420
|
]
|
422
421
|
}
|
423
422
|
})
|
424
|
-
results[:member].length.
|
423
|
+
expect(results[:member].length).to eq 1
|
425
424
|
|
426
425
|
dynamo_db.delete_item(table_name: 'cd_table', key: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' } })
|
427
426
|
|
@@ -443,7 +442,7 @@ describe 'Profiles Spec' do
|
|
443
442
|
]
|
444
443
|
}
|
445
444
|
})
|
446
|
-
results[:member].length.
|
445
|
+
expect(results[:member].length.zero?).to be true
|
447
446
|
end
|
448
447
|
|
449
448
|
it 'v2: should handle create, delete' do
|
@@ -583,25 +582,25 @@ describe 'Profiles Spec' do
|
|
583
582
|
dynamo_db.put_item(table_name: 'visited_by', item: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' },
|
584
583
|
'timestamp' => { 'n' => 3.to_s } })
|
585
584
|
item = dynamo_db.get_item(table_name: 'visited_by', key: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' } })
|
586
|
-
item.
|
587
|
-
item[:item]['profile_id'][:n].
|
588
|
-
item[:item]['timestamp'][:n].
|
585
|
+
expect(item).not_to be_nil
|
586
|
+
expect(item[:item]['profile_id'][:n]).to eq '1'
|
587
|
+
expect(item[:item]['timestamp'][:n]).to eq '3'
|
589
588
|
|
590
589
|
# 2 visits 1 again
|
591
590
|
dynamo_db.put_item(table_name: 'visited_by', item: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' },
|
592
591
|
'timestamp' => { 'n' => 4.to_s } })
|
593
592
|
item = dynamo_db.get_item(table_name: 'visited_by', key: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' } })
|
594
|
-
item.
|
595
|
-
item[:item]['profile_id'][:n].
|
596
|
-
item[:item]['timestamp'][:n].
|
593
|
+
expect(item).not_to be_nil
|
594
|
+
expect(item[:item]['profile_id'][:n]).to eq '1'
|
595
|
+
expect(item[:item]['timestamp'][:n]).to eq '4'
|
597
596
|
|
598
597
|
# 2 visits 1 a third time, with timestamp of now
|
599
598
|
dynamo_db.put_item(table_name: 'visited_by', item: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' },
|
600
599
|
'timestamp' => { 'n' => now.to_s } })
|
601
600
|
|
602
601
|
item = dynamo_db.get_item(table_name: 'visited_by', key: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '2' } })
|
603
|
-
item.
|
604
|
-
item[:item]['profile_id'][:n].
|
602
|
+
expect(item).not_to be_nil
|
603
|
+
expect(item[:item]['profile_id'][:n]).to eq '1'
|
605
604
|
|
606
605
|
item = dynamo_db.get_item(table_name: 'visited_by', key: { 'profile_id' => { 'n' => '2' }, 'visitor_id' => { 'n' => '2' } })
|
607
606
|
expect(item[:item]).to be_nil
|
@@ -621,7 +620,7 @@ describe 'Profiles Spec' do
|
|
621
620
|
]
|
622
621
|
}
|
623
622
|
})
|
624
|
-
results[:member].length.
|
623
|
+
expect(results[:member].length).to eq 1
|
625
624
|
|
626
625
|
# Try the local secondary index
|
627
626
|
results = dynamo_db.query(table_name: 'visited_by', index_name: 'ls_index', select: 'ALL_PROJECTED_ATTRIBUTES', key_conditions: {
|
@@ -638,7 +637,7 @@ describe 'Profiles Spec' do
|
|
638
637
|
]
|
639
638
|
}
|
640
639
|
})
|
641
|
-
results[:member].length.
|
640
|
+
expect(results[:member].length).to eq 1
|
642
641
|
|
643
642
|
results = dynamo_db.query(table_name: 'visited_by', index_name: 'ls_index', select: 'ALL_PROJECTED_ATTRIBUTES', key_conditions: {
|
644
643
|
'profile_id' => {
|
@@ -654,7 +653,7 @@ describe 'Profiles Spec' do
|
|
654
653
|
]
|
655
654
|
}
|
656
655
|
})
|
657
|
-
results[:member].length.
|
656
|
+
expect(results[:member].length).to eq 0
|
658
657
|
|
659
658
|
dynamo_db.put_item(table_name: 'visited_by', item: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '3' }, 'timestamp' => { 'n' => Time.now.utc.to_i.to_s } })
|
660
659
|
dynamo_db.put_item(table_name: 'visited_by', item: { 'profile_id' => { 'n' => '1' }, 'visitor_id' => { 'n' => '4' }, 'timestamp' => { 'n' => Time.now.utc.to_i.to_s } })
|
@@ -673,7 +672,7 @@ describe 'Profiles Spec' do
|
|
673
672
|
]
|
674
673
|
}
|
675
674
|
})
|
676
|
-
results[:member].length.
|
675
|
+
expect(results[:member].length).to eq 3
|
677
676
|
|
678
677
|
# Add some more profiles visited by 2
|
679
678
|
(3...10).each do |idx|
|
@@ -695,9 +694,9 @@ describe 'Profiles Spec' do
|
|
695
694
|
]
|
696
695
|
}
|
697
696
|
})
|
698
|
-
results[:member].length.
|
699
|
-
results[:member].first['profile_id'][:n].
|
700
|
-
results[:member].last['profile_id'][:n].
|
697
|
+
expect(results[:member].length).to eq 8
|
698
|
+
expect(results[:member].first['profile_id'][:n]).to eq '9'
|
699
|
+
expect(results[:member].last['profile_id'][:n]).to eq '1'
|
701
700
|
|
702
701
|
# reverse
|
703
702
|
results = dynamo_db.query(table_name: 'visited_by',
|
@@ -716,9 +715,9 @@ describe 'Profiles Spec' do
|
|
716
715
|
]
|
717
716
|
}
|
718
717
|
})
|
719
|
-
results[:member].length.
|
720
|
-
results[:member].first['profile_id'][:n].
|
721
|
-
results[:member].last['profile_id'][:n].
|
718
|
+
expect(results[:member].length).to eq 8
|
719
|
+
expect(results[:member].first['profile_id'][:n]).to eq '1'
|
720
|
+
expect(results[:member].last['profile_id'][:n]).to eq '9'
|
722
721
|
end
|
723
722
|
|
724
723
|
it 'v2: should handle local secondary indexes' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clientside_aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perry Street Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
145
|
+
version: '3.0'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '3.0'
|
153
153
|
description: This code is meant to be used by developers who are attempting to build
|
154
154
|
web applications on AWS but wish to run client-side testing and validation.
|
155
155
|
email:
|