blest 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +47 -56
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0a8f112cb397ac2725175231766a0ca838e9ce898180cfc8be6e59e7fa498b8
4
- data.tar.gz: b9f91cdfb82e5058d889fd6abddc8f14248c567567a3cb0acbd673d04b99f84c
3
+ metadata.gz: 7cbe0f3613fd73841d959cad671fb7ec368ff5de50a2e5e874048871070d70b5
4
+ data.tar.gz: 209e015fa2bd51a03476ab597bbc4c4109037cfea52b79904a27f2a54fc1b368
5
5
  SHA512:
6
- metadata.gz: 7fc3d8ae042c5b9dc96cb9fda9edeada1e34c26d1d08e890e72359c74f675e7c874b3c71ec78e4c056a8aaa886081be3374d87a46e22f86fd8689019149a9c8f
7
- data.tar.gz: a862d3210e033fdf7b9d71b6b65b710a169955b49804df64aacfe0aacc73486f28e42a5dbf37994e66fa7a66ade5a39bbb2ecb5984941f5cf2c7284cc87308a8
6
+ metadata.gz: 8d9a2f9db5673835a9d0187374b52be72dd596a5ec9a3744a164cb6aecbefddfa0d96b3cd23bce63a706dd39fcdcde0e2c5f0231cd71086208d34820280b1d05
7
+ data.tar.gz: e5d92953980bfe4a4e9a0d9c6c98db057cb5f5067af87680b2e83b4dc37df7ac52c5c3042697f63e9652dbefd3db2b0740f7c124b1837d330accd4b0360bfd57
data/README.md CHANGED
@@ -15,13 +15,13 @@ For a front-end implementation in React, please visit https://github.com/jhuntde
15
15
  - Single Endpoint - Reduce complexity and improve data privacy
16
16
  - Fully Encrypted - Improve data privacy
17
17
 
18
- <!-- ## Installation
18
+ ## Installation
19
19
 
20
- Install BLEST Python from PyPI.
20
+ Install BLEST Ruby from Rubygems.
21
21
 
22
22
  ```bash
23
- python3 -m pip install blest
24
- ``` -->
23
+ gem install blest
24
+ ```
25
25
 
26
26
  ## Usage
27
27
 
@@ -32,11 +32,9 @@ Use the `create_request_handler` function to create a request handler suitable f
32
32
  ### create_request_handler
33
33
 
34
34
  ```ruby
35
- require 'socket'
35
+ require 'webrick'
36
36
  require 'json'
37
- require './blest.rb'
38
-
39
- server = TCPServer.new('localhost', 8080)
37
+ require 'blest'
40
38
 
41
39
  # Create some middleware (optional)
42
40
  auth_middleware = ->(params, context) {
@@ -65,73 +63,66 @@ router = {
65
63
  # Create a request handler
66
64
  handler = create_request_handler(router)
67
65
 
68
- puts "Server listening on port 8080"
69
-
70
- loop do
71
-
72
- client = server.accept
73
-
74
- request = client.gets
75
- if request.nil?
76
- client.close
77
- else
78
-
79
- method, path, _ = request.split(' ')
80
-
81
- if method != 'POST'
82
- client.puts "HTTP/1.1 405 Method Not Allowed"
83
- client.puts "\r\n"
84
- elsif path != '/'
85
- client.puts "HTTP/1.1 404 Not Found"
86
- client.puts "\r\n"
87
- else
88
- content_length = 0
89
- while line = client.gets
90
- break if line == "\r\n"
91
- content_length = line.split(': ')[1].to_i if line.start_with?('Content-Length')
92
- end
66
+ class HttpRequestHandler < WEBrick::HTTPServlet::AbstractServlet
67
+ def do_OPTIONS(request, response)
68
+ response.status = 200
69
+ response['Access-Control-Allow-Origin'] = '*'
70
+ response['Access-Control-Allow-Methods'] = 'POST, OPTIONS'
71
+ response['Access-Control-Allow-Headers'] = 'Content-Type'
72
+ end
93
73
 
94
- body = client.read(content_length)
95
- data = JSON.parse(body)
74
+ def do_POST(request, response)
75
+ response['Content-Type'] = 'application/json'
76
+ response['Access-Control-Allow-Origin'] = '*'
96
77
 
78
+ # Parse JSON body
79
+ begin
80
+ payload = JSON.parse(request.body)
81
+
82
+ # Define the request context
97
83
  context = {
98
84
  headers: request.headers
99
85
  }
100
86
 
101
- # Use the request handler]
102
- result, error = handler.(data, context)
87
+ # Use the request handler
88
+ result, error = handler.(payload, context)
103
89
 
90
+ # Do something with the result or error
104
91
  if error
105
- response = error.to_json
106
- client.puts "HTTP/1.1 500 Internal Server Error"
107
- client.puts "Content-Type: application/json"
108
- client.puts "Content-Length: #{response.bytesize}"
109
- client.puts "\r\n"
110
- client.puts response
92
+ response_body = error.to_json
93
+ response.status = 500
94
+ response.body = response_body
111
95
  elsif result
112
- response = result.to_json
113
- client.puts "HTTP/1.1 200 OK"
114
- client.puts "Content-Type: application/json"
115
- client.puts "Content-Length: #{response.bytesize}"
116
- client.puts "\r\n"
117
- client.puts response
96
+ response_body = result.to_json
97
+ response.status = 200
98
+ response.body = response_body
118
99
  else
119
- client.puts "HTTP/1.1 204 No Content"
100
+ response.status = 204
120
101
  end
121
- end
122
-
123
- client.close
124
102
 
103
+ rescue JSON::ParserError
104
+ response.status = 400
105
+ response.body = { message: 'Invalid JSON' }.to_json
106
+ end
125
107
  end
126
108
  end
109
+
110
+ # Create WEBrick server
111
+ server = WEBrick::HTTPServer.new(Port: 8000)
112
+
113
+ # Mount custom request handler
114
+ server.mount('/', HttpRequestHandler)
115
+
116
+ trap('INT') { server.shutdown }
117
+
118
+ # Start the server
119
+ server.start
127
120
  ```
128
121
 
129
122
  ### create_http_server
130
123
 
131
124
  ```ruby
132
- require 'socket'
133
- require 'json'
134
- require './blest.rb'
125
+ require 'blest'
135
126
 
136
127
  # Create some middleware (optional)
137
128
  auth_middleware = ->(params, context) {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - JHunt