overlay-ruby 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0d3cefab6304e1630b289f6a40f3b0cb3ef37f91b7dec3ff81aae2406879a805
4
+ data.tar.gz: f3d5bfc15a43a5643da5d326397b6027e443892f9a1ec64d0264e44be22e53c3
5
+ SHA512:
6
+ metadata.gz: 6c97a51f22d5e0b40abe32277af750d67942a6d5cf10a0a22a6a1a4c5265eb420b2747d925d8b457c6081a24fe1f851034cb37be1efef4b7114729ef632ac1a3
7
+ data.tar.gz: 83860a3d530c45384942c07eec8ea2af85f07129646787df6a2de2f251d8f58b46c11dcc9a1b671cd67fd911bbea591a41949bada9721cbecaad4e6558e90893
data/.DS_Store ADDED
Binary file
data/README.md ADDED
@@ -0,0 +1 @@
1
+ # overlay-ruby
Binary file
@@ -0,0 +1,31 @@
1
+ require "httpx"
2
+ require "json"
3
+
4
+ module Overlay
5
+ class Client
6
+ def initialize(api_key: Config.api_key, auth_key: Config.auth_key, base_url: Config.base_url)
7
+ @api_key = api_key
8
+ @auth_key = auth_key
9
+ @base_url = base_url
10
+ end
11
+
12
+ def post(path, payload)
13
+ res = HTTPX.with_headers(headers).post("#{@base_url}#{path}", json: payload)
14
+ handle_response(res)
15
+ end
16
+
17
+ private
18
+
19
+ def headers
20
+ {
21
+ "api-key" => @api_key,
22
+ "auth-key" => @auth_key,
23
+ "Content-Type" => "application/json"
24
+ }
25
+ end
26
+
27
+ def handle_response(res)
28
+ JSON.parse(res.to_s)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module Overlay
2
+ module Config
3
+ class << self
4
+ attr_accessor :api_key, :auth_key, :env, :base_url
5
+
6
+ def env=(value)
7
+ @env = value.to_s
8
+ @base_url = case @env
9
+ when "devnet"
10
+ "https://devnet.overlay.fun"
11
+ when "mainnet"
12
+ "https://mainnet.overlay.fun"
13
+ else
14
+ raise ArgumentError, "Invalid env: #{@env} (use 'devnet' or 'mainnet')"
15
+ end
16
+ end
17
+ end
18
+
19
+ self.env = "devnet"
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+ require 'overlay/response'
2
+
3
+ module Overlay
4
+ class NFT
5
+ def self.create(params)
6
+ client = Client.new
7
+ res = client.post("/nfts", params)
8
+
9
+ Overlay::Response.new(res)
10
+ end
11
+
12
+ def self.mint(mint_address, params = {})
13
+ client = Client.new
14
+ res = client.post("/nfts/#{mint_address}/mint", params)
15
+
16
+ Overlay::Response.new(res)
17
+ end
18
+
19
+ def self.transfer(mint_address, params = {})
20
+ client = Client.new
21
+ res = client.post("/nfts/#{mint_address}/transfer", params)
22
+
23
+ Overlay::Response.new(res)
24
+ end
25
+
26
+ def self.burn(mint_address, params = {})
27
+ client = Client.new
28
+ res = client.post("/nfts/#{mint_address}/burn", params)
29
+
30
+ Overlay::Response.new(res)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,42 @@
1
+ require "json"
2
+
3
+ module Overlay
4
+ class Response
5
+ attr_reader :data, :message, :success
6
+
7
+ def initialize(hash)
8
+ @success = hash["success"]
9
+ @message = hash["message"]
10
+ @data = hash["data"] || {}
11
+
12
+ # data 配下のキーを最上位でもアクセス可能にする
13
+ @data.each do |k, v|
14
+ define_singleton_method(k) { v }
15
+ end
16
+
17
+ # top-level keys もメソッド化
18
+ (hash.keys - ["data"]).each do |k|
19
+ define_singleton_method(k) { hash[k] }
20
+ end
21
+ end
22
+
23
+ # JSON 表示用
24
+ def to_h
25
+ { success: success, message: message }.merge(data)
26
+ end
27
+
28
+ # JSON pretty print 用
29
+ def to_json_pretty
30
+ JSON.pretty_generate(to_h)
31
+ end
32
+
33
+ # inspect と to_s を JSON 表示にオーバーライド
34
+ def inspect
35
+ to_json_pretty
36
+ end
37
+
38
+ def to_s
39
+ to_json_pretty
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,35 @@
1
+ require 'overlay/response'
2
+
3
+ module Overlay
4
+ class Token
5
+ def self.create(params)
6
+ client = Client.new
7
+ res = client.post("/tokens", params)
8
+
9
+ Overlay::Response.new(res)
10
+ end
11
+
12
+ def self.mint(mint_address, params = {})
13
+ raise "amount is required" unless params[:amount]
14
+
15
+ client = Client.new
16
+ res = client.post("/tokens/#{mint_address}/mint", params)
17
+
18
+ Overlay::Response.new(res)
19
+ end
20
+
21
+ def self.transfer(mint_address, params = {})
22
+ client = Client.new
23
+ res = client.post("/tokens/#{mint_address}/transfer", params)
24
+
25
+ Overlay::Response.new(res)
26
+ end
27
+
28
+ def self.burn(mint_address, params = {})
29
+ client = Client.new
30
+ res = client.post("/tokens/#{mint_address}/burn", params)
31
+
32
+ Overlay::Response.new(res)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overlay
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,12 @@
1
+ require 'overlay/response'
2
+
3
+ module Overlay
4
+ class Wallet
5
+ def self.create(params)
6
+ client = Client.new
7
+ res = client.post("/wallets", params)
8
+
9
+ Overlay::Response.new(res)
10
+ end
11
+ end
12
+ end
data/lib/overlay.rb ADDED
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "overlay/version"
4
+ require_relative "overlay/config"
5
+ require_relative "overlay/client"
6
+ require_relative "overlay/wallet"
7
+ require_relative "overlay/token"
8
+ require_relative "overlay/nft"
9
+
10
+ module Overlay
11
+ class Error < StandardError; end
12
+
13
+ class << self
14
+ def configure
15
+ yield(Config)
16
+ end
17
+ end
18
+ end
data/sig/overlay.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Overlay
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: overlay-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - overlay
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-08-15 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: httpx
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ description: Overlay enables simple Web3 development across multiple blockchains,
27
+ including Solana, Ethereum, BSC, Base, Polygon, and Bera. It does not require signing
28
+ transactions with wallets, which is typically necessary in blockchain development.
29
+ Additionally, Overlay does not store any database, implements high-level security
30
+ features, and securely encrypts wallet information to safely execute transactions.
31
+ email:
32
+ - contact@overlay.fun
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - ".DS_Store"
38
+ - README.md
39
+ - lib/overlay.rb
40
+ - lib/overlay/.DS_Store
41
+ - lib/overlay/client.rb
42
+ - lib/overlay/config.rb
43
+ - lib/overlay/nft.rb
44
+ - lib/overlay/response.rb
45
+ - lib/overlay/token.rb
46
+ - lib/overlay/version.rb
47
+ - lib/overlay/wallet.rb
48
+ - sig/overlay.rbs
49
+ homepage: https://docs.overlay.fun
50
+ licenses: []
51
+ metadata:
52
+ allowed_push_host: https://rubygems.org
53
+ homepage_uri: https://docs.overlay.fun
54
+ source_code_uri: https://github.com/overlaydotfun/overlay-ruby
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 3.3.0
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubygems_version: 3.6.2
70
+ specification_version: 4
71
+ summary: Overlay is a library for Web3 development that makes it easy to implement
72
+ wallet creation, token and NFT issuance, minting, burning, and transfers.
73
+ test_files: []