cloudflared 0.1.0 → 0.1.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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +30 -2
- data/bin/console +5 -1
- data/lib/cloudflared/client.rb +6 -2
- data/lib/cloudflared/config.rb +14 -0
- data/lib/cloudflared/resources/images.rb +2 -2
- data/lib/cloudflared/version.rb +1 -1
- data/lib/cloudflared.rb +33 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d9bb494988767889b7a6389bfb73ab51cbbe0f0ff62ab769db00c2810fa47fc
|
4
|
+
data.tar.gz: 074b5ddbe705f87dfd346147c9a971842d649bb193f4aabd23a8db2217be5864
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8729793b880b6b03e1214493bdb895f2d7c7839c99e8df38669effe4592bd6aae13416ecdd541a21fa5172e3a8c9a48fc8830171e60a40c6dd83a019e9abcb13
|
7
|
+
data.tar.gz: 8a3987f4dc99b8bc29558884adffeb05165ef9e3f933bdf341838e16036537ff09869cc4c2df9f4dc7650c65e682ff3c865669acc2f8146662903922446de165
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -23,23 +23,51 @@ Or install it yourself as:
|
|
23
23
|
|
24
24
|
$ gem install cloudflared
|
25
25
|
|
26
|
+
## Setup
|
27
|
+
|
28
|
+
You will need the following keys from your Cloudflare account:
|
29
|
+
|
30
|
+
|
26
31
|
## Usage
|
27
32
|
|
28
33
|
Working with Cloudflare Images:
|
29
34
|
|
30
35
|
```ruby
|
31
|
-
client = Cloudflared::Client.new(api_key: "foo", account_id: "bar", images_hash: "baz")
|
36
|
+
client = Cloudflared::Client.new(api_key: "foo", account_id: "bar", images_hash: "baz", images_default_hash: "foobar")
|
32
37
|
client.images.delete(file_id: "1234")
|
33
38
|
client.images.details(file_id: "1234")
|
34
39
|
client.images.direct_upload_url
|
35
40
|
client.images.download(file_id: "1234")
|
36
41
|
client.images.list
|
37
|
-
client.images.signed_url(file_id: "1234",
|
42
|
+
client.images.signed_url(file_id: "1234", expiry_seconds: 60 * 15)
|
38
43
|
client.images.stats
|
39
44
|
client.images.update(file_id: "1234", requireSignedURLs: true)
|
40
45
|
client.images.upload(file: "/path/to/file", requireSignedURLs: true)
|
41
46
|
```
|
42
47
|
|
48
|
+
#### Rails and Pre-configured client settings
|
49
|
+
|
50
|
+
If you're using this in rails (or want to pre-configure settings), you can pre-configure the client settings via an initializer by adding the following:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
# config/initializers/cloudflared.rb
|
54
|
+
|
55
|
+
Cloudflared.configure do |config|
|
56
|
+
config.api_key = "key"
|
57
|
+
config.account_id = "key"
|
58
|
+
config.images_hash = "key"
|
59
|
+
config.images_default_key = "key"
|
60
|
+
config.adapter = Faraday.default_adapter # optional, defaults to Faraday.default_adapter
|
61
|
+
end
|
62
|
+
```
|
63
|
+
|
64
|
+
If pre-configured, the client is available via the following shortcut:
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
client = Cloudflared.client
|
68
|
+
client.images.details(file_id: "1234")
|
69
|
+
```
|
70
|
+
|
43
71
|
## Development
|
44
72
|
|
45
73
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/bin/console
CHANGED
@@ -11,7 +11,11 @@ require "cloudflared"
|
|
11
11
|
# require "pry"
|
12
12
|
# Pry.start
|
13
13
|
|
14
|
-
@client = Cloudflared::Client.new(
|
14
|
+
@client = Cloudflared::Client.new(
|
15
|
+
account_id: ENV["CLOUDFLARE_IMAGES_ACCOUNT_ID"],
|
16
|
+
api_key: ENV["CLOUDFLARE_IMAGES_API_KEY"],
|
17
|
+
images_hash: ENV["CLOUDFLARE_IMAGES_HASH"],
|
18
|
+
images_default_key: ENV["CLOUDFLARE_IMAGES_DEFAULT_KEY"])
|
15
19
|
|
16
20
|
require "irb"
|
17
21
|
IRB.start(__FILE__)
|
data/lib/cloudflared/client.rb
CHANGED
@@ -4,7 +4,7 @@ module Cloudflared
|
|
4
4
|
class Client
|
5
5
|
BASE_URL = "https://api.cloudflare.com/client/v4/accounts"
|
6
6
|
|
7
|
-
attr_reader :api_key, :account_id, :adapter, :images_hash
|
7
|
+
attr_reader :api_key, :account_id, :adapter, :images_hash, :images_default_key, :stubs
|
8
8
|
|
9
9
|
# Initializes a new Cloudflare client.
|
10
10
|
#
|
@@ -17,6 +17,9 @@ module Cloudflared
|
|
17
17
|
# @!attribute images_hash
|
18
18
|
# @return [String] The Cloudflare images hash found on the images dashboard. This is used for image delivery urls.
|
19
19
|
#
|
20
|
+
# @!attribute images_default_key
|
21
|
+
# @return [String] The default key for signing private images
|
22
|
+
#
|
20
23
|
# @!attribute adapter
|
21
24
|
# @return [Symbol] The Faraday adapter to use
|
22
25
|
#
|
@@ -24,11 +27,12 @@ module Cloudflared
|
|
24
27
|
# @return [Symbol] Stubs for use in testing
|
25
28
|
#
|
26
29
|
# @return [Cloudflared]
|
27
|
-
def initialize(api_key:, account_id:, images_hash
|
30
|
+
def initialize(api_key:, account_id:, images_hash:, images_default_key:, adapter: Faraday.default_adapter, stubs: nil)
|
28
31
|
@api_key = api_key
|
29
32
|
@adapter = adapter
|
30
33
|
@account_id = account_id
|
31
34
|
@images_hash = images_hash
|
35
|
+
@images_default_key = images_default_key
|
32
36
|
@stubs = stubs
|
33
37
|
end
|
34
38
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Cloudflared
|
2
|
+
# Class used to initialize configuration object.
|
3
|
+
class Config
|
4
|
+
attr_accessor :api_key
|
5
|
+
attr_accessor :account_id
|
6
|
+
attr_accessor :images_hash
|
7
|
+
attr_accessor :images_default_key
|
8
|
+
attr_accessor :adapter
|
9
|
+
attr_accessor :stubs
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -34,13 +34,13 @@ module Cloudflared
|
|
34
34
|
"#{IMAGE_DELIVERY_URL}/#{@client.images_hash}/#{path}"
|
35
35
|
end
|
36
36
|
|
37
|
-
def signed_url(path,
|
37
|
+
def signed_url(path, expiry_seconds: FIFTEEN_MINUTES)
|
38
38
|
# The path uses the image + the file_id (and a variant if passed through)
|
39
39
|
path = path[1..] if path[0] == "/"
|
40
40
|
path = "#{@client.images_hash}/#{path}"
|
41
41
|
|
42
42
|
# Calculate the hexdigest with the leading slash
|
43
|
-
sig = OpenSSL::HMAC.hexdigest("SHA256",
|
43
|
+
sig = OpenSSL::HMAC.hexdigest("SHA256", @client.images_default_key, "/#{path}")
|
44
44
|
|
45
45
|
# Calculate the seconds since the epoch in the future
|
46
46
|
exp = Time.new.to_i + expiry_seconds
|
data/lib/cloudflared/version.rb
CHANGED
data/lib/cloudflared.rb
CHANGED
@@ -4,11 +4,43 @@ require_relative "cloudflared/version"
|
|
4
4
|
|
5
5
|
module Cloudflared
|
6
6
|
autoload :Client, "cloudflared/client"
|
7
|
-
autoload :Error, "cloudflared/error"
|
8
7
|
autoload :Collection, "cloudflared/collection"
|
8
|
+
autoload :Config, "cloudflared/config"
|
9
|
+
autoload :Error, "cloudflared/error"
|
9
10
|
autoload :Object, "cloudflared/object"
|
10
11
|
autoload :Resource, "cloudflared/resource"
|
11
12
|
|
12
13
|
autoload :Image, "cloudflared/objects/image"
|
13
14
|
autoload :ImagesResource, "cloudflared/resources/images"
|
15
|
+
|
16
|
+
# Returns Cloudflared's configuration object.
|
17
|
+
def self.config
|
18
|
+
@config ||= Cloudflared::Config.new
|
19
|
+
end
|
20
|
+
|
21
|
+
# Creates a client instance with pre-configured values
|
22
|
+
def self.client
|
23
|
+
Cloudflared::Client.new(
|
24
|
+
api_key: config.api_key,
|
25
|
+
account_id: config.account_id,
|
26
|
+
images_hash: config.images_hash,
|
27
|
+
images_default_key: config.images_default_key,
|
28
|
+
adapter: config.adapter || Faraday.default_adapter
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Lets you set global configuration options.
|
33
|
+
#
|
34
|
+
# All available options and their defaults are in the example below:
|
35
|
+
# @example Initializer for Rails
|
36
|
+
# Cloudflared.configure do |config|
|
37
|
+
# config.api_key = "key"
|
38
|
+
# config.account_id = "secret"
|
39
|
+
# config.images_hash = "hash"
|
40
|
+
# config.images_default_key = "key"
|
41
|
+
# config.adapter = Faraday.default_adapter
|
42
|
+
# end
|
43
|
+
def self.configure(&block)
|
44
|
+
yield(config) if block
|
45
|
+
end
|
14
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudflared
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- devynbit
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01
|
11
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- lib/cloudflared.rb
|
88
88
|
- lib/cloudflared/client.rb
|
89
89
|
- lib/cloudflared/collection.rb
|
90
|
+
- lib/cloudflared/config.rb
|
90
91
|
- lib/cloudflared/error.rb
|
91
92
|
- lib/cloudflared/object.rb
|
92
93
|
- lib/cloudflared/objects/image.rb
|