deferred_request 0.0.1 → 1.0.0
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/README.md +1 -1
- data/app/models/deferred_request/deferred_request.rb +22 -18
- data/config/routes.rb +0 -1
- data/lib/deferred_request/version.rb +1 -1
- data/lib/deferred_request.rb +2 -0
- metadata +20 -8
- data/app/controllers/deferred_request/test_controller.rb +0 -26
- data/app/helpers/deferred_request/test_helper.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd9cbe479d0ec2429ded46aacbdd786b3ba69b19dcbc32609ca7875bb51b97a5
|
4
|
+
data.tar.gz: fbdb8dee9068fb03bc4e5b6385968be177ad8b6e0d15149304d5876b0ec20bdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db92fd506d4170270ba261ca9c3909809fd3b411b36b6141d7f207840e60abcb72fb2862b934de4c5ea72e8d7ac99453e6fe97f5e0766b95ca48435d551f9b5d
|
7
|
+
data.tar.gz: 0bd4f541e34984dd95f19942577e5a968c8f9b2fadf8bcf6151982fa8aea970259bf41264279aa47eb9d67abe457444973881b7a22f94652016349976ed5feb4
|
data/README.md
CHANGED
@@ -45,7 +45,7 @@ def status_callback
|
|
45
45
|
head :ok
|
46
46
|
|
47
47
|
# Then queue the request to run later
|
48
|
-
deferred_request = DeferredRequest::DeferredRequest.from_request(request
|
48
|
+
deferred_request = DeferredRequest::DeferredRequest.from_request(request)
|
49
49
|
deferred_request.save!
|
50
50
|
|
51
51
|
deferred_request.peform_later
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module DeferredRequest
|
2
2
|
class DeferredRequest < ApplicationRecord
|
3
|
-
serialize :routing, JSON
|
4
|
-
serialize :request, JSON
|
3
|
+
serialize :routing, JSON
|
4
|
+
serialize :request, JSON
|
5
5
|
|
6
6
|
store_accessor :routing, "controller", "action"
|
7
7
|
store_accessor :request, "url", "method", "headers", "params", "remote_ip"
|
@@ -13,10 +13,9 @@ module DeferredRequest
|
|
13
13
|
def self.from_request(request)
|
14
14
|
deferred_request = DeferredRequest.new
|
15
15
|
|
16
|
-
debugger
|
17
16
|
deferred_request.controller = request.controller_class
|
18
17
|
deferred_request.action = request.params["action"]
|
19
|
-
|
18
|
+
|
20
19
|
deferred_request.url = request.url
|
21
20
|
deferred_request.method = request.method
|
22
21
|
deferred_request.headers = get_headers(request)
|
@@ -26,37 +25,42 @@ module DeferredRequest
|
|
26
25
|
deferred_request
|
27
26
|
end
|
28
27
|
|
28
|
+
def self.perform_later_from_request!(request)
|
29
|
+
deferred_request = DeferredRequest.from_request(request)
|
30
|
+
deferred_request.save!
|
31
|
+
|
32
|
+
deferred_request.perform_later
|
33
|
+
end
|
34
|
+
|
29
35
|
def perform_later
|
30
|
-
DeferredRequestJob.perform_later(
|
36
|
+
DeferredRequestJob.perform_later(id)
|
31
37
|
end
|
32
38
|
|
33
39
|
def perform!
|
34
40
|
begin
|
35
41
|
self.status = :processing
|
36
|
-
|
42
|
+
save!
|
37
43
|
|
38
|
-
klass =
|
44
|
+
klass = controller.constantize.new
|
39
45
|
|
40
|
-
self.result = klass.try("#{
|
46
|
+
self.result = klass.try("#{action}_deferred".to_sym, self)
|
41
47
|
self.status = :complete
|
42
48
|
rescue => e
|
43
49
|
Rails.logger.error("DeferredRequest::DeferredRequestJob: #{e.message}")
|
44
50
|
self.result = e.message
|
45
51
|
self.status = :error
|
46
52
|
end
|
47
|
-
|
48
|
-
self.save!
|
49
|
-
end
|
50
53
|
|
51
|
-
|
54
|
+
save!
|
55
|
+
end
|
52
56
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end
|
57
|
+
def self.get_headers(request)
|
58
|
+
# Get the request headers from the request
|
59
|
+
{}.tap do |t|
|
60
|
+
request.headers.each do |key, value|
|
61
|
+
t[key] = value if key.downcase.starts_with?("http")
|
59
62
|
end
|
60
63
|
end
|
64
|
+
end
|
61
65
|
end
|
62
66
|
end
|
data/config/routes.rb
CHANGED
data/lib/deferred_request.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deferred_request
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Miller
|
@@ -14,16 +14,30 @@ dependencies:
|
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 6.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 6.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: standardrb
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
description: A simple library to defer http requests until you can actually process
|
28
42
|
them. (Think webhooks. Stripe webhooks, Twilio status callbacks, ect.)
|
29
43
|
email:
|
@@ -38,9 +52,7 @@ files:
|
|
38
52
|
- app/assets/config/deferred_request_manifest.js
|
39
53
|
- app/assets/stylesheets/deferred_request/application.css
|
40
54
|
- app/controllers/deferred_request/application_controller.rb
|
41
|
-
- app/controllers/deferred_request/test_controller.rb
|
42
55
|
- app/helpers/deferred_request/application_helper.rb
|
43
|
-
- app/helpers/deferred_request/test_helper.rb
|
44
56
|
- app/jobs/deferred_request/application_job.rb
|
45
57
|
- app/jobs/deferred_request/deferred_request_job.rb
|
46
58
|
- app/mailers/deferred_request/application_mailer.rb
|
@@ -75,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
87
|
- !ruby/object:Gem::Version
|
76
88
|
version: '0'
|
77
89
|
requirements: []
|
78
|
-
rubygems_version: 3.2.
|
90
|
+
rubygems_version: 3.2.3
|
79
91
|
signing_key:
|
80
92
|
specification_version: 4
|
81
93
|
summary: Deferred Request
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module DeferredRequest
|
2
|
-
class TestController < ApplicationController
|
3
|
-
skip_before_action :verify_authenticity_token
|
4
|
-
|
5
|
-
def status_callback
|
6
|
-
# We can go ahead and give a :ok response (fast and snappy)
|
7
|
-
head :ok
|
8
|
-
|
9
|
-
# Then queue the request to run later
|
10
|
-
deferred_request = DeferredRequest::DeferredRequest.from_request(request, params)
|
11
|
-
deferred_request.save!
|
12
|
-
|
13
|
-
deferred_request.peform_later
|
14
|
-
end
|
15
|
-
|
16
|
-
def status_callback_deferred(deferred_request)
|
17
|
-
# do some actual processing
|
18
|
-
if deferred_request.params["SmsStatus"] == "delivered"
|
19
|
-
# mark message as delivered
|
20
|
-
end
|
21
|
-
|
22
|
-
# return a status and it will be saved to the database
|
23
|
-
true
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|