promptjoy-ruby 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 310a49711f3259ee888236d1e463e7dbe800d9e984da38c22050f3e98dd8293d
4
- data.tar.gz: ba442e4c722d1cb91be33204590bf532dccb8e72a2caf70c796d1c8cb66d3508
3
+ metadata.gz: b5cbf24cd878b9fd62c664a1033aa5961b8768e06069d40f85234e1e25d4210c
4
+ data.tar.gz: '0958ab3a92dc55778900be7a785b2d32818dd5b0b8eca6414b27b00a901039e7'
5
5
  SHA512:
6
- metadata.gz: beda92c16b2d6f34955f2ff2bb85ebe0c17dae1dd4dfb9dc05ae95ca1d3ea2ee1201c387658794d36115416a15ab400fd139f3c5aa1586f2ce88e677be1067fd
7
- data.tar.gz: a9c24e4fba7592862c0acddaff3fc67c4eaf8d035e02cb4b0f7b88603c1060a36e154ab00dd74540a0dc62f90a12a7b8c78e50edc8ff75611e1f047ac700ecff
6
+ metadata.gz: a6d4d61af49df233f084f955ff22fa58df79f61e4d533613b94f80fb8ac64443c98863088356b130b71f4dd8fa7ef7af0bc5475b4b9917e26d3805c69afb6b4d
7
+ data.tar.gz: 1500f2211ce37c87d590a26810dcdc0cf8341a4019ca5340d51141ff9cb19590106a3913d8096522d1b70a67e61cdc20cacbf9965265584f8c0c21a7c63bd621
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- promptjoy-ruby (0.1.1)
4
+ promptjoy-ruby (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -2,7 +2,14 @@
2
2
 
3
3
  Welcome to the official Ruby client for the [PromptJoy](https://promptjoy.com).
4
4
 
5
- PromptJoy is a platform that enables you to build scalable APIs by simply describing what you want. This client helps you interact with PromptJoy in a Ruby-friendly way.
5
+ [PromptJoy](https://promptjoy.com) is a platform that enables you to build scalable APIs by simply describing what you want.
6
+
7
+ Example APIs built on [PromptJoy](https://promptjoy.com):
8
+ * Travel recommendation https://promptjoy.com/apis/mPBCOr
9
+ * TV show -> podcast recommendation: https://promptjoy.com/apis/mxqCWW
10
+ * Schema transformation: https://promptjoy.com/apis/jn8Cep
11
+ * Book search engine: https://promptjoy.com/apis/mVMCpq
12
+
6
13
 
7
14
  ## Installation
8
15
 
@@ -36,12 +43,16 @@ client = PromptjoyRuby::Client.new('your_api_key')
36
43
 
37
44
  ```
38
45
 
39
- You can find the API you want to interact with by using its URL:
46
+ You can find the API you want to interact with by using its URL. You can find the URL in the endpoint field of the API's page:
40
47
 
41
48
  ```ruby
42
- api = client.find_by_api_url('https://api.promptjoy.com/test-endpoint')
49
+ api = client.find_by_api_url('https://api.promptjoy.com/api/id')
43
50
  ```
44
51
 
52
+ You can also just find the API by its id:
53
+ ```ruby
54
+ api = client.find('id')
55
+ ```
45
56
 
46
57
 
47
58
  To call the API, pass in the data as a Hash:
@@ -53,6 +64,20 @@ response = api.call({
53
64
  })
54
65
  ```
55
66
 
67
+ ## Example
68
+
69
+ The following example uses PromptJoy to build an API that recommends an open-source software package based on a problem to be solved: https://promptjoy.com/apis/jNqC7A
70
+
71
+ ``` ruby
72
+ > require 'promptjoy-ruby'
73
+ > client = PromptjoyRuby::Client.new('***********************')
74
+ > api = client.find_by_api_url('https://api.promptjoy.com/api/jNqC7A')
75
+ > response = api.call({problem: "queue processing in ruby"})
76
+ > puts response
77
+
78
+ {"software"=>"Sidekiq", "reason"=>"Efficient and reliable background processing
79
+ for Ruby", "github_url"=>"https://github.com/mperham/sidekiq"}
80
+ ```
56
81
 
57
82
 
58
83
  ## Error Handling
@@ -1,3 +1,3 @@
1
1
  module PromptjoyRuby
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -10,7 +10,9 @@ module PromptjoyRuby
10
10
  class Error < StandardError; end
11
11
 
12
12
  class Client
13
- def initialize(api_key = nil, logger: Logger.new(STDOUT))
13
+ BASE_API_URL = "https://api.promptjoy.com"
14
+
15
+ def initialize(api_key = nil, logger: Logger.new(STDOUT), timeout: 120)
14
16
  @api_key = api_key
15
17
  @logger = logger
16
18
  end
@@ -18,12 +20,17 @@ module PromptjoyRuby
18
20
  def find_by_api_url(url, api_key: nil)
19
21
  Api.new(api_key || @api_key, url, logger: @logger)
20
22
  end
23
+
24
+ def find(id)
25
+ url = "#{BASE_API_URL}/api/#{id}"
26
+ Api.new(@api_key, url, logger: @logger)
27
+ end
21
28
  end
22
29
 
23
30
  class Api
24
31
  USER_AGENT = "PromptjoyRubyGem/#{PromptjoyRuby::VERSION}"
25
32
 
26
- def initialize(api_key, url, logger: Logger.new(STDOUT))
33
+ def initialize(api_key, url, logger: Logger.new(STDOUT), timeout: 120)
27
34
  @api_key = api_key
28
35
  @url = url
29
36
  @logger = logger
@@ -32,7 +39,9 @@ module PromptjoyRuby
32
39
  def call(api_data, client_ip = nil, referrer = nil)
33
40
  uri = URI(@url)
34
41
  http = Net::HTTP.new(uri.host, uri.port)
35
-
42
+ http.open_timeout = @timeout
43
+ http.read_timeout = @timeout
44
+
36
45
  if uri.scheme == 'https'
37
46
  http.use_ssl = true
38
47
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promptjoy-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - PromptJoy Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-18 00:00:00.000000000 Z
11
+ date: 2023-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec