GiphyClient 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/Gemfile.lock +69 -0
  4. data/GiphyClient.gemspec +44 -0
  5. data/README.md +152 -0
  6. data/Rakefile +7 -0
  7. data/config.json +18 -0
  8. data/docs/BaseChannelModel.md +36 -0
  9. data/docs/BaseChannelModelGifs.md +9 -0
  10. data/docs/Breadcrumb.md +10 -0
  11. data/docs/Category.md +11 -0
  12. data/docs/ChannelWithChildrenModel.md +37 -0
  13. data/docs/ChannelWithChildrenModelChildren.md +9 -0
  14. data/docs/DefaultApi.md +731 -0
  15. data/docs/Gif.md +36 -0
  16. data/docs/GifImages.md +27 -0
  17. data/docs/GifImagesDownsized.md +11 -0
  18. data/docs/GifImagesDownsizedLarge.md +11 -0
  19. data/docs/GifImagesDownsizedMedium.md +11 -0
  20. data/docs/GifImagesDownsizedSmall.md +11 -0
  21. data/docs/GifImagesDownsizedStill.md +10 -0
  22. data/docs/GifImagesFixedHeight.md +15 -0
  23. data/docs/GifImagesFixedHeightDownsampled.md +13 -0
  24. data/docs/GifImagesFixedHeightSmall.md +15 -0
  25. data/docs/GifImagesFixedHeightSmallStill.md +10 -0
  26. data/docs/GifImagesFixedHeightStill.md +10 -0
  27. data/docs/GifImagesFixedWidth.md +15 -0
  28. data/docs/GifImagesFixedWidthDownsampled.md +13 -0
  29. data/docs/GifImagesFixedWidthSmall.md +15 -0
  30. data/docs/GifImagesFixedWidthSmallStill.md +10 -0
  31. data/docs/GifImagesFixedWidthStill.md +10 -0
  32. data/docs/GifImagesLooping.md +8 -0
  33. data/docs/GifImagesOriginal.md +16 -0
  34. data/docs/GifImagesOriginalStill.md +10 -0
  35. data/docs/GifImagesPreview.md +11 -0
  36. data/docs/GifImagesPreviewGif.md +11 -0
  37. data/docs/InlineResponse200.md +10 -0
  38. data/docs/InlineResponse2001.md +9 -0
  39. data/docs/InlineResponse2002.md +9 -0
  40. data/docs/InlineResponse2003.md +10 -0
  41. data/docs/InlineResponse2004.md +10 -0
  42. data/docs/InlineResponse2005.md +10 -0
  43. data/docs/InlineResponse400.md +8 -0
  44. data/docs/LastChildModel.md +37 -0
  45. data/docs/LastChildModelChildren.md +9 -0
  46. data/docs/MetaContent.md +10 -0
  47. data/docs/MetaObject.md +8 -0
  48. data/docs/Pagination.md +10 -0
  49. data/docs/RandomGif.md +30 -0
  50. data/docs/ShallowTag.md +9 -0
  51. data/docs/Tag.md +9 -0
  52. data/docs/TrendingTag.md +10 -0
  53. data/docs/User.md +13 -0
  54. data/generate.sh +12 -0
  55. data/git_push.sh +55 -0
  56. data/lib/GiphyClient.rb +84 -0
  57. data/lib/GiphyClient/api/default_api.rb +952 -0
  58. data/lib/GiphyClient/api_client.rb +375 -0
  59. data/lib/GiphyClient/api_error.rb +37 -0
  60. data/lib/GiphyClient/configuration.rb +195 -0
  61. data/lib/GiphyClient/models/base_channel_model.rb +464 -0
  62. data/lib/GiphyClient/models/base_channel_model_gifs.rb +198 -0
  63. data/lib/GiphyClient/models/breadcrumb.rb +205 -0
  64. data/lib/GiphyClient/models/category.rb +220 -0
  65. data/lib/GiphyClient/models/channel_with_children_model.rb +473 -0
  66. data/lib/GiphyClient/models/channel_with_children_model_children.rb +198 -0
  67. data/lib/GiphyClient/models/gif.rb +473 -0
  68. data/lib/GiphyClient/models/gif_images.rb +358 -0
  69. data/lib/GiphyClient/models/gif_images_downsized.rb +218 -0
  70. data/lib/GiphyClient/models/gif_images_downsized_large.rb +218 -0
  71. data/lib/GiphyClient/models/gif_images_downsized_medium.rb +218 -0
  72. data/lib/GiphyClient/models/gif_images_downsized_small.rb +218 -0
  73. data/lib/GiphyClient/models/gif_images_downsized_still.rb +208 -0
  74. data/lib/GiphyClient/models/gif_images_fixed_height.rb +258 -0
  75. data/lib/GiphyClient/models/gif_images_fixed_height_downsampled.rb +238 -0
  76. data/lib/GiphyClient/models/gif_images_fixed_height_small.rb +258 -0
  77. data/lib/GiphyClient/models/gif_images_fixed_height_small_still.rb +208 -0
  78. data/lib/GiphyClient/models/gif_images_fixed_height_still.rb +208 -0
  79. data/lib/GiphyClient/models/gif_images_fixed_width.rb +258 -0
  80. data/lib/GiphyClient/models/gif_images_fixed_width_downsampled.rb +238 -0
  81. data/lib/GiphyClient/models/gif_images_fixed_width_small.rb +258 -0
  82. data/lib/GiphyClient/models/gif_images_fixed_width_small_still.rb +208 -0
  83. data/lib/GiphyClient/models/gif_images_fixed_width_still.rb +208 -0
  84. data/lib/GiphyClient/models/gif_images_looping.rb +188 -0
  85. data/lib/GiphyClient/models/gif_images_original.rb +268 -0
  86. data/lib/GiphyClient/models/gif_images_original_still.rb +208 -0
  87. data/lib/GiphyClient/models/gif_images_preview.rb +218 -0
  88. data/lib/GiphyClient/models/gif_images_preview_gif.rb +218 -0
  89. data/lib/GiphyClient/models/inline_response_200.rb +209 -0
  90. data/lib/GiphyClient/models/inline_response_200_1.rb +197 -0
  91. data/lib/GiphyClient/models/inline_response_200_2.rb +197 -0
  92. data/lib/GiphyClient/models/inline_response_200_3.rb +207 -0
  93. data/lib/GiphyClient/models/inline_response_200_4.rb +207 -0
  94. data/lib/GiphyClient/models/inline_response_200_5.rb +207 -0
  95. data/lib/GiphyClient/models/inline_response_400.rb +187 -0
  96. data/lib/GiphyClient/models/last_child_model.rb +473 -0
  97. data/lib/GiphyClient/models/last_child_model_children.rb +198 -0
  98. data/lib/GiphyClient/models/meta_content.rb +218 -0
  99. data/lib/GiphyClient/models/meta_object.rb +187 -0
  100. data/lib/GiphyClient/models/pagination.rb +208 -0
  101. data/lib/GiphyClient/models/random_gif.rb +401 -0
  102. data/lib/GiphyClient/models/shallow_tag.rb +198 -0
  103. data/lib/GiphyClient/models/tag.rb +198 -0
  104. data/lib/GiphyClient/models/trending_tag.rb +205 -0
  105. data/lib/GiphyClient/models/user.rb +238 -0
  106. data/lib/GiphyClient/version.rb +14 -0
  107. data/public.yaml +1638 -0
  108. data/spec/api/default_api_spec.rb +260 -0
  109. data/spec/api_client_spec.rb +225 -0
  110. data/spec/configuration_spec.rb +41 -0
  111. data/spec/models/base_channel_model_gifs_spec.rb +47 -0
  112. data/spec/models/base_channel_model_spec.rb +209 -0
  113. data/spec/models/breadcrumb_spec.rb +53 -0
  114. data/spec/models/category_spec.rb +59 -0
  115. data/spec/models/channel_with_children_model_children_spec.rb +47 -0
  116. data/spec/models/channel_with_children_model_spec.rb +215 -0
  117. data/spec/models/gif_images_downsized_large_spec.rb +59 -0
  118. data/spec/models/gif_images_downsized_medium_spec.rb +59 -0
  119. data/spec/models/gif_images_downsized_small_spec.rb +59 -0
  120. data/spec/models/gif_images_downsized_spec.rb +59 -0
  121. data/spec/models/gif_images_downsized_still_spec.rb +53 -0
  122. data/spec/models/gif_images_fixed_height_downsampled_spec.rb +71 -0
  123. data/spec/models/gif_images_fixed_height_small_spec.rb +83 -0
  124. data/spec/models/gif_images_fixed_height_small_still_spec.rb +53 -0
  125. data/spec/models/gif_images_fixed_height_spec.rb +83 -0
  126. data/spec/models/gif_images_fixed_height_still_spec.rb +53 -0
  127. data/spec/models/gif_images_fixed_width_downsampled_spec.rb +71 -0
  128. data/spec/models/gif_images_fixed_width_small_spec.rb +83 -0
  129. data/spec/models/gif_images_fixed_width_small_still_spec.rb +53 -0
  130. data/spec/models/gif_images_fixed_width_spec.rb +83 -0
  131. data/spec/models/gif_images_fixed_width_still_spec.rb +53 -0
  132. data/spec/models/gif_images_looping_spec.rb +41 -0
  133. data/spec/models/gif_images_original_spec.rb +89 -0
  134. data/spec/models/gif_images_original_still_spec.rb +53 -0
  135. data/spec/models/gif_images_preview_gif_spec.rb +59 -0
  136. data/spec/models/gif_images_preview_spec.rb +59 -0
  137. data/spec/models/gif_images_spec.rb +155 -0
  138. data/spec/models/gif_spec.rb +209 -0
  139. data/spec/models/inline_response_200_1_spec.rb +47 -0
  140. data/spec/models/inline_response_200_2_spec.rb +47 -0
  141. data/spec/models/inline_response_200_3_spec.rb +53 -0
  142. data/spec/models/inline_response_200_4_spec.rb +53 -0
  143. data/spec/models/inline_response_200_5_spec.rb +53 -0
  144. data/spec/models/inline_response_200_spec.rb +53 -0
  145. data/spec/models/inline_response_400_spec.rb +41 -0
  146. data/spec/models/last_child_model_children_spec.rb +47 -0
  147. data/spec/models/last_child_model_spec.rb +215 -0
  148. data/spec/models/meta_content_spec.rb +53 -0
  149. data/spec/models/meta_object_spec.rb +41 -0
  150. data/spec/models/pagination_spec.rb +53 -0
  151. data/spec/models/random_gif_spec.rb +173 -0
  152. data/spec/models/shallow_tag_spec.rb +47 -0
  153. data/spec/models/tag_spec.rb +47 -0
  154. data/spec/models/trending_tag_spec.rb +53 -0
  155. data/spec/models/user_spec.rb +71 -0
  156. data/spec/spec_helper.rb +110 -0
  157. metadata +428 -0
@@ -0,0 +1,260 @@
1
+ =begin
2
+ #giphy-api
3
+
4
+ #Giphy's public api.
5
+
6
+ OpenAPI spec version: 0.9.3
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ =end
11
+
12
+ require 'spec_helper'
13
+ require 'json'
14
+
15
+ # Unit tests for GiphyClient::DefaultApi
16
+ # Automatically generated by swagger-codegen (github.com/swagger-api/swagger-codegen)
17
+ # Please update as you see appropriate
18
+ describe 'DefaultApi' do
19
+ before do
20
+ # run before each test
21
+ @instance = GiphyClient::DefaultApi.new
22
+ end
23
+
24
+ after do
25
+ # run after each test
26
+ end
27
+
28
+ describe 'test an instance of DefaultApi' do
29
+ it 'should create an instact of DefaultApi' do
30
+ expect(@instance).to be_instance_of(GiphyClient::DefaultApi)
31
+ end
32
+ end
33
+
34
+ # unit tests for gifs_categories_category_get
35
+ # Category Tags Endpoint.
36
+ # Returns a list of tags for a given category. NOTE `limit` and `offset` must both be set; otherwise they're ignored.
37
+ # @param api_key Giphy API Key.
38
+ # @param category Filters results by category.
39
+ # @param [Hash] opts the optional parameters
40
+ # @option opts [Integer] :limit The maximum number of records to return.
41
+ # @option opts [Integer] :offset An optional results offset. Defaults to 0.
42
+ # @return [InlineResponse2004]
43
+ describe 'gifs_categories_category_get test' do
44
+ it "should work" do
45
+ resp = @instance.gifs_categories_category_get("dc6zaTOxFJmzC", "actions", {limit: 10, offset: 0})
46
+ expect(resp.data.count).to eq(10)
47
+ resp.data.each do |item|
48
+ expect(item.name).to_not be_empty
49
+ end
50
+ end
51
+ end
52
+
53
+ # unit tests for gifs_categories_category_tag_get
54
+ # Tagged Gifs Endpoint.
55
+ # Returns a list of gifs for a given tag (alias to `/gif/search`).
56
+ # @param api_key Giphy API Key.
57
+ # @param category Filters results by category.
58
+ # @param tag Filters results by tag.
59
+ # @param [Hash] opts the optional parameters
60
+ # @option opts [Integer] :limit The maximum number of records to return.
61
+ # @option opts [Integer] :offset An optional results offset. Defaults to 0.
62
+ # @return [InlineResponse2005]
63
+ describe 'gifs_categories_category_tag_get test' do
64
+ it "should work" do
65
+ resp = @instance.gifs_categories_category_tag_get("dc6zaTOxFJmzC", "actions", "breaking-up", {limit: 10, offset: 0})
66
+ expect(resp.data.count).to eq(10)
67
+ resp.data.each do |item|
68
+ expect(item.url).to_not be_empty
69
+ end
70
+ end
71
+ end
72
+
73
+ # unit tests for gifs_categories_get
74
+ # Categories Endpoint.
75
+ # Returns a list of categories.
76
+ # @param api_key Giphy API Key.
77
+ # @param [Hash] opts the optional parameters
78
+ # @option opts [Integer] :limit The maximum number of records to return.
79
+ # @return [InlineResponse2003]
80
+ describe 'gifs_categories_get test' do
81
+ it "should work" do
82
+ resp = @instance.gifs_categories_get("dc6zaTOxFJmzC", {limit: 10})
83
+ expect(resp.data.count).to eq(10)
84
+ resp.data.each do |item|
85
+ expect(item.name).to_not be_empty
86
+ expect(item.name_encoded).to_not be_empty
87
+ end
88
+ end
89
+ end
90
+
91
+ # unit tests for gifs_get
92
+ # Get GIFs by ID Endpoint
93
+ # A multiget version of the get GIF by ID endpoint.
94
+ # @param api_key Giphy API Key.
95
+ # @param ids Filters results by specified GIF IDs, separated by commas.
96
+ # @param [Hash] opts the optional parameters
97
+ # @return [InlineResponse200]
98
+ describe 'gifs_get test' do
99
+ it "should work" do
100
+ resp = @instance.gifs_get("dc6zaTOxFJmzC", "YfCuW2maPixri,BeL3iFbYzAsfu")
101
+ expect(resp.data.count).to eq(2)
102
+ end
103
+ end
104
+
105
+ # unit tests for gifs_gif_id_get
106
+ # Get GIF by ID Endpoint
107
+ # Returns a GIF given that GIF's unique ID
108
+ # @param api_key Giphy API Key.
109
+ # @param gif_id Filters results by specified GIF ID.
110
+ # @param [Hash] opts the optional parameters
111
+ # @return [InlineResponse2001]
112
+ describe 'gifs_gif_id_get test' do
113
+ it "should work" do
114
+ resp = @instance.gifs_gif_id_get("dc6zaTOxFJmzC", "YfCuW2maPixri")
115
+ expect(resp.data.id).to eq("YfCuW2maPixri")
116
+ end
117
+ end
118
+
119
+ # unit tests for gifs_random_get
120
+ # Random Endpoint
121
+ # Returns a random GIF, limited by tag. Excluding the tag parameter will return a random GIF from the GIPHY catalog.
122
+ # @param api_key Giphy API Key.
123
+ # @param [Hash] opts the optional parameters
124
+ # @option opts [String] :tag Filters results by specified tag.
125
+ # @option opts [String] :rating Filters results by specified rating.
126
+ # @option opts [String] :fmt Used to indicate the expected response format. Default is Json.
127
+ # @return [InlineResponse2002]
128
+ describe 'gifs_random_get test' do
129
+ it "should work" do
130
+ resp = @instance.gifs_random_get("dc6zaTOxFJmzC")
131
+ expect(resp.data.url).to_not be_empty
132
+ end
133
+ end
134
+
135
+ # unit tests for gifs_search_get
136
+ # Search Endpoint
137
+ # Search all Giphy GIFs for a word or phrase. Punctuation will be stripped and ignored. Use a plus or url encode for phrases. Example paul+rudd, ryan+gosling or american+psycho.
138
+ # @param api_key Giphy API Key.
139
+ # @param q Search query term or prhase.
140
+ # @param [Hash] opts the optional parameters
141
+ # @option opts [Integer] :limit The maximum number of records to return.
142
+ # @option opts [Integer] :offset An optional results offset. Defaults to 0.
143
+ # @option opts [String] :rating Filters results by specified rating.
144
+ # @option opts [String] :lang Specify default country for regional content; use a 2-letter ISO 639-1 country code. See list of supported languages <a href = \"../language-support\">here</a>.
145
+ # @option opts [String] :fmt Used to indicate the expected response format. Default is Json.
146
+ # @return [InlineResponse200]
147
+ describe 'gifs_search_get test' do
148
+ it "should work" do
149
+ resp = @instance.gifs_search_get("dc6zaTOxFJmzC", "cats", {limit: 10})
150
+ expect(resp.data.count).to eq(10)
151
+ resp.data.each do |item|
152
+ expect(item.url).to_not be_empty
153
+ end
154
+ end
155
+ end
156
+
157
+ # unit tests for gifs_translate_get
158
+ # Translate Endpoint
159
+ # The translate API draws on search, but uses the Giphy `special sauce` to handle translating from one vocabulary to another. In this case, words and phrases to GIFs.
160
+ # @param api_key Giphy API Key.
161
+ # @param s Search term.
162
+ # @param [Hash] opts the optional parameters
163
+ # @return [InlineResponse2001]
164
+ describe 'gifs_translate_get test' do
165
+ it "should work" do
166
+ resp = @instance.gifs_translate_get("dc6zaTOxFJmzC", "cats")
167
+ expect(resp.data.url).to_not be_empty
168
+ end
169
+ end
170
+
171
+ # unit tests for gifs_trending_get
172
+ # Trending GIFs Endpoint
173
+ # Fetch GIFs currently trending online. Hand curated by the GIPHY editorial team. The data returned mirrors the GIFs showcased on the <a href = \"http://www.giphy.com\">GIPHY homepage</a>. Returns 25 results by default.
174
+ # @param api_key Giphy API Key.
175
+ # @param [Hash] opts the optional parameters
176
+ # @option opts [Integer] :limit The maximum number of records to return.
177
+ # @option opts [String] :rating Filters results by specified rating.
178
+ # @option opts [String] :fmt Used to indicate the expected response format. Default is Json.
179
+ # @return [InlineResponse200]
180
+ describe 'gifs_trending_get test' do
181
+ it "should work" do
182
+ resp = @instance.gifs_trending_get("dc6zaTOxFJmzC", {limit: 10})
183
+ expect(resp.data.count).to eq(10)
184
+ resp.data.each do |item|
185
+ expect(item.url).to_not be_empty
186
+ end
187
+ end
188
+ end
189
+
190
+ # unit tests for stickers_random_get
191
+ # Random Sticker Endpoint
192
+ # Returns a random GIF, limited by tag. Excluding the tag parameter will return a random GIF from the GIPHY catalog.
193
+ # @param api_key Giphy API Key.
194
+ # @param [Hash] opts the optional parameters
195
+ # @option opts [String] :tag Filters results by specified tag.
196
+ # @option opts [String] :rating Filters results by specified rating.
197
+ # @option opts [String] :fmt Used to indicate the expected response format. Default is Json.
198
+ # @return [InlineResponse2002]
199
+ describe 'stickers_random_get test' do
200
+ it "should work" do
201
+ resp = @instance.stickers_random_get("dc6zaTOxFJmzC")
202
+ expect(resp.data.url).to_not be_empty
203
+ end
204
+ end
205
+
206
+ # unit tests for stickers_search_get
207
+ # Sticker Search Endpoint
208
+ # Replicates the functionality and requirements of the classic GIPHY search, but returns animated stickers rather than GIFs.
209
+ # @param api_key Giphy API Key.
210
+ # @param q Search query term or prhase.
211
+ # @param [Hash] opts the optional parameters
212
+ # @option opts [Integer] :limit The maximum number of records to return.
213
+ # @option opts [Integer] :offset An optional results offset. Defaults to 0.
214
+ # @option opts [String] :rating Filters results by specified rating.
215
+ # @option opts [String] :lang Specify default country for regional content; use a 2-letter ISO 639-1 country code. See list of supported languages <a href = \"../language-support\">here</a>.
216
+ # @option opts [String] :fmt Used to indicate the expected response format. Default is Json.
217
+ # @return [InlineResponse200]
218
+ describe 'stickers_search_get test' do
219
+ it "should work" do
220
+ resp = @instance.stickers_search_get("dc6zaTOxFJmzC", "cats", {limit: 10})
221
+ expect(resp.data.count).to eq(10)
222
+ resp.data.each do |item|
223
+ expect(item.url).to_not be_empty
224
+ end
225
+ end
226
+ end
227
+
228
+ # unit tests for stickers_translate_get
229
+ # Sticker Translate Endpoint
230
+ # The translate API draws on search, but uses the Giphy `special sauce` to handle translating from one vocabulary to another. In this case, words and phrases to GIFs.
231
+ # @param api_key Giphy API Key.
232
+ # @param s Search term.
233
+ # @param [Hash] opts the optional parameters
234
+ # @return [InlineResponse2001]
235
+ describe 'stickers_translate_get test' do
236
+ it "should work" do
237
+ resp = @instance.gifs_translate_get("dc6zaTOxFJmzC", "cats")
238
+ expect(resp.data.url).to_not be_empty
239
+ end
240
+ end
241
+
242
+ # unit tests for stickers_trending_get
243
+ # Trending Stickers Endpoint
244
+ # Fetch GIFs currently trending online. Hand curated by the GIPHY editorial team. The data returned mirrors the GIFs showcased on the <a href = \"http://www.giphy.com\">GIPHY homepage</a>. Returns 25 results by default.
245
+ # @param api_key Giphy API Key.
246
+ # @param [Hash] opts the optional parameters
247
+ # @option opts [Integer] :limit The maximum number of records to return.
248
+ # @option opts [String] :rating Filters results by specified rating.
249
+ # @option opts [String] :fmt Used to indicate the expected response format. Default is Json.
250
+ # @return [InlineResponse200]
251
+ describe 'stickers_trending_get test' do
252
+ it "should work" do
253
+ resp = @instance.stickers_trending_get("dc6zaTOxFJmzC", {limit: 10})
254
+ expect(resp.data.count).to eq(10)
255
+ resp.data.each do |item|
256
+ expect(item.url).to_not be_empty
257
+ end
258
+ end
259
+ end
260
+ end
@@ -0,0 +1,225 @@
1
+ =begin
2
+ #giphy-api
3
+
4
+ #Giphy's public api.
5
+
6
+ OpenAPI spec version: 0.9.3
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ =end
11
+
12
+ require 'spec_helper'
13
+
14
+ describe GiphyClient::ApiClient do
15
+ context 'initialization' do
16
+ context 'URL stuff' do
17
+ context 'host' do
18
+ it 'removes http from host' do
19
+ GiphyClient.configure { |c| c.host = 'http://example.com' }
20
+ expect(GiphyClient::Configuration.default.host).to eq('example.com')
21
+ end
22
+
23
+ it 'removes https from host' do
24
+ GiphyClient.configure { |c| c.host = 'https://wookiee.com' }
25
+ expect(GiphyClient::ApiClient.default.config.host).to eq('wookiee.com')
26
+ end
27
+
28
+ it 'removes trailing path from host' do
29
+ GiphyClient.configure { |c| c.host = 'hobo.com/v4' }
30
+ expect(GiphyClient::Configuration.default.host).to eq('hobo.com')
31
+ end
32
+ end
33
+
34
+ context 'base_path' do
35
+ it "prepends a slash to base_path" do
36
+ GiphyClient.configure { |c| c.base_path = 'v4/dog' }
37
+ expect(GiphyClient::Configuration.default.base_path).to eq('/v4/dog')
38
+ end
39
+
40
+ it "doesn't prepend a slash if one is already there" do
41
+ GiphyClient.configure { |c| c.base_path = '/v4/dog' }
42
+ expect(GiphyClient::Configuration.default.base_path).to eq('/v4/dog')
43
+ end
44
+
45
+ it "ends up as a blank string if nil" do
46
+ GiphyClient.configure { |c| c.base_path = nil }
47
+ expect(GiphyClient::Configuration.default.base_path).to eq('')
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ describe "params_encoding in #build_request" do
54
+ let(:config) { GiphyClient::Configuration.new }
55
+ let(:api_client) { GiphyClient::ApiClient.new(config) }
56
+
57
+ it "defaults to nil" do
58
+ expect(GiphyClient::Configuration.default.params_encoding).to eq(nil)
59
+ expect(config.params_encoding).to eq(nil)
60
+
61
+ request = api_client.build_request(:get, '/test')
62
+ expect(request.options[:params_encoding]).to eq(nil)
63
+ end
64
+
65
+ it "can be customized" do
66
+ config.params_encoding = :multi
67
+ request = api_client.build_request(:get, '/test')
68
+ expect(request.options[:params_encoding]).to eq(:multi)
69
+ end
70
+ end
71
+
72
+ describe "timeout in #build_request" do
73
+ let(:config) { GiphyClient::Configuration.new }
74
+ let(:api_client) { GiphyClient::ApiClient.new(config) }
75
+
76
+ it "defaults to 0" do
77
+ expect(GiphyClient::Configuration.default.timeout).to eq(0)
78
+ expect(config.timeout).to eq(0)
79
+
80
+ request = api_client.build_request(:get, '/test')
81
+ expect(request.options[:timeout]).to eq(0)
82
+ end
83
+
84
+ it "can be customized" do
85
+ config.timeout = 100
86
+ request = api_client.build_request(:get, '/test')
87
+ expect(request.options[:timeout]).to eq(100)
88
+ end
89
+ end
90
+
91
+ describe "#deserialize" do
92
+ it "handles Array<Integer>" do
93
+ api_client = GiphyClient::ApiClient.new
94
+ headers = {'Content-Type' => 'application/json'}
95
+ response = double('response', headers: headers, body: '[12, 34]')
96
+ data = api_client.deserialize(response, 'Array<Integer>')
97
+ expect(data).to be_instance_of(Array)
98
+ expect(data).to eq([12, 34])
99
+ end
100
+
101
+ it "handles Array<Array<Integer>>" do
102
+ api_client = GiphyClient::ApiClient.new
103
+ headers = {'Content-Type' => 'application/json'}
104
+ response = double('response', headers: headers, body: '[[12, 34], [56]]')
105
+ data = api_client.deserialize(response, 'Array<Array<Integer>>')
106
+ expect(data).to be_instance_of(Array)
107
+ expect(data).to eq([[12, 34], [56]])
108
+ end
109
+
110
+ it "handles Hash<String, String>" do
111
+ api_client = GiphyClient::ApiClient.new
112
+ headers = {'Content-Type' => 'application/json'}
113
+ response = double('response', headers: headers, body: '{"message": "Hello"}')
114
+ data = api_client.deserialize(response, 'Hash<String, String>')
115
+ expect(data).to be_instance_of(Hash)
116
+ expect(data).to eq({:message => 'Hello'})
117
+ end
118
+ end
119
+
120
+ describe "#object_to_hash" do
121
+ it "ignores nils and includes empty arrays" do
122
+ # uncomment below to test object_to_hash for model
123
+ #api_client = GiphyClient::ApiClient.new
124
+ #_model = GiphyClient::ModelName.new
125
+ # update the model attribute below
126
+ #_model.id = 1
127
+ # update the expected value (hash) below
128
+ #expected = {id: 1, name: '', tags: []}
129
+ #expect(api_client.object_to_hash(_model)).to eq(expected)
130
+ end
131
+ end
132
+
133
+ describe "#build_collection_param" do
134
+ let(:param) { ['aa', 'bb', 'cc'] }
135
+ let(:api_client) { GiphyClient::ApiClient.new }
136
+
137
+ it "works for csv" do
138
+ expect(api_client.build_collection_param(param, :csv)).to eq('aa,bb,cc')
139
+ end
140
+
141
+ it "works for ssv" do
142
+ expect(api_client.build_collection_param(param, :ssv)).to eq('aa bb cc')
143
+ end
144
+
145
+ it "works for tsv" do
146
+ expect(api_client.build_collection_param(param, :tsv)).to eq("aa\tbb\tcc")
147
+ end
148
+
149
+ it "works for pipes" do
150
+ expect(api_client.build_collection_param(param, :pipes)).to eq('aa|bb|cc')
151
+ end
152
+
153
+ it "works for multi" do
154
+ expect(api_client.build_collection_param(param, :multi)).to eq(['aa', 'bb', 'cc'])
155
+ end
156
+
157
+ it "fails for invalid collection format" do
158
+ expect(proc { api_client.build_collection_param(param, :INVALID) }).to raise_error(RuntimeError, 'unknown collection format: :INVALID')
159
+ end
160
+ end
161
+
162
+ describe "#json_mime?" do
163
+ let(:api_client) { GiphyClient::ApiClient.new }
164
+
165
+ it "works" do
166
+ expect(api_client.json_mime?(nil)).to eq false
167
+ expect(api_client.json_mime?('')).to eq false
168
+
169
+ expect(api_client.json_mime?('application/json')).to eq true
170
+ expect(api_client.json_mime?('application/json; charset=UTF8')).to eq true
171
+ expect(api_client.json_mime?('APPLICATION/JSON')).to eq true
172
+
173
+ expect(api_client.json_mime?('application/xml')).to eq false
174
+ expect(api_client.json_mime?('text/plain')).to eq false
175
+ expect(api_client.json_mime?('application/jsonp')).to eq false
176
+ end
177
+ end
178
+
179
+ describe "#select_header_accept" do
180
+ let(:api_client) { GiphyClient::ApiClient.new }
181
+
182
+ it "works" do
183
+ expect(api_client.select_header_accept(nil)).to be_nil
184
+ expect(api_client.select_header_accept([])).to be_nil
185
+
186
+ expect(api_client.select_header_accept(['application/json'])).to eq('application/json')
187
+ expect(api_client.select_header_accept(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
188
+ expect(api_client.select_header_accept(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
189
+
190
+ expect(api_client.select_header_accept(['application/xml'])).to eq('application/xml')
191
+ expect(api_client.select_header_accept(['text/html', 'application/xml'])).to eq('text/html,application/xml')
192
+ end
193
+ end
194
+
195
+ describe "#select_header_content_type" do
196
+ let(:api_client) { GiphyClient::ApiClient.new }
197
+
198
+ it "works" do
199
+ expect(api_client.select_header_content_type(nil)).to eq('application/json')
200
+ expect(api_client.select_header_content_type([])).to eq('application/json')
201
+
202
+ expect(api_client.select_header_content_type(['application/json'])).to eq('application/json')
203
+ expect(api_client.select_header_content_type(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
204
+ expect(api_client.select_header_content_type(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
205
+ expect(api_client.select_header_content_type(['application/xml'])).to eq('application/xml')
206
+ expect(api_client.select_header_content_type(['text/plain', 'application/xml'])).to eq('text/plain')
207
+ end
208
+ end
209
+
210
+ describe "#sanitize_filename" do
211
+ let(:api_client) { GiphyClient::ApiClient.new }
212
+
213
+ it "works" do
214
+ expect(api_client.sanitize_filename('sun')).to eq('sun')
215
+ expect(api_client.sanitize_filename('sun.gif')).to eq('sun.gif')
216
+ expect(api_client.sanitize_filename('../sun.gif')).to eq('sun.gif')
217
+ expect(api_client.sanitize_filename('/var/tmp/sun.gif')).to eq('sun.gif')
218
+ expect(api_client.sanitize_filename('./sun.gif')).to eq('sun.gif')
219
+ expect(api_client.sanitize_filename('..\sun.gif')).to eq('sun.gif')
220
+ expect(api_client.sanitize_filename('\var\tmp\sun.gif')).to eq('sun.gif')
221
+ expect(api_client.sanitize_filename('c:\var\tmp\sun.gif')).to eq('sun.gif')
222
+ expect(api_client.sanitize_filename('.\sun.gif')).to eq('sun.gif')
223
+ end
224
+ end
225
+ end