zeus_sdk 0.4.6

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 14a8d572d1ae2e096bececd34f5949df92a5ca4edf54f845b996edf0f19ad555
4
+ data.tar.gz: c4e939a66e4a96992f158492f471c268e3ed134a3e5b8a11350c60936dc73933
5
+ SHA512:
6
+ metadata.gz: 79bb96320675d3b7685aa12021363ad88bd32ab63110fa919e1436d8b18f7a6ce53edcd923a5e33cb09e85bb4b12c927dd7c15647dd37dab6be91657aa13327c
7
+ data.tar.gz: 96630215f3040db1e07c697edac12ca8c20c4e40481e45402d0daee93ab27645ac7401c4a6032d43f6073fdc18a7d95062d4afc46ac9d10ceb170ff151fe0852
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in zeus-sdk.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
7
+ gem "rspec", "~> 3.0"
8
+ gem "activesupport"
9
+ gem "jwt"
data/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # Zeus
2
+
3
+ Zeus Ruby SDK
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'zeus'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install zeus
20
+
21
+ ## Usage
22
+
23
+ TODO: Write usage instructions here
24
+
25
+ ## Development
26
+
27
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
28
+
29
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
30
+
31
+ ## Contributing
32
+
33
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/zeus-sdk.
34
+
35
+
36
+ ## License
37
+
38
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/lib/zeus_sdk.rb ADDED
@@ -0,0 +1,24 @@
1
+ require "active_support"
2
+
3
+ module ZeusSdk
4
+ class Error < StandardError; end
5
+
6
+ require "zeus_sdk/version"
7
+ require "zeus_sdk/env"
8
+
9
+ module V1
10
+ # clients
11
+ require "zeus_sdk/v1/service_base"
12
+ require "zeus_sdk/v1/core"
13
+ require "zeus_sdk/v1/secrets"
14
+ require "zeus_sdk/v1/auth"
15
+ require "zeus_sdk/v1/assets"
16
+ require "zeus_sdk/v1/content"
17
+ require "zeus_sdk/v1/multiplayer"
18
+
19
+ # models
20
+ require "zeus_sdk/v1/models/auth/user"
21
+ require "zeus_sdk/v1/models/multiplayer/document"
22
+ require "zeus_sdk/v1/models/multiplayer/node"
23
+ end
24
+ end
@@ -0,0 +1,4 @@
1
+ module ZeusSdk
2
+ ENVIRONMENT = ENV['RACK_ENV'] || ENV['RAILS_ENV']
3
+ IS_PRODUCTION = ENVIRONMENT == "production"
4
+ end
@@ -0,0 +1,11 @@
1
+ require "httparty"
2
+
3
+ module ZeusSdk::V1
4
+ class Assets
5
+ SUBDOMAIN = "assets"
6
+ LOCAL_PORT = 3004
7
+
8
+ include HTTParty
9
+ include ServiceBase
10
+ end
11
+ end
@@ -0,0 +1,60 @@
1
+ require "httparty"
2
+ require "jwt"
3
+
4
+ module ZeusSdk::V1
5
+ class Auth
6
+ SUBDOMAIN = "auth"
7
+ LOCAL_PORT = 3003
8
+
9
+ include HTTParty
10
+ include ServiceBase
11
+
12
+ def list_users(query)
13
+ resp = self.class.get("/api/v1/users", query: query, headers: self.get_headers).parsed_response
14
+ if resp["success"] == true
15
+ return resp["objects"].map {|u| User.new(u) }
16
+ else
17
+ return nil
18
+ end
19
+ end
20
+
21
+ def signup_with_email_password(user)
22
+ resp = self.class.post("/api/v1/users", body: {user: user}.to_json, headers: self.get_headers).parsed_response
23
+ end
24
+
25
+ def get_users(query)
26
+ resp = self.class.get("/api/v1/users", query: query, headers: self.get_headers).parsed_response
27
+
28
+ if resp["success"] == true
29
+ return resp["objects"].map {|u| User.new(u) }
30
+ else
31
+ return nil
32
+ end
33
+ end
34
+
35
+ def get_user(id)
36
+ resp = self.class.get("/api/v1/users/#{id}", headers: self.get_headers).parsed_response
37
+ if resp["success"] == true
38
+ return User.new(resp["object"])
39
+ else
40
+ return nil
41
+ end
42
+ end
43
+ end
44
+
45
+ class AuthJWT
46
+ class << self
47
+ def encode(payload, exp = 6.months.from_now)
48
+ payload[:exp] = exp.to_i
49
+ JWT.encode(payload, ENV["ZEUS_AUTH_SECRET_KEY"])
50
+ end
51
+
52
+ def decode(token)
53
+ body = JWT.decode(token, ENV["ZEUS_AUTH_SECRET_KEY"])[0]
54
+ HashWithIndifferentAccess.new body
55
+ rescue
56
+ nil
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,12 @@
1
+ require "httparty"
2
+
3
+ module ZeusSdk::V1
4
+ class Content
5
+ SUBDOMAIN = "content"
6
+ LOCAL_PORT = 3005
7
+
8
+ include HTTParty
9
+ include ServiceBase
10
+ end
11
+ end
12
+
@@ -0,0 +1,30 @@
1
+ require "httparty"
2
+
3
+ module ZeusSdk::V1
4
+ class Core
5
+ include HTTParty
6
+
7
+ def self.get_env
8
+ @env ||= ENV['RACK_ENV'] || ENV['RAILS_ENV']
9
+ end
10
+
11
+ def self.get_base_uri
12
+ base_uri = "https://api.zeusdev.io" if self.get_env == "production"
13
+ base_uri = "http://localhost:3000" if self.get_env != "production"
14
+
15
+ base_uri
16
+ end
17
+
18
+ base_uri get_base_uri
19
+ format :json
20
+ follow_redirects true
21
+
22
+ def initialize(auth_token)
23
+ self.class.headers "Authorization" => "Bearer #{auth_token}"
24
+ end
25
+
26
+ def check_domain(domain)
27
+ self.class.get("/domains/exists", query: {domain: domain})
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ module ZeusSdk::V1
2
+ class User
3
+ attr_accessor :id, :name, :email, :email_verified, :first_name, :last_name, :created_at, :updated_at
4
+
5
+ def initialize(user)
6
+ return if user.blank?
7
+ self.id = user["id"] if user.has_key?("id")
8
+ self.name = user["name"] if user.has_key?("name")
9
+ self.first_name = user["first_name"] if user.has_key?("first_name")
10
+ self.last_name = user["last_name"] if user.has_key?("last_name")
11
+ self.email = user["email"] if user.has_key?("email")
12
+ self.email_verified = user["email_verified"] if user.has_key?("email_verified")
13
+ self.created_at = user["created_at"] if user.has_key?("created_at")
14
+ self.updated_at = user["updated_at"] if user.has_key?("updated_at")
15
+ end
16
+
17
+ def as_json(options={})
18
+ {
19
+ id: self.id,
20
+ name: self.name,
21
+ first_name: self.first_name,
22
+ last_name: self.last_name,
23
+ email: self.email,
24
+ email_verified: self.email_verified,
25
+ created_at: self.created_at,
26
+ updated_at: self.updated_at
27
+ }
28
+ end
29
+
30
+ def to_json(options={})
31
+ self.as_json(options).to_json
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,21 @@
1
+ module ZeusSdk::V1
2
+ class Document
3
+ attr_accessor :id, :name, :created_at, :updated_at
4
+
5
+ def initialize(doc)
6
+ self.id = doc["id"]
7
+ self.name = doc["name"]
8
+ self.created_at = doc["created_at"]
9
+ self.updated_at = doc["updated_at"]
10
+ end
11
+
12
+ def as_json(options={})
13
+ return {
14
+ id: self.id,
15
+ name: self.name,
16
+ created_at: self.created_at,
17
+ updated_at: self.updated_at
18
+ }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ module ZeusSdk::V1
2
+ class Node
3
+ attr_accessor :id, :document_id, :name, :type, :properties, :created_at, :updated_at
4
+
5
+ def initialize(node)
6
+ self.id = node["id"]
7
+ self.name = node["name"]
8
+ self.type = node["type"]
9
+ self.properties = node["properties"]
10
+ self.created_at = node["created_at"]
11
+ self.updated_at = node["updated_at"]
12
+ end
13
+
14
+ def as_json(options={})
15
+ return {
16
+ id: self.id,
17
+ name: self.name,
18
+ type: self.type,
19
+ properties: self.properties,
20
+ created_at: self.created_at,
21
+ updated_at: self.updated_at
22
+ }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,121 @@
1
+ require "httparty"
2
+
3
+ module ZeusSdk::V1
4
+ class Multiplayer
5
+ SUBDOMAIN = "multiplayer"
6
+ LOCAL_PORT = 3006
7
+
8
+ include HTTParty
9
+ include ServiceBase
10
+
11
+ def list_documents(query)
12
+ resp = self.class.get("/api/v1/documents", query: query, headers: self.get_headers).parsed_response
13
+ if resp["success"] == true
14
+ return resp["objects"].map {|d| Document.new(d) }
15
+ else
16
+ return nil
17
+ end
18
+ end
19
+
20
+ def create_document(document)
21
+ resp = self.class.post("/api/v1/documents", body: {document: document}.to_json, headers: self.get_headers).parsed_response
22
+ if resp["success"] == true
23
+ return Document.new(resp["object"])
24
+ else
25
+ return nil
26
+ end
27
+ end
28
+
29
+ def get_document(id)
30
+ resp = self.class.get("/api/v1/documents/#{id}", headers: self.get_headers).parsed_response
31
+ if resp["success"] == true
32
+ return Document.new(resp["object"])
33
+ else
34
+ return nil
35
+ end
36
+ end
37
+
38
+ def update_document(id, document)
39
+ resp = self.class.put("/api/v1/documents/#{id}", body: {document: document}.to_json, headers: self.get_headers).parsed_response
40
+ if resp["success"] == true
41
+ return Document.new(resp["object"])
42
+ else
43
+ return nil
44
+ end
45
+ end
46
+
47
+ def destroy_document(id)
48
+ resp = self.class.delete("/api/v1/documents/#{id}", headers: self.get_headers).parsed_response
49
+ if resp["success"] == true
50
+ return Document.new(resp["object"])
51
+ else
52
+ return nil
53
+ end
54
+ end
55
+
56
+ def list_nodes(query)
57
+ resp = self.class.get("/api/v1/nodes", query: query, headers: self.get_headers).parsed_response
58
+ if resp["success"] == true
59
+ return resp["objects"].map {|d| Node.new(d) }
60
+ else
61
+ return nil
62
+ end
63
+ end
64
+
65
+ def create_node(node)
66
+ resp = self.class.post("/api/v1/nodes", body: {node: node}.to_json, headers: self.get_headers).parsed_response
67
+ if resp["success"] == true
68
+ return Node.new(resp["object"])
69
+ else
70
+ return nil
71
+ end
72
+ end
73
+
74
+ def get_node(id)
75
+ resp = self.class.get("/api/v1/nodes/#{id}", headers: self.get_headers).parsed_response
76
+ if resp["success"] == true
77
+ return Node.new(resp["object"])
78
+ else
79
+ return nil
80
+ end
81
+ end
82
+
83
+ def update_node(id, node)
84
+ resp = self.class.put("/api/v1/nodes/#{id}", body: {node: node}.to_json, headers: self.get_headers).parsed_response
85
+ if resp["success"] == true
86
+ return Node.new(resp["object"])
87
+ else
88
+ return nil
89
+ end
90
+ end
91
+
92
+ def destroy_node(id)
93
+ resp = self.class.delete("/api/v1/nodes/#{id}", headers: self.get_headers).parsed_response
94
+ if resp["success"] == true
95
+ return Node.new(resp["object"])
96
+ else
97
+ return nil
98
+ end
99
+ end
100
+ end
101
+
102
+ class MultiplayerJWT
103
+ class << self
104
+ def encode(secret_key, payload, exp = 6.months.from_now)
105
+ # payload[:exp] = exp.to_i
106
+ payload = payload.to_json if payload.class != String
107
+ JWT.encode(payload, secret_key)
108
+ end
109
+
110
+ def decode(secret_key, token)
111
+ decoded = JWT.decode(token, secret_key)
112
+ body = decoded[0]
113
+ HashWithIndifferentAccess.new JSON.parse(body)
114
+ rescue Exception => e
115
+ puts("ERROR DECODING TOKEN")
116
+ puts(e.inspect)
117
+ nil
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,27 @@
1
+ require "httparty"
2
+
3
+ module ZeusSdk::V1
4
+ class Secrets
5
+ SUBDOMAIN = "secrets"
6
+ LOCAL_PORT = 3002
7
+
8
+ include HTTParty
9
+ include ServiceBase
10
+
11
+ def list_secrets(query)
12
+ self.class.get("/api/v1/secrets", query: query, headers: self.get_headers)
13
+ end
14
+
15
+ def get_secret(key)
16
+ self.class.get("/api/v1/secrets/#{key}", headers: self.get_headers)
17
+ end
18
+
19
+ def set_secret(key, value)
20
+ self.class.post("/api/v1/secrets", body: {secret: {key: key, value: value}}.to_json, headers: self.get_headers)
21
+ end
22
+
23
+ def delete_secret(key)
24
+ self.class.post("/api/v1/secrets/#{key}", headers: self.get_headers)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,60 @@
1
+ require "httparty"
2
+ require "json"
3
+
4
+ module ZeusSdk::V1
5
+ module ServiceBase
6
+ def self.included(klass)
7
+ klass.format :json
8
+ klass.follow_redirects true
9
+ klass.base_uri ZeusSdk::IS_PRODUCTION ? "https://#{klass::SUBDOMAIN}.zeusdev.io" : "http://localhost:#{klass::LOCAL_PORT}"
10
+ end
11
+
12
+ attr_accessor :zeus_auth_key, :public_key, :secret_key, :project_id, :scope, :environment_id
13
+
14
+ def initialize(params)
15
+ if params[:zeus_auth_key] == nil && params[:public_key] == nil && params[:secret_key] == nil
16
+ throw "Must initialize with public_key and secret_key"
17
+ end
18
+
19
+ @zeus_auth_key = params[:zeus_auth_key]
20
+ @public_key = params[:public_key]
21
+ @secret_key = params[:secret_key]
22
+ @project_id = params[:project_id]
23
+ @scope = params[:scope]
24
+ @environment_id = params[:environment_id]
25
+ end
26
+
27
+ def get_headers
28
+ headers = {
29
+ 'Content-Type' => 'application/json'
30
+ }
31
+
32
+ headers["X-ZEUS-AUTH-KEY"] = self.zeus_auth_key if self.zeus_auth_key.present?
33
+
34
+ headers["X-ZEUS-SERVICE-PUBLIC-KEY"] = self.public_key if self.public_key.present?
35
+ headers["X-ZEUS-SERVICE-SECRET-KEY"] = self.secret_key if self.secret_key.present?
36
+
37
+ headers["X-ZEUS-SCOPE"] = self.scope if self.scope.present?
38
+ headers["X-ZEUS-ENVIRONMENT-ID"] = self.environment_id if self.environment_id.present?
39
+
40
+ headers
41
+ end
42
+
43
+ def get_project_environments(ids)
44
+ self.class.get("/api/v1/project_environments", query: {ids: ids}, headers: self.get_headers)
45
+ end
46
+
47
+ def get_project_environment(id)
48
+ self.class.get("/api/v1/project_environments/#{id}", headers: self.get_headers)
49
+ end
50
+
51
+ def create_project_environment(project_environment)
52
+ self.class.post("/api/v1/project_environments", body: {project_environment: project_environment}.to_json, headers: self.get_headers)
53
+ end
54
+
55
+ def destroy_project_environment(id)
56
+ self.class.delete("/api/v1/project_environments/#{id}", body: {}, headers: self.get_headers)
57
+ end
58
+ end
59
+ end
60
+
@@ -0,0 +1,3 @@
1
+ module ZeusSdk
2
+ VERSION = "0.4.6"
3
+ end
data/zeus_sdk.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ require File.expand_path('lib/zeus_sdk/version', __dir__)
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "zeus_sdk"
5
+ spec.version = ZeusSdk::VERSION
6
+ spec.authors = ["Eric Campbell"]
7
+ spec.email = ["ericcampbell59@gmail.com"]
8
+
9
+ spec.summary = %q{Ruby SDK for Zeus APIs}
10
+ spec.description = %q{Ruby SDK for Zeus APIs}
11
+ spec.homepage = "https://www.zeusdev.io"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
+
15
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/ZeusHQ/zeus-sdk-ruby"
19
+ # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
20
+
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.files = Dir['README.md', 'LICENSE', 'CHANGELOG.md', 'lib/**/*.rb',
24
+ 'lib/**/*.rake', 'zeus_sdk.gemspec', '.github/*.md', 'Gemfile', 'Rakefile']
25
+
26
+ spec.add_dependency("httparty", "~> 0.18.1")
27
+ spec.add_dependency("activesupport", "~> 6.1.1")
28
+ spec.add_dependency("jwt", "~> 2.2.2")
29
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zeus_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.6
5
+ platform: ruby
6
+ authors:
7
+ - Eric Campbell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-03-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.18.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.18.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 6.1.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 6.1.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: jwt
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.2.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.2.2
55
+ description: Ruby SDK for Zeus APIs
56
+ email:
57
+ - ericcampbell59@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - Gemfile
63
+ - README.md
64
+ - Rakefile
65
+ - lib/zeus_sdk.rb
66
+ - lib/zeus_sdk/env.rb
67
+ - lib/zeus_sdk/v1/assets.rb
68
+ - lib/zeus_sdk/v1/auth.rb
69
+ - lib/zeus_sdk/v1/content.rb
70
+ - lib/zeus_sdk/v1/core.rb
71
+ - lib/zeus_sdk/v1/models/auth/user.rb
72
+ - lib/zeus_sdk/v1/models/multiplayer/document.rb
73
+ - lib/zeus_sdk/v1/models/multiplayer/node.rb
74
+ - lib/zeus_sdk/v1/multiplayer.rb
75
+ - lib/zeus_sdk/v1/secrets.rb
76
+ - lib/zeus_sdk/v1/service_base.rb
77
+ - lib/zeus_sdk/version.rb
78
+ - zeus_sdk.gemspec
79
+ homepage: https://www.zeusdev.io
80
+ licenses:
81
+ - MIT
82
+ metadata:
83
+ homepage_uri: https://www.zeusdev.io
84
+ source_code_uri: https://github.com/ZeusHQ/zeus-sdk-ruby
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 2.3.0
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubygems_version: 3.2.3
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Ruby SDK for Zeus APIs
104
+ test_files: []