Skip to content

Commit 52a434b

Browse files
authored
Merge pull request #6418 from manyfold3d/octoprint
Add support for printing via Octoprint API
2 parents 5c337b5 + 3b8eb7b commit 52a434b

12 files changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
require "faraday"
2+
require "faraday/multipart"
3+
4+
class Print::OctoprintService
5+
# i18n-tasks-use t("print_hosts.protocols.octoprint")
6+
PROTOCOL = "octoprint".freeze
7+
8+
INPUT_TYPES = [Mime[:gcode]].freeze
9+
10+
def initialize(print_host:)
11+
@print_host = print_host
12+
end
13+
14+
def ok?
15+
response = connection.get(info_uri, {}, headers)
16+
response.success?
17+
rescue => ex
18+
Rails.logger.warn(ex.message)
19+
false
20+
end
21+
22+
def upload(file:, start_print: true)
23+
raise ArgumentError unless file.mime_type.to_sym == :gcode
24+
connection.post(upload_uri, payload(file: file, start_print: start_print), headers)
25+
end
26+
27+
private
28+
29+
def connection
30+
Faraday.new do
31+
it.request :multipart
32+
end
33+
end
34+
35+
def payload(file:, start_print: true)
36+
{
37+
print: start_print ? "true" : "false",
38+
file: Faraday::Multipart::FilePart.new(
39+
file.attachment.open,
40+
file.mime_type.to_s,
41+
file.filename
42+
)
43+
}
44+
end
45+
46+
def info_uri
47+
"#{@print_host.endpoint}/api/server"
48+
end
49+
50+
def upload_uri
51+
"#{@print_host.endpoint}/api/files/local"
52+
end
53+
54+
def headers
55+
{
56+
"X-Api-Key" => @print_host.credentials
57+
}.compact_blank
58+
end
59+
end

config/locales/cs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ cs:
10011001
sent:
10021002
protocols:
10031003
moonraker:
1004+
octoprint:
10041005
update:
10051006
success:
10061007
renderer:

config/locales/de.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,7 @@ de:
10051005
sent:
10061006
protocols:
10071007
moonraker:
1008+
octoprint:
10081009
update:
10091010
success:
10101011
renderer:

config/locales/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ en:
10011001
sent: File sent to printer
10021002
protocols:
10031003
moonraker: Moonraker / Klipper
1004+
octoprint: Octoprint
10041005
update:
10051006
success: Printer created successfully
10061007
renderer:

config/locales/es.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ es:
10011001
sent:
10021002
protocols:
10031003
moonraker:
1004+
octoprint:
10041005
update:
10051006
success:
10061007
renderer:

config/locales/fr.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,7 @@ fr:
10031003
sent:
10041004
protocols:
10051005
moonraker:
1006+
octoprint:
10061007
update:
10071008
success:
10081009
renderer:

config/locales/ja.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ ja:
10011001
sent:
10021002
protocols:
10031003
moonraker:
1004+
octoprint:
10041005
update:
10051006
success:
10061007
renderer:

config/locales/nl.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ nl:
10011001
sent:
10021002
protocols:
10031003
moonraker:
1004+
octoprint:
10041005
update:
10051006
success:
10061007
renderer:

config/locales/pl.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ pl:
10011001
sent:
10021002
protocols:
10031003
moonraker:
1004+
octoprint:
10041005
update:
10051006
success:
10061007
renderer:

config/locales/pt.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ pt:
10011001
sent:
10021002
protocols:
10031003
moonraker:
1004+
octoprint:
10041005
update:
10051006
success:
10061007
renderer:

0 commit comments

Comments
 (0)