pdsdk 0.3.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 +7 -0
- data/.gitignore +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +34 -0
- data/README.md +29 -0
- data/lib/pdsdk/base.rb +83 -0
- data/lib/pdsdk/clients/base.rb +4 -0
- data/lib/pdsdk/logger.rb +18 -0
- data/lib/pdsdk/version.rb +3 -0
- data/lib/pdsdk.rb +1 -0
- data/pdsdk.gemspec +16 -0
- metadata +68 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e6e27cba82c9da8c61a3346c8cb3396095dc56f075fc0af2fdcd76e7e7b2d564
|
4
|
+
data.tar.gz: 0df1c31b925550e9632dc39c5c22e63925aadf8b8b5e51cd966ee77181395f03
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 667976438fad199ff9d465a79ee022d040c5f5a160fe45757870b9ba05e546490710d18aafdeae550aa02b0f0badeaa56786550ce0f2eee2cff58b85813bd2d2
|
7
|
+
data.tar.gz: 1f5cd72717b8223a87715a03c51bb2779b4edf3113c79e575b8c88e3266dd3292feaf7f65868d01d6a18651a0c04468edda39065008d8e39e68982d4b2b91b2d
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.1
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
pipedream (0.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.3)
|
10
|
+
keycutter (1.0.0)
|
11
|
+
rspec (3.8.0)
|
12
|
+
rspec-core (~> 3.8.0)
|
13
|
+
rspec-expectations (~> 3.8.0)
|
14
|
+
rspec-mocks (~> 3.8.0)
|
15
|
+
rspec-core (3.8.0)
|
16
|
+
rspec-support (~> 3.8.0)
|
17
|
+
rspec-expectations (3.8.3)
|
18
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
19
|
+
rspec-support (~> 3.8.0)
|
20
|
+
rspec-mocks (3.8.0)
|
21
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
+
rspec-support (~> 3.8.0)
|
23
|
+
rspec-support (3.8.0)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
keycutter
|
30
|
+
pipedream!
|
31
|
+
rspec
|
32
|
+
|
33
|
+
BUNDLED WITH
|
34
|
+
1.17.2
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# sdk:ruby
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
require "pdsdk"
|
5
|
+
|
6
|
+
Pdsdk.send_event(API_KEY, hello: "world")
|
7
|
+
|
8
|
+
# with exports
|
9
|
+
Pdsdk.send_event(API_KEY, {
|
10
|
+
hello: "world"
|
11
|
+
}, exports: {
|
12
|
+
event: { hello: "world!" },
|
13
|
+
other_export: "howdy",
|
14
|
+
})
|
15
|
+
```
|
16
|
+
|
17
|
+
If you do not provide an `event` export it will be set to the `raw_event` (first argument). `event` and `raw_event` MUST be a hash or the SDK request will be invalid.
|
18
|
+
|
19
|
+
## Development
|
20
|
+
|
21
|
+
Setup: https://help.github.com/en/articles/configuring-rubygems-for-use-with-github-package-registry#authenticating-to-github-package-registry
|
22
|
+
|
23
|
+
To cut new version (TODO automate this):
|
24
|
+
|
25
|
+
```
|
26
|
+
# update lib/pdsdk/version.rb to $VERSION
|
27
|
+
gem build pdsdk.gemspec
|
28
|
+
gem push pdsdk-$VERSION.gem
|
29
|
+
```
|
data/lib/pdsdk/base.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require "pdsdk/version"
|
2
|
+
require "pdsdk/logger"
|
3
|
+
require "json"
|
4
|
+
|
5
|
+
module Pdsdk
|
6
|
+
class Error < StandardError
|
7
|
+
end
|
8
|
+
|
9
|
+
# TODO share these strings in some json config file across all SDKs?
|
10
|
+
ENV_KEY_PREFIX = "PD_"
|
11
|
+
ENV_SECRET_KEY_KEY = "#{ENV_KEY_PREFIX}SECRET_KEY"
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def logger
|
15
|
+
@logger ||= Logger.new(STDOUT)
|
16
|
+
end
|
17
|
+
|
18
|
+
def logger=(v)
|
19
|
+
@logger = v
|
20
|
+
end
|
21
|
+
|
22
|
+
def bootstrap!
|
23
|
+
logger.info "bootstrapping..."
|
24
|
+
|
25
|
+
@secret_key = ENV[ENV_SECRET_KEY_KEY]
|
26
|
+
if !@secret_key
|
27
|
+
logger.warn "no $#{ENV_SECRET_KEY_KEY} detected, will not sign payloads"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# XXX self.send_message for string and becomes { message } ?
|
32
|
+
def send_event(api_key, raw_event, opts={})
|
33
|
+
hostname = ENV["PD_SDK_HOST"] || "sdk.m.pipedream.net"
|
34
|
+
proto = ENV["PD_SDK_PROTO"] || "https"
|
35
|
+
event = opts[:exports] || {}
|
36
|
+
event[:raw_event] = raw_event
|
37
|
+
if opts[:deployment]
|
38
|
+
_uri = "#{proto}://#{hostname}/pipelines/#{api_key}/deployments/#{opts[:deployment]}/events"
|
39
|
+
else
|
40
|
+
_uri = "#{proto}://#{hostname}/pipelines/#{api_key}/events"
|
41
|
+
end
|
42
|
+
uri = URI(_uri)
|
43
|
+
use_ssl = uri.scheme == "https"
|
44
|
+
@https ||= {}
|
45
|
+
# TODO ensure reconnects if client disconnects
|
46
|
+
@https[_uri] = http ||= Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) # XXX assume https
|
47
|
+
logger.info "going to send event: #{event}" # TODO remove
|
48
|
+
payload = event.to_json
|
49
|
+
headers = {
|
50
|
+
"user-agent" => "pipedream-sdk:ruby/1",
|
51
|
+
"content-type" => "application/json",
|
52
|
+
"x-pd-sdk-version" => Pdsdk::VERSION,
|
53
|
+
}
|
54
|
+
headers["x-pd-sig"] = "sha256=#{OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret_key, payload)}" if @secret_key
|
55
|
+
req = Net::HTTP::Post.new(uri.request_uri, headers)
|
56
|
+
req.body = payload
|
57
|
+
resp = http.request(req)
|
58
|
+
logger.info "received response: #{resp}" # TODO remove
|
59
|
+
# XXX check we get { "success": "ok" } back?
|
60
|
+
resp.code.to_i
|
61
|
+
end
|
62
|
+
|
63
|
+
def load_metadata(metadata_path, merge_data)
|
64
|
+
metadata = {}
|
65
|
+
begin
|
66
|
+
metadata = JSON.parse(File.read(metadata_path))
|
67
|
+
rescue
|
68
|
+
# assume the service is not METADATA'ed, hence LOCAL development
|
69
|
+
branch = `git rev-parse --abbrev-ref HEAD`.strip rescue nil
|
70
|
+
metadata[:branch] = branch if !branch.blank?
|
71
|
+
git_ref = `git rev-parse HEAD`.strip rescue nil
|
72
|
+
metadata[:git_ref] = git_ref if !git_ref.blank?
|
73
|
+
end
|
74
|
+
metadata[:pdsdk_version] = Pdsdk::VERSION
|
75
|
+
metadata[:started_at] = Time.now.to_f
|
76
|
+
metadata[:name] = ENV["PD_METADATA_NAME"] || `hostname`.strip
|
77
|
+
metadata.merge!(merge_data) # XXX deep?
|
78
|
+
metadata
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
Pdsdk.bootstrap!
|
data/lib/pdsdk/logger.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "logger"
|
2
|
+
|
3
|
+
module Pdsdk
|
4
|
+
class Logger < ::Logger
|
5
|
+
LOG_PREFIX = "** [pdsdk] ".freeze
|
6
|
+
PROGNAME = "pdsdk"
|
7
|
+
|
8
|
+
def initialize(*)
|
9
|
+
super
|
10
|
+
@level = ::Logger::INFO
|
11
|
+
original_formatter = ::Logger::Formatter.new
|
12
|
+
@default_formatter = proc do |severity, datetime, _progname, msg|
|
13
|
+
msg = "#{LOG_PREFIX}#{msg}"
|
14
|
+
original_formatter.call(severity, datetime, PROGNAME, msg)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/pdsdk.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "pdsdk/base"
|
data/pdsdk.gemspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
2
|
+
require "pdsdk/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |g|
|
5
|
+
g.name = "pdsdk"
|
6
|
+
g.version = Pdsdk::VERSION
|
7
|
+
g.date = "2019-10-14"
|
8
|
+
g.summary = g.description = "Pipedream SDK"
|
9
|
+
g.authors = ["Pipedream Team"]
|
10
|
+
g.email = "engineering@pipedream.com"
|
11
|
+
g.files = `git ls-files`.split("\n")
|
12
|
+
g.homepage = "https://github.com/PipedreamHQ/sdk/blob/master/ruby"
|
13
|
+
g.license = "MIT"
|
14
|
+
g.add_development_dependency "keycutter"
|
15
|
+
g.metadata = {"github_repo" => "ssh://github.com/PipedreamHQ/sdk"}
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pdsdk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pipedream Team
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-10-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: keycutter
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Pipedream SDK
|
28
|
+
email: engineering@pipedream.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- ".gitignore"
|
34
|
+
- ".ruby-version"
|
35
|
+
- Gemfile
|
36
|
+
- Gemfile.lock
|
37
|
+
- README.md
|
38
|
+
- lib/pdsdk.rb
|
39
|
+
- lib/pdsdk/base.rb
|
40
|
+
- lib/pdsdk/clients/base.rb
|
41
|
+
- lib/pdsdk/logger.rb
|
42
|
+
- lib/pdsdk/version.rb
|
43
|
+
- pdsdk.gemspec
|
44
|
+
homepage: https://github.com/PipedreamHQ/sdk/blob/master/ruby
|
45
|
+
licenses:
|
46
|
+
- MIT
|
47
|
+
metadata:
|
48
|
+
github_repo: ssh://github.com/PipedreamHQ/sdk
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options: []
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
requirements: []
|
64
|
+
rubygems_version: 3.0.1
|
65
|
+
signing_key:
|
66
|
+
specification_version: 4
|
67
|
+
summary: Pipedream SDK
|
68
|
+
test_files: []
|