Merge pull request #4 from echoidcf/fix-bugs

Fix: Handle GET requests correctly and improve namespacing
This commit is contained in:
Eric Guo
2025-09-05 22:00:16 +08:00
committed by GitHub
3 changed files with 89 additions and 83 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
dify_client (0.1.0)
dify_client (0.1.1)
GEM
remote: https://rubygems.org/
+87 -81
View File
@@ -1,96 +1,102 @@
# frozen_string_literal: true
require_relative "client/version"
require "net/https"
require "json"
class DifyClient
def initialize(api_key, base_url = "https://api.dify.ai/v1")
@api_key = api_key
@base_url = base_url
end
module Dify
module Client
class DifyClient
def initialize(api_key, base_url = "https://api.dify.ai/v1")
@api_key = api_key
@base_url = base_url
end
def message_feedback(message_id, rating, user)
data = {
rating: rating,
user: user
}
_send_request("POST", "/messages/#{message_id}/feedbacks", data)
end
def message_feedback(message_id, rating, user)
data = {
rating: rating,
user: user
}
_send_request("POST", "/messages/#{message_id}/feedbacks", data)
end
def get_application_parameters(user)
params = { user: user }
_send_request("GET", "/parameters", nil, params)
end
def get_application_parameters(user)
params = { user: user }
_send_request("GET", "/parameters", nil, params)
end
def update_api_key(new_key)
@api_key = new_key
end
def update_api_key(new_key)
@api_key = new_key
end
private
private
def _send_request(method, endpoint, data = nil, params = nil, _stream: false)
uri = URI.parse("#{@base_url}#{endpoint}")
def _send_request(method, endpoint, data = nil, params = nil, _stream = false)
uri = URI.parse("#{@base_url}#{endpoint}")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
headers = {
"Authorization" => "Bearer #{@api_key}",
"Content-Type" => "application/json"
}
headers = {
"Authorization" => "Bearer #{@api_key}",
"Content-Type" => "application/json"
}
if method == "GET"
uri.query = URI.encode_www_form(params) if params
request = Net::HTTP::Get.new(uri.request_uri, headers)
elsif method == "POST"
request = Net::HTTP::Post.new(uri.request_uri, headers)
request.body = data.to_json
if method == "GET"
uri.query = URI.encode_www_form(params) if params
request = Net::HTTP::Get.new(uri.request_uri, headers)
elsif method == "POST"
request = Net::HTTP::Post.new(uri.request_uri, headers)
request.body = data.to_json
end
http.request(request)
end
end
http.request(request)
class CompletionClient < DifyClient
def create_completion_message(inputs, query, response_mode, user)
data = {
inputs: inputs,
query: query,
response_mode: response_mode,
user: user
}
_send_request("POST", "/completion-messages", data, nil, response_mode == "streaming")
end
end
class ChatClient < DifyClient
def create_chat_message(inputs, query, user, response_mode = "blocking", conversation_id = nil)
data = {
inputs: inputs,
query: query,
user: user,
response_mode: response_mode
}
data[:conversation_id] = conversation_id if conversation_id
_send_request("POST", "/chat-messages", data, nil, response_mode == "streaming")
end
def get_conversation_messages(user, conversation_id = nil, first_id = nil, limit = nil)
params = { user: user }
params[:conversation_id] = conversation_id if conversation_id
params[:first_id] = first_id if first_id
params[:limit] = limit if limit
_send_request("GET", "/messages", nil, params)
end
def get_conversations(user, last_id = nil, limit = nil, pinned = nil)
params = { user: user, last_id: last_id, limit: limit, pinned: pinned }
_send_request("GET", "/conversations", nil, params)
end
def rename_conversation(conversation_id, name, user)
data = { name: name, user: user }
_send_request("POST", "/conversations/#{conversation_id}/name", data)
end
end
end
end
class CompletionClient < DifyClient
def create_completion_message(inputs, query, response_mode, user)
data = {
inputs: inputs,
query: query,
response_mode: response_mode,
user: user
}
_send_request("POST", "/completion-messages", data, nil, response_mode == "streaming")
end
end
class ChatClient < DifyClient
def create_chat_message(inputs, query, user, response_mode = "blocking", conversation_id = nil)
data = {
inputs: inputs,
query: query,
user: user,
response_mode: response_mode
}
data[:conversation_id] = conversation_id if conversation_id
_send_request("POST", "/chat-messages", data, nil, response_mode == "streaming")
end
def get_conversation_messages(user, conversation_id = nil, first_id = nil, limit = nil)
params = { user: user }
params[:conversation_id] = conversation_id if conversation_id
params[:first_id] = first_id if first_id
params[:limit] = limit if limit
_send_request("GET", "/messages", nil, params)
end
def get_conversations(user, last_id = nil, limit = nil, pinned = nil)
params = { user: user, last_id: last_id, limit: limit, pinned: pinned }
_send_request("GET", "/conversations", nil, params)
end
def rename_conversation(conversation_id, name, user)
data = { name: name, user: user }
_send_request("POST", "/conversations/#{conversation_id}/name", data)
end
end
end
+1 -1
View File
@@ -2,6 +2,6 @@
module Dify
module Client
VERSION = "0.1.0"
VERSION = "0.1.1"
end
end