zoho-sdk 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fce71c3e8eef735279ca9f9061e4d9f6851b9873fa6908ced56643d19f4989f3
4
+ data.tar.gz: e9110fb93c90c904dd4841547f1c45a4637a15a5ea88888ebe027033643c80bc
5
+ SHA512:
6
+ metadata.gz: 85dbad7fe201b5257c79ad6e25586a7870ba7a846390fb2dfbfa0fadf014c92920048ed80af03613eb5fff041a422ca5d36f4bf55fad8e99f40285353e598a7f
7
+ data.tar.gz: 2a4ecb2e716507b4c6127d353ffe03a8d41f2f2538de94bc976636f9a35998a865d8ed49f64effd3dca7b7b975f99243fc61b33d34cd9dfa0ceb552dadb2a3b4
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,16 @@
1
+ ---
2
+ os: linux
3
+ dist: xenial
4
+ language: ruby
5
+ cache: bundler
6
+ rvm:
7
+ - 2.5.1
8
+ before_install: gem install bundler -v 2.0.2
9
+ before_script:
10
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
11
+ - chmod +x ./cc-test-reporter
12
+ - ./cc-test-reporter before-build
13
+ script:
14
+ - bundle exec rspec
15
+ after_script:
16
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -0,0 +1,7 @@
1
+ # Zoho SDK changelog
2
+
3
+ All notable changes to zoho-sdk will be documented in this file.
4
+
5
+ ## [Unreleased]
6
+
7
+ [Unreleased]: https://github.com/paulholden2/zoho-sdk/compare/9ebce10...HEAD
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem "simplecov", "~> 0.17.1"
7
+ end
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Paul Holden
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,35 @@
1
+ # Zoho SDK
2
+
3
+ [![Build Status](https://travis-ci.org/paulholden2/zoho-sdk.svg?branch=master)](https://travis-ci.org/paulholden2/zoho-sdk) [![Inline docs](http://inch-ci.org/github/paulholden2/zoho-sdk.svg?branch=master)](http://inch-ci.org/github/paulholden2/zoho-sdk) [![Maintainability](https://api.codeclimate.com/v1/badges/c611ed65df2b9dc7834c/maintainability)](https://codeclimate.com/github/paulholden2/zoho-sdk/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/c611ed65df2b9dc7834c/test_coverage)](https://codeclimate.com/github/paulholden2/zoho-sdk/test_coverage)
4
+
5
+ A library for interacting with Zoho applications via REST API.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'zoho-sdk'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install zoho-sdk
22
+
23
+ ## Usage
24
+
25
+ Check back later.
26
+
27
+ ## Contributing
28
+
29
+ Bug reports and pull requests are welcome on GitHub at
30
+ https://github.com/paulholden2/zoho-sdk.
31
+
32
+ ## License
33
+
34
+ The gem is available as open source under the terms of the
35
+ [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "zoho-sdk"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,4 @@
1
+ require "zoho-sdk/version"
2
+ require "zoho-sdk/analytics"
3
+
4
+ module ZohoSdk; end
@@ -0,0 +1,14 @@
1
+ require "zoho-sdk/analytics/client"
2
+
3
+ module ZohoSdk::Analytics
4
+ class Error < StandardError; end
5
+
6
+ class ColumnAlreadyExistsError < Error
7
+ end
8
+
9
+ class TableAlreadyExistsError < Error
10
+ end
11
+
12
+ class WorkspaceAlreadyExistsError < Error
13
+ end
14
+ end
@@ -0,0 +1,75 @@
1
+ require "faraday"
2
+ require "json"
3
+ require "zoho-sdk/analytics/workspace"
4
+
5
+ module ZohoSdk::Analytics
6
+ API_HOSTNAME = "https://analyticsapi.zoho.com".freeze
7
+ API_PATH = "api".freeze
8
+ API_BASE_URL = "#{API_HOSTNAME}/#{API_PATH}".freeze
9
+
10
+ class Client
11
+ def initialize(email, auth_token)
12
+ @email = email
13
+ @auth_token = auth_token
14
+ end
15
+
16
+ def workspace_metadata
17
+ get params: {
18
+ "ZOHO_ACTION" => "DATABASEMETADATA",
19
+ "ZOHO_METADATA" => "ZOHO_CATALOG_LIST"
20
+ }
21
+ end
22
+
23
+ def create_workspace(name, **opts)
24
+ return if exists?
25
+ res = @client.get params: {
26
+ "ZOHO_ACTION" => "CREATEBLANKDB",
27
+ "ZOHO_DATABASE_NAME" => name,
28
+ "ZOHO_DATABASE_DESC" => opts[:description] || ""
29
+ }
30
+ if res.success?
31
+ data = JSON.parse(res.body)
32
+ Workspace.new(name, self)
33
+ else
34
+ nil
35
+ end
36
+ end
37
+
38
+ def workspace(name)
39
+ res = get params: {
40
+ "ZOHO_ACTION" => "ISDBEXIST",
41
+ "ZOHO_DB_NAME" => name
42
+ }
43
+ if res.success?
44
+ data = JSON.parse(res.body)
45
+ if data.dig("response", "result", "isdbexist") == "true"
46
+ Workspace.new(name, self)
47
+ else
48
+ nil
49
+ end
50
+ else
51
+ nil
52
+ end
53
+ end
54
+
55
+ def get(path: nil, params: {})
56
+ parts = [API_BASE_URL, @email]
57
+ if !path.nil?
58
+ if path[0] == "/"
59
+ path = path[1..-1]
60
+ end
61
+ parts << path
62
+ end
63
+ conn = Faraday.new(url: parts.join("/"))
64
+ res = conn.get do |req|
65
+ req.params["ZOHO_OUTPUT_FORMAT"] = "JSON"
66
+ req.params["ZOHO_ERROR_FORMAT"] = "JSON"
67
+ req.params["ZOHO_API_VERSION"] = "1.0"
68
+ req.params["authtoken"] = @auth_token
69
+ params.each { |key, value|
70
+ req.params[key] = value
71
+ }
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,27 @@
1
+ module ZohoSdk::Analytics
2
+ class Column
3
+ DATA_TYPES = {
4
+ "Auto" => :system,
5
+ "Plain Text" => :plain,
6
+ "E-Mail" => :email,
7
+ "Multi Line Text" => :multi,
8
+ "URL" => :url,
9
+ "Number" => :number,
10
+ "Auto Number" => :auto_number,
11
+ "Positive Number" => :positive_number,
12
+ "Decimal Number" => :decimal_number,
13
+ "Currency" => :currency,
14
+ "Percentage" => :percentage,
15
+ "Date" => :date,
16
+ "Yes/No Decision" => :boolean
17
+ }.freeze
18
+
19
+ attr_reader :name, :table
20
+
21
+ def initialize(name, table, client)
22
+ @name = name
23
+ @table = table
24
+ @client = client
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,155 @@
1
+ require "zoho-sdk/analytics/column"
2
+ require "uri"
3
+
4
+ module ZohoSdk::Analytics
5
+ class Table
6
+ IMPORT_TYPES = {
7
+ :append => "APPEND",
8
+ :truncate_add => "TRUNCATEADD",
9
+ :update_add => "UPDATEADD"
10
+ }.freeze
11
+
12
+ attr_reader :workspace
13
+ attr_reader :columns
14
+ attr_reader :client
15
+
16
+ def initialize(table_name, workspace, client, columns: [])
17
+ @table_name = table_name
18
+ @workspace = workspace
19
+ @client = client
20
+ @columns = columns
21
+ @exists
22
+ end
23
+
24
+ def name
25
+ @table_name
26
+ end
27
+
28
+ def create_column(column_name, type, **opts)
29
+ if !Column::DATA_TYPES.values.include?(type)
30
+ raise ArgumentError.new("Column type must be one of: #{Column::DATA_TYPES.values.join(', ')}")
31
+ end
32
+ @type = type
33
+ @required = opts[:required] || false
34
+ @description = opts[:description] || ""
35
+ res = client.get path: "#{workspace.name}/#{URI.encode(name)}", params: {
36
+ "ZOHO_ACTION" => "ADDCOLUMN",
37
+ "ZOHO_COLUMNNAME" => column_name,
38
+ "ZOHO_DATATYPE" => type.to_s.upcase
39
+ }
40
+ if res.success?
41
+ data = JSON.parse(res.body)
42
+ Column.new(column_name, self, client)
43
+ else
44
+ nil
45
+ end
46
+ end
47
+
48
+ def column(name)
49
+ res = client.get path: "#{workspace.name}/#{URI.encode(name)}", params: {
50
+ "ZOHO_ACTION" => "ISCOLUMNEXIST",
51
+ "ZOHO_COLUMN_NAME" => name
52
+ }
53
+ if res.success?
54
+ data = JSON.parse(res.body)
55
+ if data.dig("response", "result", "iscolumnexist") == "true"
56
+ col = Column.new(name, self, client)
57
+ @columns << col
58
+ col
59
+ else
60
+ nil
61
+ end
62
+ else
63
+ nil
64
+ end
65
+ end
66
+
67
+ def rows
68
+ res = client.get path: "#{workspace.name}/#{name}", params: {
69
+ "ZOHO_ACTION" => "EXPORT"
70
+ }
71
+ end
72
+
73
+ def import(import_type, data, **opts)
74
+ if !IMPORT_TYPES.keys.include?(import_type)
75
+ raise ArgumentError.new("import_type must be one of: #{IMPORT_TYPES.keys.join(', ')}")
76
+ end
77
+
78
+ params = {
79
+ "ZOHO_ACTION" => "IMPORT",
80
+ "ZOHO_IMPORT_DATA" => data.to_json,
81
+ "ZOHO_IMPORT_TYPE" => IMPORT_TYPES[import_type],
82
+ "ZOHO_IMPORT_FILETYPE" => "JSON",
83
+ "ZOHO_ON_IMPORT_ERROR" => "ABORT",
84
+ "ZOHO_CREATE_TABLE" => "false",
85
+ "ZOHO_AUTO_IDENTIFY" => "false"
86
+ }
87
+
88
+ if import_type == :update_add
89
+ matching = opts[:matching] || []
90
+ if !matching.is_a?(Array) || matching.size < 1
91
+ raise ArgumentError.new("Must pass at least one column in `matching` option for UPDATEADD")
92
+ end
93
+
94
+ params["ZOHO_MATCHING_COLUMNS"] = matching.join(',')
95
+ end
96
+
97
+ res = client.get path: "#{workspace.name}/#{name}", params: params
98
+ if res.success?
99
+ data = JSON.parse(res.body)
100
+ data.dig("response", "result", "importSummary", "successRowCount")
101
+ else
102
+ nil
103
+ end
104
+ end
105
+
106
+ def delete(criteria)
107
+ if criteria.nil?
108
+ raise ArgumentError.new("Delete criteria must be specified")
109
+ end
110
+
111
+ delete!(criteria)
112
+ end
113
+
114
+ def delete!(criteria = nil)
115
+ params = {
116
+ "ZOHO_ACTION" => "DELETE"
117
+ }
118
+
119
+ params["ZOHO_CRITERIA"] = criteria if !criteria.nil?
120
+
121
+ res = client.get path: "#{workspace.name}/#{name}", params: params
122
+ if res.success?
123
+ data = JSON.parse(res.body)
124
+ data.dig("response", "result", "deletedrows").to_i
125
+ else
126
+ nil
127
+ end
128
+ end
129
+
130
+ def <<(row)
131
+ params = { "ZOHO_ACTION" => "ADDROW" }
132
+ restricted = %w(
133
+ ZOHO_ACTION
134
+ ZOHO_API_VERSION
135
+ ZOHO_OUTPUT_FORMAT
136
+ ZOHO_ERROR_FORMAT
137
+ authtoken
138
+ )
139
+
140
+ params = row.reject { |key|
141
+ !key.is_a?(String) || restricted.include?(key)
142
+ }.merge(params)
143
+
144
+ res = client.get path: "#{workspace.name}/#{name}", params: params
145
+ if res.success?
146
+ data = JSON.parse(res.body)
147
+ columns = data.dig("response", "result", "column_order")
148
+ values = data.dig("response", "result", "rows", 0)
149
+ columns.zip(values).to_h
150
+ else
151
+ nil
152
+ end
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,72 @@
1
+ require "zoho-sdk/analytics/table"
2
+
3
+ module ZohoSdk::Analytics
4
+ class Workspace
5
+ attr_reader :client
6
+
7
+ def initialize(workspace_name, client)
8
+ @workspace_name = workspace_name
9
+ @client = client
10
+ @metadata = nil
11
+ end
12
+
13
+ def name
14
+ @workspace_name
15
+ end
16
+
17
+ def metadata
18
+ return @metadata if !@metadata.nil?
19
+ metadata!
20
+ end
21
+
22
+ def metadata!
23
+ res = client.get path: name, params: {
24
+ "ZOHO_ACTION" => "DATABASEMETADATA",
25
+ "ZOHO_METADATA" => "ZOHO_CATALOG_INFO"
26
+ }
27
+ if res.success?
28
+ data = JSON.parse(res.body)
29
+ @metadata = data.dig("response", "result")
30
+ @metadata
31
+ else
32
+ nil
33
+ end
34
+ end
35
+
36
+ def create_table(table_name, folder, **opts)
37
+ table_design = {
38
+ "TABLENAME" => table_name,
39
+ "TABLEDESCRIPTION" => opts[:description] || "",
40
+ "FOLDERNAME" => folder || "",
41
+ "COLUMNS" => []
42
+ }.to_json
43
+ res = client.get path: name, params: {
44
+ "ZOHO_ACTION" => "CREATETABLE",
45
+ "ZOHO_TABLE_DESIGN" => table_design
46
+ }
47
+ if res.success?
48
+ data = JSON.parse(res.body)
49
+ Table.new(name, self, client)
50
+ else
51
+ nil
52
+ end
53
+ end
54
+
55
+ def table(table_name)
56
+ res = client.get path: name, params: {
57
+ "ZOHO_ACTION" => "ISVIEWEXIST",
58
+ "ZOHO_VIEW_NAME" => table_name
59
+ }
60
+ if res.success?
61
+ data = JSON.parse(res.body)
62
+ if data.dig("response", "result", "isviewexist") == "true"
63
+ Table.new(table_name, self, client)
64
+ else
65
+ nil
66
+ end
67
+ else
68
+ nil
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ module ZohoSdk
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,39 @@
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "zoho-sdk/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "zoho-sdk"
7
+ spec.version = ZohoSdk::VERSION
8
+ spec.authors = ["Paul Holden"]
9
+ spec.email = ["pholden@stria.com"]
10
+
11
+ spec.summary = "A library for interacting with Zoho applications via REST API."
12
+ spec.description = "A library for interacting with Zoho applications via REST API."
13
+ spec.homepage = "https://github.com/paulholden2/zoho-sdk"
14
+ spec.license = "MIT"
15
+
16
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
17
+
18
+ spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["source_code_uri"] = "https://github.com/paulholden2/zoho-sdk"
20
+ spec.metadata["changelog_uri"] = "https://github.com/paulholden2/zoho-sdk/blob/master/CHANGELOG.md"
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
25
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ end
27
+ spec.bindir = "exe"
28
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ["lib"]
30
+
31
+ spec.add_dependency "faraday", "~> 1.0"
32
+
33
+ spec.add_development_dependency "bundler", "~> 2.0"
34
+ spec.add_development_dependency "rake", ">= 12.3.3"
35
+ spec.add_development_dependency "rspec", "~> 3.0"
36
+ spec.add_development_dependency "sinatra", "~> 2.0"
37
+ spec.add_development_dependency "webmock", "~> 3.6"
38
+ spec.add_development_dependency "yard", "~> 0.9"
39
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zoho-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Paul Holden
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-09-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 12.3.3
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 12.3.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.6'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.6'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.9'
111
+ description: A library for interacting with Zoho applications via REST API.
112
+ email:
113
+ - pholden@stria.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rspec"
120
+ - ".travis.yml"
121
+ - CHANGELOG.md
122
+ - Gemfile
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - bin/console
127
+ - bin/setup
128
+ - lib/zoho-sdk.rb
129
+ - lib/zoho-sdk/analytics.rb
130
+ - lib/zoho-sdk/analytics/client.rb
131
+ - lib/zoho-sdk/analytics/column.rb
132
+ - lib/zoho-sdk/analytics/table.rb
133
+ - lib/zoho-sdk/analytics/workspace.rb
134
+ - lib/zoho-sdk/version.rb
135
+ - zoho-sdk.gemspec
136
+ homepage: https://github.com/paulholden2/zoho-sdk
137
+ licenses:
138
+ - MIT
139
+ metadata:
140
+ allowed_push_host: https://rubygems.org
141
+ homepage_uri: https://github.com/paulholden2/zoho-sdk
142
+ source_code_uri: https://github.com/paulholden2/zoho-sdk
143
+ changelog_uri: https://github.com/paulholden2/zoho-sdk/blob/master/CHANGELOG.md
144
+ post_install_message:
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubygems_version: 3.0.8
160
+ signing_key:
161
+ specification_version: 4
162
+ summary: A library for interacting with Zoho applications via REST API.
163
+ test_files: []