cocoapods-s3 1.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 453ad4856a240669e99edadfa04294dce7eb86b1c4dabe22ac5143b643640060
4
+ data.tar.gz: 21266de8b1233e93aa9a7c48eb22615d9bf5778c348011ee59ae5943c4ec2dd1
5
+ SHA512:
6
+ metadata.gz: b42ab92da0c1ab1cc3e3ef7af1c60d5d6e156904efcae60b9276842ff4bc8ca2261383732c65fa56627bad57b6289302f81f9bf54781132ec8eafe58c320db9c
7
+ data.tar.gz: b1d551a6b3981da1b2d0ad821bcae85e14c7ffcb6d4ee91e09e313d0e870b987fdce008950050fcce6547310c78c288675fd8558429c954b4a4d9c9d6a5ec50e
@@ -0,0 +1,19 @@
1
+ require 'cocoapods-s3/s3'
2
+
3
+ module Pod
4
+ module Downloader
5
+ class <<self
6
+ alias_method :real_download_source, :download_source
7
+ end
8
+
9
+ def self.download_source(target, params)
10
+ source = params[:http]
11
+
12
+ if !source.nil? and source.start_with?('s3')
13
+ params[:http] = Pod::Downloader::S3.sign_url(source)
14
+ end
15
+
16
+ self.real_download_source(target, params)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ require 'cocoapods-s3/s3'
2
+
3
+ module Pod
4
+ module ExternalSources
5
+ class PodspecSource < AbstractExternalSource
6
+ alias parent_podspec_uri podspec_uri
7
+
8
+ def podspec_uri
9
+ uri = parent_podspec_uri
10
+
11
+ if uri.start_with?('s3')
12
+ uri = podspec_uri_for_s3(uri)
13
+ end
14
+
15
+ uri
16
+ end
17
+
18
+ def podspec_uri_for_s3(uri)
19
+ unless uri.end_with?('.podspec')
20
+ uri = "#{uri}/#{name}.podspec"
21
+ end
22
+
23
+ Pod::Downloader::S3.sign_url(uri)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module CocoapodsS3
2
+ VERSION = "1.0.1"
3
+ end
@@ -0,0 +1,87 @@
1
+ require 'aws-sdk-s3'
2
+
3
+ module Pod
4
+ module Downloader
5
+ class S3
6
+ @_access_key = nil
7
+ @_secret_key = nil
8
+ @_region = nil
9
+ @_client = nil
10
+
11
+ def self.set_credentials(access_key, secret_key, region: 'us-east-1')
12
+ @_access_key = access_key
13
+ @_secret_key = secret_key
14
+ @_region = region || 'us-east-1'
15
+
16
+ # Reset the client so it will be recreated with the new credentials
17
+ # the next time that it is used.
18
+ @_client = nil
19
+ end
20
+
21
+ def self.get_client
22
+ @_client ||= Aws::S3::Client.new(
23
+ region: @_region,
24
+ access_key_id: @_access_key,
25
+ secret_access_key: @_secret_key,
26
+ )
27
+ end
28
+
29
+ def self.sign_url(url)
30
+ bucket, key = _slice_url(url)
31
+
32
+ Aws::S3::Presigner.new(client: get_client).presigned_url(
33
+ :get_object, bucket: bucket, key: key, expires_in: 120
34
+ )
35
+ end
36
+
37
+ def self.list_objects(url: nil, bucket: nil, key: nil)
38
+ bucket, key = _get_bucket_and_key(url, bucket, key)
39
+
40
+ unless key.end_with? '/'
41
+ key = "#{key}/"
42
+ end
43
+
44
+ get_client.list_objects_v2({
45
+ bucket: bucket,
46
+ prefix: key,
47
+ delimiter: "/",
48
+ })
49
+ end
50
+
51
+ def self.get_object(target: nil, url: nil, bucket: nil, key: nil)
52
+ bucket, key = _get_bucket_and_key(url, bucket, key)
53
+
54
+ response = get_client.get_object({
55
+ response_target: target,
56
+ bucket: bucket,
57
+ key: key,
58
+ })
59
+
60
+ if target.nil?
61
+ return response.body.string
62
+ end
63
+ end
64
+
65
+ def self._get_bucket_and_key(url, bucket, key)
66
+ unless url.nil?
67
+ return _slice_url(url)
68
+ end
69
+
70
+ return bucket, key
71
+ end
72
+
73
+ def self._slice_url(url)
74
+ # Remove s3:// substring and split by /
75
+ parts = url[5..-1].split('/')
76
+
77
+ [
78
+ # bucket: The first element in the url is the bucket.
79
+ parts[0],
80
+
81
+ # key: The rest of components in the url are the key of the object to download.
82
+ parts[1..-1].join('/')
83
+ ]
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1 @@
1
+ require 'cocoapods-s3/gem_version'
@@ -0,0 +1,14 @@
1
+ require 'cocoapods-s3/downloader'
2
+ require 'cocoapods-s3/external_sources/podspec_source'
3
+
4
+ def set_aws_credentials(access_key:, secret_key:, region: 'us-east-1')
5
+ Pod::Downloader::S3.set_credentials access_key, secret_key, :region => region
6
+ end
7
+
8
+ def get_s3_object(url:, target: nil)
9
+ Pod::Downloader::S3.get_object :url => url, :target => target
10
+ end
11
+
12
+ def list_s3_objects(url:)
13
+ Pod::Downloader::S3.list_objects :url => url
14
+ end
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cocoapods-s3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - PlayON Network Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-06-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk-s3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1'
55
+ description: This Cocoapods plugin allows you to use dependencies from a bucket in
56
+ AWS S3.
57
+ email:
58
+ - devs@playon.network
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - lib/cocoapods-s3.rb
64
+ - lib/cocoapods-s3/downloader.rb
65
+ - lib/cocoapods-s3/external_sources/podspec_source.rb
66
+ - lib/cocoapods-s3/gem_version.rb
67
+ - lib/cocoapods-s3/s3.rb
68
+ - lib/cocoapods_plugin.rb
69
+ homepage: https://playon.network
70
+ licenses:
71
+ - Apache-2.0
72
+ metadata: {}
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ requirements: []
88
+ rubygems_version: 3.2.3
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: This Cocoapods plugin allows you to use dependencies from a bucket in AWS
92
+ S3.
93
+ test_files: []