sucharyruby 1.0.0 → 1.1.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 +4 -4
- data/README.md +43 -48
- data/example/example.rb +13 -1
- data/lib/sucharyruby/version.rb +1 -1
- data/lib/sucharyruby.rb +71 -0
- data/sig/sucharyruby.rbs +4 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a4f6a70f04bd57e8a4569c0bee784ccea800de1bc4000833aa3caaee100e850b
|
|
4
|
+
data.tar.gz: '04329a6c1138dcdb1763a57f60adc36827f93cf63a0517b799d7fba0dae78b10'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 48ed408b340d8ca6dfcf7a5ef2225da1c54649c9432cedd312a7e959ce8697169fc568040e7703df57fc408fecd79124be53b5af856df8b329ee352ff4cea3b6
|
|
7
|
+
data.tar.gz: 84d29d5115f6281163aa2969f335f289165019259a313f4b063d77707abdcae59f05152a40f003f5474593d9d7cff2291935c3c5476e0b2cb20893e4568a3fb0
|
data/README.md
CHANGED
|
@@ -1,60 +1,80 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# SucharyRuby - oficjalna biblioteka bazy SucharyAPI
|
|
2
|
+
Biblioteka Ruby do pobierania kawałów z ogólnopolskiej bazy SucharyAPI
|
|
3
3
|
|
|
4
|
-
[](https://www.ruby-lang.org/)
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
## 🚀 Instalacja
|
|
10
10
|
### Za pomocą gem
|
|
11
|
-
|
|
12
11
|
```bash
|
|
13
12
|
gem install sucharyruby
|
|
14
13
|
```
|
|
15
14
|
|
|
16
15
|
### Za pomocą Bundlera
|
|
17
|
-
|
|
18
|
-
(W pliku Gemfile)
|
|
19
|
-
```ruby
|
|
20
|
-
gem "sucharyruby"
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
albo w nowym Bundlerze:
|
|
24
|
-
(komenda)
|
|
25
16
|
```bash
|
|
26
17
|
bundle add sucharyruby
|
|
27
18
|
```
|
|
28
19
|
|
|
29
20
|
---
|
|
30
21
|
|
|
31
|
-
## ⚡
|
|
22
|
+
## ⚡ Suchary
|
|
32
23
|
### Pobranie losowego suchara
|
|
33
|
-
|
|
34
24
|
```ruby
|
|
35
25
|
require "sucharyruby"
|
|
36
26
|
|
|
27
|
+
# Pobierz losowy suchar z dowolnej kategorii
|
|
37
28
|
suchar = Sucharyruby.dajKawal
|
|
38
29
|
puts suchar
|
|
39
30
|
```
|
|
40
31
|
|
|
41
32
|
### Pobranie suchara z konkretnej kategorii
|
|
42
|
-
|
|
43
33
|
```ruby
|
|
44
34
|
require "sucharyruby"
|
|
45
35
|
|
|
46
|
-
#
|
|
36
|
+
# Pobierz suchar z kategorii "programowanie"
|
|
47
37
|
suchar = Sucharyruby.dajKawal("programowanie")
|
|
38
|
+
puts suchar
|
|
39
|
+
```
|
|
48
40
|
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
### Pobranie większej liczby sucharów
|
|
42
|
+
```ruby
|
|
43
|
+
require "sucharyruby"
|
|
51
44
|
|
|
52
|
-
|
|
45
|
+
# Pobierz 3 suchary
|
|
46
|
+
suchary = Sucharyruby.wieleKawalow(3)
|
|
47
|
+
puts suchary
|
|
48
|
+
|
|
49
|
+
# Funkcja wieleKawalow() zwraca listę (array []) z żartami
|
|
53
50
|
```
|
|
54
51
|
|
|
55
52
|
---
|
|
56
53
|
|
|
57
|
-
##
|
|
54
|
+
## Masakry
|
|
55
|
+
### Pobranie masakry
|
|
56
|
+
```ruby
|
|
57
|
+
require "sucharyruby"
|
|
58
|
+
|
|
59
|
+
# Pobierz masakrę
|
|
60
|
+
masakra = Sucharyruby.masakra
|
|
61
|
+
puts masakra
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Pobranie większej liczby masakr
|
|
65
|
+
```ruby
|
|
66
|
+
require "sucharyruby"
|
|
67
|
+
|
|
68
|
+
# Pobierz 3 masakry
|
|
69
|
+
masakry = Sucharyruby.wieleMasakr(3)
|
|
70
|
+
puts masakry
|
|
71
|
+
|
|
72
|
+
# Funkcja wieleMasakr() zwraca listę (array []) z masakrami
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Kategorie sucharów
|
|
58
78
|
- `"programowanie"` - Suchary o programowaniu
|
|
59
79
|
- `"dwuznaczne"` - Suchary dwuznaczne
|
|
60
80
|
- `"szkolne"` - Suchary szkolne
|
|
@@ -66,45 +86,20 @@ puts suchar
|
|
|
66
86
|
---
|
|
67
87
|
|
|
68
88
|
## 🛡️ Obsługa błędów
|
|
69
|
-
|
|
70
89
|
Biblioteka rzuca sformalizowane wyjątki, które możesz łatwo obsługiwać:
|
|
71
|
-
|
|
72
90
|
### Dostępne wyjątki
|
|
73
|
-
|
|
74
91
|
- `Sucharyruby::SucharyError` - Bazowy wyjątek, rodzic wszystkich błędów z biblioteki
|
|
75
|
-
- `Sucharyruby::KategoriaError` - Nieprawidłowa kategoria
|
|
76
|
-
- `Sucharyruby::ConnectionError` - Problemy z połączeniem (brak internetu, timeout)
|
|
77
92
|
- `Sucharyruby::HTTPError` - Błędy serwera (np. 404 dla nieistniejącej kategorii)
|
|
78
|
-
- `Sucharyruby::TimeoutError` -
|
|
79
|
-
|
|
80
|
-
### Przykład obsługi błędów
|
|
81
|
-
|
|
82
|
-
```ruby
|
|
83
|
-
require "sucharyruby"
|
|
84
|
-
|
|
85
|
-
begin
|
|
86
|
-
suchar = Sucharyruby.dajKawal("programowanie")
|
|
87
|
-
puts suchar
|
|
88
|
-
rescue Sucharyruby::ConnectionError
|
|
89
|
-
puts "❌ Błąd połączenia - sprawdź połączenie internetowe!"
|
|
90
|
-
rescue Sucharyruby::HTTPError => e
|
|
91
|
-
puts "❌ Błąd serwera: #{e.status} - #{e.message}"
|
|
92
|
-
rescue Sucharyruby::KategoriaError => e
|
|
93
|
-
puts "❌ Nieprawidłowa kategoria: #{e.message}"
|
|
94
|
-
rescue Sucharyruby::SucharyError => e
|
|
95
|
-
puts "❌ Nieoczekiwany błąd: #{e.message}"
|
|
96
|
-
end
|
|
97
|
-
```
|
|
93
|
+
- `Sucharyruby::TimeoutError` - Żądanie przekroczyło limit czasu (6.5s)
|
|
94
|
+
- `Sucharyruby::ConnectionError` - Problemy z połączeniem (brak internetu)
|
|
98
95
|
|
|
99
96
|
---
|
|
100
97
|
|
|
101
98
|
## 📡 API
|
|
102
|
-
|
|
103
99
|
Biblioteka jest produktem oraz korzysta z oficjalnej bazy SucharyAPI:
|
|
104
|
-
🔗 https://sucharyapi.onrender.com
|
|
100
|
+
🔗 [https://sucharyapi.onrender.com](https://sucharyapi.onrender.com)
|
|
105
101
|
|
|
106
102
|
---
|
|
107
103
|
|
|
108
104
|
## 📝 Licencja
|
|
109
|
-
|
|
110
105
|
MIT
|
data/example/example.rb
CHANGED
|
@@ -22,4 +22,16 @@ rescue Sucharyruby::KategoriaError => e
|
|
|
22
22
|
puts "Wyłapano błąd kategorii: #{e.message}"
|
|
23
23
|
rescue Sucharyruby::SucharyError => e
|
|
24
24
|
puts "Wyłapano ogólny błąd biblioteki: #{e.message}"
|
|
25
|
-
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# 4. Wiele żartów (3)
|
|
28
|
+
puts "\n4. Wiele żartów (3): "
|
|
29
|
+
puts Sucharyruby.wieleKawalow(3)
|
|
30
|
+
|
|
31
|
+
# 5. Masakra
|
|
32
|
+
puts "\n5. Masakra: "
|
|
33
|
+
puts Sucharyruby.masakra
|
|
34
|
+
|
|
35
|
+
# 6. Wiele masakr (3)
|
|
36
|
+
puts "\n6. Wiele masakr (3): "
|
|
37
|
+
puts Sucharyruby.wieleMasakr(3)
|
data/lib/sucharyruby/version.rb
CHANGED
data/lib/sucharyruby.rb
CHANGED
|
@@ -35,6 +35,7 @@ module Sucharyruby
|
|
|
35
35
|
# Customowe błędy
|
|
36
36
|
class SucharyError < StandardError; end
|
|
37
37
|
class KategoriaError < SucharyError; end
|
|
38
|
+
class IloscError < SucharyError; end
|
|
38
39
|
class ConnectionError < SucharyError; end
|
|
39
40
|
class HTTPError < SucharyError
|
|
40
41
|
attr_reader :status
|
|
@@ -80,4 +81,74 @@ module Sucharyruby
|
|
|
80
81
|
raise SucharyError, "Otrzymano niepoprawny format danych z serwera: #{e.message}"
|
|
81
82
|
end
|
|
82
83
|
end
|
|
84
|
+
|
|
85
|
+
def self.wieleKawalow(ilosc)
|
|
86
|
+
dane = pobierz_json("/zart/#{zwaliduj_ilosc(ilosc)}")
|
|
87
|
+
unless dane.is_a?(Array)
|
|
88
|
+
raise SucharyError, "Serwer zwrócił niepoprawną listę kawałów"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
dane.map do |zart|
|
|
92
|
+
unless zart.is_a?(Hash) && zart["tresc"].is_a?(String)
|
|
93
|
+
raise SucharyError, "Serwer zwrócił niepoprawny kawał"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
zart["tresc"]
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def self.masakra
|
|
101
|
+
dane = pobierz_json("/masakra")
|
|
102
|
+
unless dane.is_a?(Hash) && dane["masakra"].is_a?(String)
|
|
103
|
+
raise SucharyError, "Serwer zwrócił niepoprawną masakrę"
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
dane["masakra"]
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def self.wieleMasakr(ilosc)
|
|
110
|
+
dane = pobierz_json("/masakra/#{zwaliduj_ilosc(ilosc)}")
|
|
111
|
+
unless dane.is_a?(Array)
|
|
112
|
+
raise SucharyError, "Serwer zwrócił niepoprawną listę masakr"
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
dane.map do |masakra|
|
|
116
|
+
unless masakra.is_a?(Hash) && masakra["masakra"].is_a?(String)
|
|
117
|
+
raise SucharyError, "Serwer zwrócił niepoprawną masakrę"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
masakra["masakra"]
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def self.zwaliduj_ilosc(ilosc)
|
|
125
|
+
unless ilosc.is_a?(Integer) && ilosc.positive?
|
|
126
|
+
raise IloscError, "Ilość musi być dodatnią liczbą całkowitą"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
ilosc
|
|
130
|
+
end
|
|
131
|
+
private_class_method :zwaliduj_ilosc
|
|
132
|
+
|
|
133
|
+
def self.pobierz_json(sciezka)
|
|
134
|
+
adres = URI.parse("https://sucharyapi.onrender.com#{sciezka}")
|
|
135
|
+
http = Net::HTTP.new(adres.host, adres.port)
|
|
136
|
+
http.use_ssl = (adres.scheme == "https")
|
|
137
|
+
http.open_timeout = 6.5
|
|
138
|
+
http.read_timeout = 6.5
|
|
139
|
+
odpowiedz = http.request(Net::HTTP::Get.new(adres))
|
|
140
|
+
|
|
141
|
+
unless odpowiedz.is_a?(Net::HTTPSuccess)
|
|
142
|
+
raise HTTPError.new(odpowiedz.code.to_i, "Serwer zwrócił kod błędu #{odpowiedz.code}")
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
JSON.parse(odpowiedz.body)
|
|
146
|
+
rescue Net::OpenTimeout, Net::ReadTimeout => e
|
|
147
|
+
raise TimeoutError, "Zapytanie przekroczyło limit czasu: #{e.message}"
|
|
148
|
+
rescue SocketError, Errno::ECONNREFUSED => e
|
|
149
|
+
raise ConnectionError, "Błąd połączenia z serwerem: #{e.message}"
|
|
150
|
+
rescue JSON::ParserError => e
|
|
151
|
+
raise SucharyError, "Otrzymano niepoprawny format danych z serwera: #{e.message}"
|
|
152
|
+
end
|
|
153
|
+
private_class_method :pobierz_json
|
|
83
154
|
end
|
data/sig/sucharyruby.rbs
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
module Sucharyruby
|
|
2
2
|
VERSION: String
|
|
3
|
-
|
|
3
|
+
def self.wieleKawalow: (Integer ilosc) -> Array[String]
|
|
4
|
+
def self.wieleZartow: (Integer ilosc) -> Array[String]
|
|
5
|
+
def self.masakra: () -> String
|
|
6
|
+
def self.wieleMasakr: (Integer ilosc) -> Array[String]
|
|
4
7
|
end
|