Class: ZohoSdk::Analytics::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/zoho-sdk/analytics/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(email, auth_token) ⇒ Client

Returns a new instance of Client.



12
13
14
15
# File 'lib/zoho-sdk/analytics/client.rb', line 12

def initialize(email, auth_token)
  @email = email
  @auth_token = auth_token
end

Instance Method Details

#create_workspace(name, **opts) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/zoho-sdk/analytics/client.rb', line 24

def create_workspace(name, **opts)
  res = get params: {
    "ZOHO_ACTION" => "CREATEBLANKDB",
    "ZOHO_DATABASE_NAME" => name,
    "ZOHO_DATABASE_DESC" => opts[:description] || ""
  }
  if res.success?
    data = JSON.parse(res.body)
    Workspace.new(name, self)
  else
    nil
  end
end

#get(path: nil, params: {}) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/zoho-sdk/analytics/client.rb', line 55

def get(path: nil, params: {})
  conn = Faraday.new(url: url_for(path))
  res = conn.get do |req|
    req.params["ZOHO_OUTPUT_FORMAT"] = "JSON"
    req.params["ZOHO_ERROR_FORMAT"] = "JSON"
    req.params["ZOHO_API_VERSION"] = "1.0"
    req.params["authtoken"] = @auth_token
    params.each { |key, value|
      req.params[key] = value
    }
  end
end

#post_json(path: nil, io:, params: {}) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/zoho-sdk/analytics/client.rb', line 68

def post_json(path: nil, io:, params: {})
  conn = Faraday.new(url: url_for(path)) do |conn|
    conn.request :multipart
    conn.adapter :net_http
    conn.headers = {
      'Content-Type' => 'multipart/form-data'
    }
  end
  res = conn.post do |req|
    payload = {
      "ZOHO_OUTPUT_FORMAT" => "JSON",
      "ZOHO_ERROR_FORMAT" => "JSON",
      "ZOHO_API_VERSION" => "1.0",
      "authtoken" => @auth_token
    }
    params.merge(payload).each { |key, value|
      req.params[key] = value
    }
    req.body = {
      "ZOHO_FILE" => Faraday::FilePart.new(io, "application/json", "ZOHO_FILE.json")
    }
  end
end

#url_for(path = nil) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/zoho-sdk/analytics/client.rb', line 92

def url_for(path = nil)
  parts = [API_BASE_URL, @email]
  if !path.nil?
    if path[0] == "/"
      path = path[1..-1]
    end
    parts << path
  end
  URI.encode(parts.join("/"))
end

#workspace(name) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/zoho-sdk/analytics/client.rb', line 38

def workspace(name)
  res = get params: {
    "ZOHO_ACTION" => "ISDBEXIST",
    "ZOHO_DB_NAME" => name
  }
  if res.success?
    data = JSON.parse(res.body)
    if data.dig("response", "result", "isdbexist") == "true"
      Workspace.new(name, self)
    else
      nil
    end
  else
    nil
  end
end

#workspace_metadataObject



17
18
19
20
21
22
# File 'lib/zoho-sdk/analytics/client.rb', line 17

def 
  get params: {
    "ZOHO_ACTION" => "DATABASEMETADATA",
    "ZOHO_METADATA" => "ZOHO_CATALOG_LIST"
  }
end