cocoapods-s3 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []