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