automatic1111 0.1.0 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64fba0709fdd2df4befa859bb0ffb2d440806a5da1a43e4f116f8c90eb90c388
4
- data.tar.gz: 94e0fcdc2affc297686c28118d05495a87969387b9e631bc0ae0f0e30ad88d3d
3
+ metadata.gz: da6e8e072ce73cd690e52055b50c50d3f1f9f7d98c83739096274bff64dc9aca
4
+ data.tar.gz: 701b00689274d734d33a11bcf90ca98132df7d47610815a2edf0286e38e95685
5
5
  SHA512:
6
- metadata.gz: fdd1482b5a057331f20688c24eb9c5fe6012563cc024f43d6b4b0b76e3ae94ae5303ca4bae855fd78d8e08a2ac2373893f7a7163389c44887d5607d0d128e804
7
- data.tar.gz: 8191fc84cdfaeae328d24748b322673aad8266fab3cc3f6892eded79ee8c4034ffe932d8de37c4c461edafdfece55517153a8511d6d3feefae6e77afb204746c
6
+ metadata.gz: eba6a96c47e0996021431a0fd01651a5e72e525a0bc8d3a20011ecf5ba0a5bdcc438c4cad45ba04b275b6d8d8f381e6fe8f2f2fa9997da2c11c82d8cb633796d
7
+ data.tar.gz: 2ada977842ff633c1e864c5050a8f43852885f827f5ae0a9b8f4e1b9607c40319822e0e9abca775505ca30db3b79994619e55464c2b1cb9330905119fdd7737c
data/Gemfile.lock ADDED
@@ -0,0 +1,77 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ automatic1111 (0.1.0)
5
+ addressable
6
+ faraday (>= 2.0)
7
+ faraday-multipart
8
+ faraday-retry
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ addressable (2.8.1)
14
+ public_suffix (>= 2.0.2, < 6.0)
15
+ ast (2.4.2)
16
+ byebug (11.1.3)
17
+ coderay (1.1.3)
18
+ crack (0.4.5)
19
+ rexml
20
+ faraday (2.7.4)
21
+ faraday-net_http (>= 2.0, < 3.1)
22
+ ruby2_keywords (>= 0.0.4)
23
+ faraday-multipart (1.0.4)
24
+ multipart-post (~> 2)
25
+ faraday-net_http (3.0.2)
26
+ faraday-retry (2.0.0)
27
+ faraday (~> 2.0)
28
+ hashdiff (1.0.1)
29
+ json (2.6.3)
30
+ method_source (1.0.0)
31
+ minitest (5.17.0)
32
+ multipart-post (2.3.0)
33
+ parallel (1.22.1)
34
+ parser (3.2.1.0)
35
+ ast (~> 2.4.1)
36
+ pry (0.14.2)
37
+ coderay (~> 1.1)
38
+ method_source (~> 1.0)
39
+ public_suffix (5.0.1)
40
+ rainbow (3.1.1)
41
+ rake (13.0.6)
42
+ regexp_parser (2.7.0)
43
+ rexml (3.2.5)
44
+ rubocop (1.46.0)
45
+ json (~> 2.3)
46
+ parallel (~> 1.10)
47
+ parser (>= 3.2.0.0)
48
+ rainbow (>= 2.2.2, < 4.0)
49
+ regexp_parser (>= 1.8, < 3.0)
50
+ rexml (>= 3.2.5, < 4.0)
51
+ rubocop-ast (>= 1.26.0, < 2.0)
52
+ ruby-progressbar (~> 1.7)
53
+ unicode-display_width (>= 2.4.0, < 3.0)
54
+ rubocop-ast (1.26.0)
55
+ parser (>= 3.2.1.0)
56
+ ruby-progressbar (1.11.0)
57
+ ruby2_keywords (0.0.5)
58
+ unicode-display_width (2.4.2)
59
+ webmock (3.18.1)
60
+ addressable (>= 2.8.0)
61
+ crack (>= 0.3.2)
62
+ hashdiff (>= 0.4.0, < 2.0.0)
63
+
64
+ PLATFORMS
65
+ arm64-darwin-22
66
+
67
+ DEPENDENCIES
68
+ automatic1111!
69
+ byebug
70
+ minitest (~> 5.0)
71
+ pry
72
+ rake (~> 13.0)
73
+ rubocop (~> 1.21)
74
+ webmock
75
+
76
+ BUNDLED WITH
77
+ 2.4.6
data/README.md CHANGED
@@ -13,7 +13,18 @@ gem 'automatic1111'
13
13
 
14
14
  ## Usage
15
15
 
16
- TODO: Write usage instructions here
16
+ ```ruby
17
+ # Setup client
18
+ client = Automatic1111::Client.new(api_endpoint_url: '<http://127.0.0.1:7860 or
19
+ https://xxxxxx.gradio.live')
20
+
21
+ # Authenticate
22
+ client.post('/login', params: { username: 'username', password: 'password' }, headers: { 'Content-Type' => 'application/x-www-form-urlencoded' })
23
+
24
+ # Call endpoint
25
+ resp = client.post('/sdapi/v1/txt2img', params: { prompt: 'test', sampler_name: 'DPM++ SDE Karras', steps: 20, enable_hr: true, hr_upscaler: 'Latent', denoising_strength: 0.7, width: 512, height: 768 })
26
+ resp['images']
27
+ ```
17
28
 
18
29
  ## Development
19
30
 
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "automatic1111/configurable"
4
+ require "automatic1111/connection"
5
+
6
+ module Automatic1111
7
+ class Client
8
+ include Automatic1111::Configurable
9
+ include Automatic1111::Connection
10
+
11
+ def initialize(options = {})
12
+ # Use options passed in, but fall back to module defaults
13
+ Automatic1111::Configurable.keys.each do |key|
14
+ value = options.key?(key) ? options[key] : Automatic1111.instance_variable_get(:"@#{key}")
15
+ instance_variable_set(:"@#{key}", value)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Automatic1111
4
+ module Configurable
5
+ attr_accessor :api_endpoint_url, :cookie, :read_timeout
6
+
7
+ class << self
8
+ # List of configurable keys for {Datatrans::Client}
9
+ # @return [Array] of option keys
10
+ def keys
11
+ @keys ||= %i[api_endpoint_url cookie read_timeout]
12
+ end
13
+ end
14
+
15
+ # Set configuration options using a block
16
+ def configure
17
+ yield self
18
+ end
19
+
20
+ def read_timeout
21
+ @read_timeout ||= 60
22
+ end
23
+
24
+ private
25
+
26
+ def options
27
+ Hash[Automatic1111::Configurable.keys.map { |key| [key, send(key)] }]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'byebug'
4
+ require "faraday"
5
+ require "faraday/net_http"
6
+ require "faraday/retry"
7
+ require "faraday/multipart"
8
+ require "addressable/uri"
9
+
10
+ module Automatic1111
11
+ # Network layer for API clients.
12
+ module Connection
13
+ def get(url, params: {}, headers: {})
14
+ request :get, url, params, headers: headers
15
+ end
16
+
17
+ def post(url, params: {}, headers: {})
18
+ request :post, url, params, headers: headers
19
+ end
20
+
21
+ def put(url, params: {}, headers: {})
22
+ request :put, url, params, headers: headers
23
+ end
24
+
25
+ def patch(url, params: {}, headers: {})
26
+ request :patch, url, params, headers: headers
27
+ end
28
+
29
+ def delete(url, params: {}, headers: {})
30
+ request :delete, url, params, headers: headers
31
+ end
32
+
33
+ def head(url, params: {}, headers: {})
34
+ request :head, url, params, headers: headers
35
+ end
36
+
37
+ # Response for last HTTP request
38
+ #
39
+ # @return [Sawyer::Response]
40
+ def last_response
41
+ @last_response if defined? @last_response
42
+ end
43
+
44
+ private
45
+
46
+ def request(method, path, data, headers: {})
47
+ headers['Content-Type'] ||= 'application/json'
48
+ headers['Cookie'] ||= cookie
49
+
50
+ connection = Faraday.new(url: api_endpoint_url) do |conn|
51
+ conn.request :retry
52
+ conn.adapter :net_http
53
+ conn.options.read_timeout = read_timeout
54
+ end
55
+
56
+ # @last_response = connection.send(method, Addressable::URI.parse(path.to_s).normalize.to_s, data)
57
+ @last_response = connection.send(method, Addressable::URI.parse(path.to_s).normalize.to_s) do |req|
58
+ req.headers = headers
59
+ case headers["Content-Type"]
60
+ when 'application/x-www-form-urlencoded'
61
+ req.body = URI.encode_www_form(data)
62
+ else
63
+ req.body = data.to_json
64
+ end
65
+ end
66
+
67
+ case @last_response.status
68
+ when 400
69
+ raise Error, "#{@last_response.status} #{@last_response.reason_phrase}: #{JSON.parse(@last_response.body)}"
70
+ else
71
+ self.cookie = @last_response.headers['set-cookie'] if @last_response.headers['set-cookie']
72
+
73
+ case headers["Content-Type"]
74
+ when 'application/json'
75
+ JSON.parse(@last_response.body)
76
+ else
77
+ @last_response.body
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Automatic1111
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/automatic1111.rb CHANGED
@@ -1,8 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "automatic1111/version"
4
+ require_relative "automatic1111/client"
4
5
 
5
6
  module Automatic1111
6
7
  class Error < StandardError; end
7
- # Your code goes here...
8
+
9
+ class << self
10
+ include Automatic1111::Configurable
11
+
12
+ def client
13
+ return @client if defined?(@client)
14
+ @client = Automatic1111::Client.new(options)
15
+ end
16
+ end
8
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: automatic1111
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dreaming Tulpa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-24 00:00:00.000000000 Z
11
+ date: 2023-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday-multipart
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: addressable
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description:
84
112
  email:
85
113
  - hey@dreamingtulpa.com
@@ -90,9 +118,13 @@ files:
90
118
  - ".rubocop.yml"
91
119
  - CHANGELOG.md
92
120
  - Gemfile
121
+ - Gemfile.lock
93
122
  - README.md
94
123
  - Rakefile
95
124
  - lib/automatic1111.rb
125
+ - lib/automatic1111/client.rb
126
+ - lib/automatic1111/configurable.rb
127
+ - lib/automatic1111/connection.rb
96
128
  - lib/automatic1111/version.rb
97
129
  - sig/automatic1111.rbs
98
130
  homepage: https://github.com/dreamingtulpa/automatic1111-ruby