zoho_books 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 361db4d725ee80905bd61dee25747fcba27a32f67625f39a09825e50cbd3989d
4
- data.tar.gz: 62fe877e889b41ff6ccf6ed9829efe3873051f1b6afbe1b747c9323798b2564b
3
+ metadata.gz: bb4b8600d21b217c2da5192625ef25fb2148a45bbe74107b19c34dba8c0dd8d2
4
+ data.tar.gz: 0265b974da780a632dbd3c5a8bc441413a3c81ff04201c7bf7d4aa1ef83a2325
5
5
  SHA512:
6
- metadata.gz: 798365b51bfcb81ff40196410074bc093f2333feec67b0fa5efe7d4b2ed69454f355041d75659803b9efd778d1fc929173a7c05a8f15a2ff6b4ce7eb469daf41
7
- data.tar.gz: ce61eff3af72a1868c47479f962645644046f3eef12479d5f9857836221813aabf95f10bc0e6298e57169de271cbb32cdedb8d0d21b6edb8eb632cd58d977d45
6
+ metadata.gz: '08a246a314ef77fc8dac92e7d3ee6973aa6766c9783a793f641a342d91c94ac366fdad3ec09622c201a518ff0d03536dfe7d4279125b40423db7d5e06983879d'
7
+ data.tar.gz: 4337a73f4112cd54a7c0cfd106f4f10c0f41bdea7cfb192615580814b105a03469324de06a9ad7e20d1407fa7696b1cefb9ce18016dbc4cf6c7c8e61eb3ac432
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  require 'httparty'
3
- require 'zoho_books/error'
4
- require 'zoho_books/config'
5
3
 
6
4
  module ZohoBooks
7
5
  class Auth
@@ -0,0 +1,30 @@
1
+ module ZohoBooks
2
+ class Config
3
+ attr_accessor :client_id, :client_secret, :redirect_uri, :refresh_token, :base_url,
4
+ :portal_id, :access_token, :organization_id, :refresh_token, :access_token_expires_at
5
+
6
+ DEFAULT_BASE_URL = "https://accounts.zoho.eu".freeze
7
+
8
+ def initialize(config = {})
9
+ @base_url = config["base_url"] || DEFAULT_BASE_URL
10
+ @portal_id = config["portal_id"]
11
+ @access_token = config["access_token"]
12
+ @client_id = config["client_id"]
13
+ @client_secret = config["client_secret"]
14
+ @redirect_uri = config["redirect_uri"]
15
+ @organization_id = config["organization_id"]
16
+ @refresh_token = config["refresh_token"]
17
+
18
+ @access_token_expires_at = nil
19
+ end
20
+ end
21
+
22
+ class << self
23
+ attr_accessor :config
24
+
25
+ def configure
26
+ self.config ||= Config.new
27
+ yield(config)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+ require 'httparty'
3
+
4
+ module ZohoBooks
5
+ class Connection
6
+
7
+ def self.get(url)
8
+ response = HTTParty.get(url, headers: headers)
9
+
10
+ return ZohoBooks::Error.new(response.code, response["error"]) if response.code != 200
11
+
12
+ response
13
+ end
14
+
15
+ def self.post(url, body)
16
+ response = HTTParty.post(url, body: body, headers: headers)
17
+
18
+ return render_error(response) if response.code != 201
19
+
20
+ response
21
+ end
22
+
23
+ def self.put(url, body)
24
+ response = HTTParty.put(url, body: body, headers: headers)
25
+
26
+ return render_error(response) if response.code != 200
27
+
28
+ response
29
+ end
30
+
31
+ def self.delete(url)
32
+ response = HTTParty.delete(url, headers: headers)
33
+
34
+ return render_error(response) if response.code != 200
35
+
36
+ response
37
+ end
38
+
39
+ private
40
+
41
+ def self.headers
42
+ {
43
+ 'Authorization' => "Zoho-oauthtoken #{access_token}",
44
+ 'Content-Type' => 'application/json'
45
+ }
46
+ end
47
+
48
+ def self.access_token
49
+ if ZohoBooks.config.access_token_expires_at.nil? || ZohoBooks.config.access_token_expires_at < Time.now.to_i
50
+ ZohoBooks::Auth.refresh_access_token
51
+ else
52
+ ZohoBooks.config.access_token
53
+ end
54
+ end
55
+
56
+ def self.render_error(response)
57
+ ZohoBooks::Error.new(response.code, response["message"] || '')
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ require 'httparty'
3
+
4
+ module ZohoBooks
5
+ BASE_URL='https://www.zohoapis.eu/books/v3'
6
+
7
+ class Contact
8
+ def self.list(opts = {})
9
+ query = opts.map { |k, v| "#{k}=#{v}" }.join('&')
10
+ ZohoBooks::Connection.get("#{BASE_URL}/contacts?organization_id=#{ZohoBooks.config.organization_id}&#{query}")
11
+ end
12
+
13
+ def self.get(id, opts = {})
14
+ ZohoBooks::Connection.get("#{BASE_URL}/contacts/#{id}?organization_id=#{ZohoBooks.config.organization_id}")
15
+ end
16
+
17
+ def self.create(body, opts = {})
18
+ ZohoBooks::Connection.post("#{BASE_URL}/contacts?organization_id=#{ZohoBooks.config.organization_id}", body.to_json)
19
+ end
20
+
21
+ def self.update(id, body, opts = {})
22
+ ZohoBooks::Connection.put("#{BASE_URL}/contacts/#{id}?organization_id=#{ZohoBooks.config.organization_id}", body.to_json)
23
+ end
24
+
25
+ def self.delete(id, opts = {})
26
+ ZohoBooks::Connection.delete("#{BASE_URL}/contacts/#{id}?organization_id=#{ZohoBooks.config.organization_id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ require 'httparty'
3
+
4
+ module ZohoBooks
5
+ BASE_URL='https://www.zohoapis.eu/books/v3'
6
+
7
+ class Item
8
+ def self.list(opts = {})
9
+ query = opts.map { |k, v| "#{k}=#{v}" }.join('&')
10
+ ZohoBooks::Connection.get("#{BASE_URL}/items?organization_id=#{ZohoBooks.config.organization_id}&#{query}")
11
+ end
12
+
13
+ def self.create(body, opts = {})
14
+ ZohoBooks::Connection.post("#{BASE_URL}/items?organization_id=#{ZohoBooks.config.organization_id}", body.to_json)
15
+ end
16
+
17
+ def self.update(id, body, opts = {})
18
+ ZohoBooks::Connection.put("#{BASE_URL}/items/#{id}?organization_id=#{ZohoBooks.config.organization_id}", body.to_json)
19
+ end
20
+
21
+ def self.delete(id, opts = {})
22
+ ZohoBooks::Connection.delete("#{BASE_URL}/items/#{id}?organization_id=#{ZohoBooks.config.organization_id}")
23
+ end
24
+ end
25
+ end
data/lib/zoho_books.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  module ZohoBooks
2
2
  end
3
3
 
4
- require_relative 'zoho_books/auth'
5
- require_relative 'zoho_books/error'
6
- require_relative 'zoho_books/connection'
7
- require_relative 'zoho_books/item'
8
- require_relative 'zoho_books/config'
4
+ require 'zoho_books/auth'
5
+ require 'zoho_books/error'
6
+ require 'zoho_books/connection'
7
+ require 'zoho_books/item'
8
+ require 'zoho_books/config'
9
+ require 'zoho_books/contact'
9
10
 
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zoho_books
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - PapaLoup
8
8
  - Raphtml
9
- autorequire:
9
+ - theobcl
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2023-09-25 00:00:00.000000000 Z
13
+ date: 2023-10-02 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: httparty
@@ -33,12 +34,16 @@ extra_rdoc_files: []
33
34
  files:
34
35
  - lib/zoho_books.rb
35
36
  - lib/zoho_books/auth.rb
37
+ - lib/zoho_books/config.rb
38
+ - lib/zoho_books/connection.rb
39
+ - lib/zoho_books/contact.rb
36
40
  - lib/zoho_books/error.rb
41
+ - lib/zoho_books/item.rb
37
42
  homepage: https://rubygems.org/gems/zoho_books
38
43
  licenses:
39
44
  - MIT
40
45
  metadata: {}
41
- post_install_message:
46
+ post_install_message:
42
47
  rdoc_options: []
43
48
  require_paths:
44
49
  - lib
@@ -53,8 +58,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
58
  - !ruby/object:Gem::Version
54
59
  version: '0'
55
60
  requirements: []
56
- rubygems_version: 3.3.7
57
- signing_key:
61
+ rubygems_version: 3.1.6
62
+ signing_key:
58
63
  specification_version: 4
59
64
  summary: Zoho Books API wrapper
60
65
  test_files: []