modelslab-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 +7 -0
- data/lib/modelslab/client.rb +24 -0
- data/lib/modelslab/http.rb +29 -0
- data/lib/modelslab/images.rb +19 -0
- data/lib/modelslab/version.rb +5 -0
- data/lib/modelslab.rb +56 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: aaa8cfecff49fc4cc6ef03c942b20151c8f691d82ec417a77c9554015b8e43f3
|
4
|
+
data.tar.gz: e0cf57fc6a3034a4c48403e897710fdfef0157350b3201c7a44a1230aa3c8df6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 14bbe9eef78bd8ca532b4cd36be51b0243067dbcbff9ddc42b3d9c0aad768800bb7fa76b2ce033cc4bc3b7f91a0ba7ede7532376309f6c6e037172d00d781f2b
|
7
|
+
data.tar.gz: e09e522e585fc169e74992bb5d2b27879aae73c1d45b5cd84cb39836dd5b3b3adac297294e1dfb152a0d646fc0c7ca5cf0796ad6effb7543f3851cbf173d8946
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ModelsLab
|
4
|
+
class Client
|
5
|
+
include ModelsLab::HTTP
|
6
|
+
|
7
|
+
CONFIG_KEYS = %i[api_key uri_base request_timeout extra_headers].freeze
|
8
|
+
attr_reader(*CONFIG_KEYS, :faraday_middleware)
|
9
|
+
|
10
|
+
def initialize(config = {}, &faraday_middleware)
|
11
|
+
CONFIG_KEYS.each do |key|
|
12
|
+
instance_variable_set(
|
13
|
+
"@#{key}",
|
14
|
+
config[key].nil? ? ModelsLab.configuration.send(key) : config[key]
|
15
|
+
)
|
16
|
+
end
|
17
|
+
@faraday_middleware = faraday_middleware
|
18
|
+
end
|
19
|
+
|
20
|
+
def images
|
21
|
+
@images ||= ModelsLab::Images.new(client: self)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ModelsLab
|
4
|
+
module HTTP
|
5
|
+
def json_post(path:, parameters:)
|
6
|
+
response = connection.post(path) do |req|
|
7
|
+
req.headers["Content-Type"] = "application/json"
|
8
|
+
req.body = parameters.to_json
|
9
|
+
end
|
10
|
+
JSON.parse(response.body)
|
11
|
+
rescue JSON::ParserError
|
12
|
+
response.body
|
13
|
+
end
|
14
|
+
|
15
|
+
def connection
|
16
|
+
@connection ||= Faraday.new(url: uri_base) do |f|
|
17
|
+
f.request :json
|
18
|
+
f.response :raise_error
|
19
|
+
f.use ModelsLab::MiddlewareErrors
|
20
|
+
f.options.timeout = request_timeout
|
21
|
+
extra_headers.each do |key, value|
|
22
|
+
f.headers[key] = value
|
23
|
+
end
|
24
|
+
faraday_middleware&.call(f)
|
25
|
+
f.adapter Faraday.default_adapter
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ModelsLab
|
4
|
+
class Images
|
5
|
+
def initialize(client:)
|
6
|
+
@client = client
|
7
|
+
end
|
8
|
+
|
9
|
+
def text2img(prompt:, model_id:, options: {})
|
10
|
+
parameters = {
|
11
|
+
key: @client.api_key,
|
12
|
+
prompt: prompt,
|
13
|
+
model_id: model_id
|
14
|
+
}.merge(options)
|
15
|
+
|
16
|
+
@client.json_post(path: "images/text2img", parameters: parameters)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/modelslab.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "faraday"
|
4
|
+
require "faraday/multipart"
|
5
|
+
|
6
|
+
require_relative "modelslab/version"
|
7
|
+
require_relative "modelslab/http"
|
8
|
+
require_relative "modelslab/client"
|
9
|
+
require_relative "modelslab/images"
|
10
|
+
|
11
|
+
module ModelsLab
|
12
|
+
class Error < StandardError; end
|
13
|
+
class ConfigurationError < Error; end
|
14
|
+
|
15
|
+
class MiddlewareErrors < Faraday::Middleware
|
16
|
+
def call(env)
|
17
|
+
@app.call(env)
|
18
|
+
rescue Faraday::Error => e
|
19
|
+
raise e unless e.response.is_a?(Hash)
|
20
|
+
|
21
|
+
logger = Logger.new($stdout)
|
22
|
+
logger.formatter = proc do |_severity, _datetime, _progname, msg|
|
23
|
+
"\033[31mModelsLab HTTP Error (spotted in modelslab-ruby #{VERSION}): #{msg}\n\033[0m"
|
24
|
+
end
|
25
|
+
logger.error(e.response[:body])
|
26
|
+
|
27
|
+
raise e
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Configuration
|
32
|
+
attr_accessor :api_key, :uri_base, :request_timeout, :extra_headers
|
33
|
+
|
34
|
+
DEFAULT_URI_BASE = "https://modelslab.com/api/v6"
|
35
|
+
DEFAULT_REQUEST_TIMEOUT = 120
|
36
|
+
|
37
|
+
def initialize
|
38
|
+
@api_key = nil
|
39
|
+
@uri_base = DEFAULT_URI_BASE
|
40
|
+
@request_timeout = DEFAULT_REQUEST_TIMEOUT
|
41
|
+
@extra_headers = {}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class << self
|
46
|
+
attr_writer :configuration
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.configuration
|
50
|
+
@configuration ||= ModelsLab::Configuration.new
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.configure
|
54
|
+
yield(configuration)
|
55
|
+
end
|
56
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: modelslab-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Florian Felsing
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-08-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday-multipart
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
description: A Ruby wrapper for the ModelsLab API, focusing on text-to-image generation.
|
42
|
+
email:
|
43
|
+
- florian.felsing@googlemail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/modelslab.rb
|
49
|
+
- lib/modelslab/client.rb
|
50
|
+
- lib/modelslab/http.rb
|
51
|
+
- lib/modelslab/images.rb
|
52
|
+
- lib/modelslab/version.rb
|
53
|
+
homepage: https://github.com/florianfelsing/modelslab-ruby
|
54
|
+
licenses:
|
55
|
+
- MIT
|
56
|
+
metadata:
|
57
|
+
allowed_push_host: https://rubygems.org
|
58
|
+
homepage_uri: https://github.com/florianfelsing/modelslab-ruby
|
59
|
+
source_code_uri: https://github.com/florianfelsing/modelslab-ruby
|
60
|
+
changelog_uri: https://github.com/florianfelsing/modelslab-ruby/blob/main/CHANGELOG.md
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 3.0.0
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubygems_version: 3.4.19
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Ruby client for ModelsLab API
|
80
|
+
test_files: []
|