easyllama-client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2272c4bd3d6e675e1c5c6a768f156c7624c1bfb6a0c283ce02dc76af4b980c7f
4
+ data.tar.gz: 419953966eeb58db9b83be9e4de547a581aef9c18740d93b54c2db8184bdd947
5
+ SHA512:
6
+ metadata.gz: 981cfe3b3436caa78ae65e62ab40635a8de7f2f896ee25cb40e25dc3b4baac684700ce4f3fb00372bc3756e16a6aeb8dab48f7c73bdfd3543a0f6d9195cd4a6c
7
+ data.tar.gz: 488d7e16f922ea4e8b34fde90124b09bcf67e4f2b828a6181166393b8845351d0750bc693ee732d00a2bde82f192ecc9bfd1b0c128ffdf02150e85a0560fc0d8
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Easyllama
4
+ module Client
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
4
+ require 'json'
5
+
6
+ module EasyLlama
7
+ # This class provides methods for interacting with the Easy Llama API.
8
+ class Client
9
+ class << self
10
+ API_ROOT = 'https://api.easyllama.com/api/v1'
11
+
12
+ # Sends an HTTP request to the specified path.
13
+ #
14
+ # @param path [String] The path of the API endpoint.
15
+ # @param method [Symbol] The HTTP method (:get, :post, :put, :patch, :delete).
16
+ # @param body [Hash] The request body (optional).
17
+ # @return [Net::HTTPResponse] The HTTP response.
18
+ def send_request(path: nil, method: :get, body: nil)
19
+ uri = build_uri(path)
20
+ request = build_request(uri, method, body)
21
+ execute_request(uri, request)
22
+ end
23
+
24
+ # Parses the response body and returns the value corresponding to the provided key.
25
+ # If the response is successful, returns the value for the key.
26
+ # If the response is unsuccessful, returns an error message.
27
+ #
28
+ # @param response [Net::HTTPResponse] The HTTP response.
29
+ # @param key [String] The key to retrieve from the response body.
30
+ # @return [Object] The value corresponding to the key or an error message.
31
+ def response_body(response, key)
32
+ if response.is_a?(Net::HTTPSuccess)
33
+ JSON.parse(response.body)[key]
34
+ else
35
+ { 'error' => response.message }
36
+ end
37
+ end
38
+
39
+ # Sends a GET request to retrieve locations.
40
+ #
41
+ # @return [Object] The locations or an error message.
42
+ def locations
43
+ response = send_request(path: '/locations')
44
+ response_body(response, 'locations')
45
+ end
46
+
47
+ private
48
+
49
+ def build_uri(path)
50
+ URI("#{API_ROOT}#{path}")
51
+ end
52
+
53
+ def build_request(uri, method, body)
54
+ request = http_method_class(method).new(uri)
55
+ request['content-type'] = 'application/json'
56
+ request['accept'] = 'application/json'
57
+ request['authorization'] = "Bearer #{ENV['EASY_LLAMA_API_TOKEN']}"
58
+ request.body = body.to_json if body.present?
59
+ request
60
+ end
61
+
62
+ def execute_request(uri, request)
63
+ http = Net::HTTP.new(uri.host, uri.port)
64
+ http.use_ssl = true
65
+ http.request(request)
66
+ end
67
+
68
+ def http_method_class(method)
69
+ case method
70
+ when :get then Net::HTTP::Get
71
+ when :post then Net::HTTP::Post
72
+ when :put then Net::HTTP::Put
73
+ when :patch then Net::HTTP::Patch
74
+ when :delete then Net::HTTP::Delete
75
+ else raise ArgumentError, "Http method #{method} not recognized in EasyLlama::Client"
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: easyllama-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Vitalii Kashoid
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-03-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: net-http
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A Ruby gem for Easy Llama API client.
42
+ email:
43
+ - kashoyid@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/easyllama/client.rb
49
+ - lib/easyllama/client/version.rb
50
+ homepage: https://rubygems.org/gems/easyllama-client
51
+ licenses:
52
+ - MIT
53
+ metadata:
54
+ source_code_uri: https://github.com/Kashoid23/easyllama-client.git
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 3.1.4
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ requirements: []
70
+ rubygems_version: 3.3.26
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: A Ruby gem for Easy Llama API client.
74
+ test_files: []