architect-functions 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85c975a689ad0c7de8383ccac7b833dd1ee06824d520f1953e80387a1aa4d733
4
- data.tar.gz: bb81e2056bde2334e56960da6cbf0235d15a477c060db831d11be609e930b7f8
3
+ metadata.gz: 9f531e06892a92e481e3e7673ead66d00f142e7523ef919c0dfbceb4ff46ddb3
4
+ data.tar.gz: 7588bf9ee9820135d97aece411821c3855c604fe95d5488f745f19b35d1c0b03
5
5
  SHA512:
6
- metadata.gz: a2637583f0dc97895e4aa3a1bf36af31205284b52e131b00afa64dc71e8d293e17454e79ae2b83497f465850ef4e0b19f5c6706c90bba6ac1092006dbe0ac3d5
7
- data.tar.gz: bc1b2b84eccdef036749f764edd74a15cc57f746b2b41c04fdf1b8b625185ee63a61ec5f7607d1eb26b848b0720db5ff14fe2eb87ae5ea5ee7f0d071328332ea
6
+ metadata.gz: 826d0372f2767e74b815bcc9d6d67521225184a34fe448ae7c0a135a0ab494c6c34f1724eae46c9dc6ecc9994ed6e57d2bd038cb1d35f93e6b496992bc2167b7
7
+ data.tar.gz: 1e4ae45aa9f2700085bb6e7a307e9737c25b87793c39ce8964d17138ad903dcaf9568337db5302097ef56fe99cd60ca4e67927e27e5ac833eb684275b0119b19
@@ -0,0 +1,21 @@
1
+ require 'aws-sdk-sns'
2
+ require 'json'
3
+ require_relative 'reflect'
4
+
5
+ module Arc
6
+ module Events
7
+ ##
8
+ # publish a message to an SNS Topic
9
+ #
10
+ def self.publish(params)
11
+ name = params[:name]
12
+ payload = params[:payload]
13
+ raise ArgumentError, 'missing name' unless name
14
+ raise ArgumentError, 'missing payload' unless payload
15
+ arc = Arc.reflect
16
+ arn = arc['events'][name]
17
+ sns = Aws::SNS::Client.new
18
+ sns.publish :topic_arn=> arn, :message=> JSON.generate(payload)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ module Arc
2
+ module HTTP
3
+ module Session
4
+ def self.read()
5
+ end
6
+ def self.write()
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ require 'aws-sdk-sqs'
2
+ require 'json'
3
+ require_relative 'reflect'
4
+
5
+ module Arc
6
+ module Queues
7
+ ##
8
+ # publish a message to an SQS Queue
9
+ #
10
+ def self.publish(params)
11
+ name = params[:name]
12
+ payload = params[:payload]
13
+ raise ArgumentError, 'missing name' unless name
14
+ raise ArgumentError, 'missing payload' unless payload
15
+ arc = Arc.reflect
16
+ url = arc['queues'][name]
17
+ sqs = Aws::SQS::Client.new
18
+ sqs.send_message({
19
+ queue_url: url,
20
+ delay_seconds: 0,
21
+ message_body: JSON.generate(payload)
22
+ })
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ require 'aws-sdk-ssm'
2
+
3
+ module Arc
4
+ ##
5
+ # Returns a hash of the current Architect runtime resources
6
+ #
7
+ def self.reflect
8
+ client = Aws::SSM::Client.new
9
+ res = client.get_parameters_by_path({
10
+ path: '/' + ENV['ARC_CLOUDFORMATION'],
11
+ recursive: true,
12
+ })
13
+ res.parameters.reduce({}) do |result, param|
14
+ bits = param.name.split('/').reject { |c| c.empty? }
15
+ type = bits[1] # events, queues, tables, ws, static
16
+ key = bits[2] # the name in the .arc file
17
+ val = param.value # the name generated by cfn
18
+ result[type] = {} unless result.key?(type)
19
+ result[type][key] = val
20
+ result
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'reflect'
2
+
3
+ module Arc
4
+ module Tables
5
+ ##
6
+ # returns the physicalID for the given table name
7
+ #
8
+ def self.name(table)
9
+ arc = Arc.reflect
10
+ arc['tables'][table]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ require 'aws-sdk-apigateway'
2
+ require 'json'
3
+ require_relative 'reflect'
4
+
5
+ module Arc
6
+ module WS
7
+ ##
8
+ # send a message to a web socket
9
+ #
10
+ def self.send(params)
11
+ id = params[:id]
12
+ payload = params[:payload]
13
+ raise ArgumentError, 'missing id' unless id
14
+ raise ArgumentError, 'missing payload' unless payload
15
+ arc = Arc.reflect
16
+ url = arc['ws']['https']
17
+ api = Aws::ApiGatewayManagementApi::Client.new({endpoint: url})
18
+ api.postToConnection({
19
+ connection_id: id,
20
+ data: JSON.stringify(payload)
21
+ })
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: architect-functions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian LeRoux
@@ -10,13 +10,19 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2019-01-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Runtime helpers for Architect Lambdas
13
+ description: Runtime helpers for AWS Lambda functions provisioned with Architect
14
14
  email: b@brian.io
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/architect/events.rb
19
20
  - lib/architect/functions.rb
21
+ - lib/architect/http.rb
22
+ - lib/architect/queues.rb
23
+ - lib/architect/reflect.rb
24
+ - lib/architect/tables.rb
25
+ - lib/architect/ws.rb
20
26
  homepage: http://rubygems.org/gems/architect-functions
21
27
  licenses:
22
28
  - Apache-2.0