class Datawow::Connector
Public Class Methods
new(path, type, token: '', version_api: 'v1')
click to toggle source
# File lib/datawow/connector.rb, line 13 def initialize(path, type, token: '', version_api: 'v1') @version_api = version_api @type = type @path = path @token = token @method = :GET end
Public Instance Methods
delete(data = {}, query_str = true)
click to toggle source
# File lib/datawow/connector.rb, line 42 def delete(data = {}, query_str = true) @method = :DELETE response = send_request(data, query_str) response_body = JSON.parse response.body Response.new(response_body, response.code) end
get(data = {}, query_str = true)
click to toggle source
# File lib/datawow/connector.rb, line 28 def get(data = {}, query_str = true) @method = :GET response = send_request(data, query_str) response_body = JSON.parse response.body Response.new(response_body, response.code) end
post(data = {})
click to toggle source
# File lib/datawow/connector.rb, line 21 def post(data = {}) @method = :POST response = send_request(data) response_body = JSON.parse response.body Response.new(response_body, response.code) end
put(data = {})
click to toggle source
# File lib/datawow/connector.rb, line 35 def put(data = {}) @method = :PUT response = send_request(data) response_body = JSON.parse response.body Response.new(response_body, response.code) end
Private Instance Methods
base_point(type)
click to toggle source
# File lib/datawow/connector.rb, line 101 def base_point(type) { image: 'https://image.datawow.io/api', ai: 'https://image.datawow.io/api', text: 'https://text.datawow.io/api', video: 'https://image.datawow.io/api', moderation: 'https://api.datawow.io/api' }[type] end
build_request(uri)
click to toggle source
# File lib/datawow/connector.rb, line 72 def build_request(uri) request = {} token = @token || Datawow.project_key if (token || '').empty? raise ArgumentError, 'project\'s token has missed. To config about token check our document' end case @method when :POST request = Net::HTTP::Post.new(uri.request_uri) when :GET request = Net::HTTP::Get.new(uri.request_uri) when :PUT request = Net::HTTP::Put.new(uri.request_uri) when :DELETE request = Net::HTTP::Delete.new(uri.request_uri) else raise ArgumentError, 'HTTP method is not exist, We allowed GET, POST, PUT, DELET only' end request['User-Agent'] = 'Datawow Ruby gem client' request['Accept'] = 'application/json' request['Content-Type'] = 'application/json' request['Authorization'] = token request end
send_request(data = {}, query_str = true)
click to toggle source
# File lib/datawow/connector.rb, line 51 def send_request(data = {}, query_str = true) base_uri = base_point(@type) url_base = "#{base_uri}/#{@version_api}/#{@path}" uri = URI.parse(url_base) if @method == :GET if query_str uri.query = URI.encode_www_form(data) else url_base = "#{url_base}/#{data[:id]}" uri = URI.parse(url_base) end end https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true request = build_request(uri) request.body = data.to_json https.request(request) end