cloudflared 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|