gbro_teemill 0.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7b3e11c97aedb5a09bb065b9098d6f01c1b1a176d162a2037f9b60c220c3685b
4
+ data.tar.gz: c0d792effde9e0648c5d0255716a7f6a307ac7d586fd35c9d38dbf1d7fa8e576
5
+ SHA512:
6
+ metadata.gz: db3e9f344fa41aae31b46123ba3c72a9032f1ac0b4c8543b81d16ede9411f99fad668d97744cd6cdd876ba2e0c58b092818210855d7728da8dddd4640061c50d
7
+ data.tar.gz: c3919c09f1c3532d24be6ca66d578832ae54e558e9d3f6dd6a0413d9435ae874e1ac05c0db08deb5fe6c60ad912350c0b43fd76fbbeb5cbbaddfaf6df79b0944
data/config.rb ADDED
@@ -0,0 +1,10 @@
1
+ module Teemill
2
+ class Config
3
+ attr_accessor :api_key, :api_base, :api_version, :bearer_token
4
+
5
+ def initialize
6
+ @api_version = 1
7
+ @api_base = 'https://api.teemill.com'
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,53 @@
1
+ require 'json'
2
+ require 'uri'
3
+ require 'net/http'
4
+ require 'openssl'
5
+
6
+ class BaseResource
7
+ def base_url
8
+ "#{Teemill.api_base}/v#{Teemill.api_version}"
9
+ end
10
+
11
+ def authenticated_request_headers
12
+ { Authorization: Teemill.api_key }
13
+ end
14
+
15
+ def add_authentication_headers(request)
16
+ authenticated_request_headers.each_key do |header|
17
+ request[header] = authenticated_request_headers[header]
18
+ end
19
+ end
20
+
21
+ def send_request(request_url, data, method = 'GET')
22
+ url = URI("#{base_url}#{request_url}")
23
+
24
+ http = create_http(url)
25
+
26
+ request = Net::HTTP::Post.new(url) if method == 'POST'
27
+ request = Net::HTTP::Get.new(url) if method == 'GET'
28
+
29
+ request['Content-Type'] = 'application/json'
30
+
31
+ add_authentication_headers(request)
32
+
33
+ request.body = JSON.generate(data) if method == 'POST'
34
+
35
+ response = http.request(request)
36
+ JSON.parse(response.read_body)
37
+ end
38
+
39
+ def create_http(url)
40
+ http = Net::HTTP.new(url.host, url.port)
41
+ http.use_ssl = true
42
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
43
+ http
44
+ end
45
+
46
+ def send_post_request(request_url, data)
47
+ send_request(request_url, data, 'POST')
48
+ end
49
+
50
+ def send_get_request(request_url, data)
51
+ send_request(request_url, data, 'GET')
52
+ end
53
+ end
@@ -0,0 +1,11 @@
1
+ require_relative './base_resource'
2
+
3
+ class BearerTokenAuthenticatedResource < BaseResource
4
+ def authenticated_request_headers
5
+ { Authorization: "Bearer #{Teemill.bearer_token}" }
6
+ end
7
+
8
+ def base_url
9
+ "#{Teemill.api_base}/omnis/v3"
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require_relative './base/bearer_token_authenticated_resource'
2
+
3
+ module Teemill
4
+ class CustomProduct < BearerTokenAuthenticatedResource
5
+ def self.create(options)
6
+ self.new.send_post_request(
7
+ '/product/create',
8
+ options
9
+ )
10
+ end
11
+ end
12
+ end
@@ -0,0 +1 @@
1
+ require_relative './custom_product'
data/teemill.rb ADDED
@@ -0,0 +1,18 @@
1
+ require_relative './resources/resources'
2
+ require_relative './config'
3
+ require 'forwardable'
4
+
5
+ module Teemill
6
+ @config = Config.new
7
+
8
+ class << self
9
+ extend Forwardable
10
+
11
+ attr_reader :config
12
+
13
+ def_delegators :@config, :api_key, :api_key=
14
+ def_delegators :@config, :bearer_token, :bearer_token=
15
+ def_delegators :@config, :api_version, :api_version=
16
+ def_delegators :@config, :api_base, :api_base=
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gbro_teemill
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - G-Bro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-11-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - config.rb
20
+ - resources/base/base_resource.rb
21
+ - resources/base/bearer_token_authenticated_resource.rb
22
+ - resources/custom_product.rb
23
+ - resources/resources.rb
24
+ - teemill.rb
25
+ homepage: https://teemill.com/api-docs/
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubygems_version: 3.1.2
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: An SDK for the Teemill API
48
+ test_files: []