arena 0.1.3 → 0.2.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.
Files changed (55) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/lint.yml +14 -0
  3. data/.github/workflows/test.yml +14 -0
  4. data/.rubocop.yml +12 -0
  5. data/.rubocop_todo.yml +49 -0
  6. data/Gemfile +12 -0
  7. data/README.md +1 -1
  8. data/Rakefile +9 -4
  9. data/arena.gemspec +16 -18
  10. data/lib/arena/account.rb +9 -7
  11. data/lib/arena/api.rb +42 -40
  12. data/lib/arena/base.rb +6 -5
  13. data/lib/arena/block.rb +5 -3
  14. data/lib/arena/cache/adaptor/generic.rb +3 -1
  15. data/lib/arena/cache/adaptor/null.rb +4 -2
  16. data/lib/arena/cache/adaptor/padrino.rb +3 -1
  17. data/lib/arena/cache/adaptor/rails.rb +7 -5
  18. data/lib/arena/cache.rb +11 -9
  19. data/lib/arena/channel.rb +8 -6
  20. data/lib/arena/channel_feed.rb +9 -8
  21. data/lib/arena/client.rb +25 -16
  22. data/lib/arena/comment.rb +7 -5
  23. data/lib/arena/configurable.rb +15 -13
  24. data/lib/arena/connectable.rb +21 -13
  25. data/lib/arena/connection.rb +6 -4
  26. data/lib/arena/core_ext/string.rb +7 -3
  27. data/lib/arena/creatable.rb +3 -3
  28. data/lib/arena/default.rb +9 -7
  29. data/lib/arena/entities/attachment.rb +4 -2
  30. data/lib/arena/entities/avatar.rb +8 -6
  31. data/lib/arena/entities/embed.rb +7 -5
  32. data/lib/arena/entities/image.rb +7 -2
  33. data/lib/arena/entities/provider.rb +2 -0
  34. data/lib/arena/entities/source.rb +2 -0
  35. data/lib/arena/entities/version.rb +2 -0
  36. data/lib/arena/entity.rb +2 -0
  37. data/lib/arena/error/cache_error.rb +4 -2
  38. data/lib/arena/error.rb +2 -0
  39. data/lib/arena/feed.rb +19 -18
  40. data/lib/arena/group.rb +6 -4
  41. data/lib/arena/results.rb +3 -1
  42. data/lib/arena/search_results.rb +16 -11
  43. data/lib/arena/story.rb +18 -15
  44. data/lib/arena/summary.rb +4 -2
  45. data/lib/arena/user.rb +12 -10
  46. data/lib/arena/user_feed.rb +9 -8
  47. data/lib/arena/version.rb +3 -1
  48. data/lib/arena.rb +12 -14
  49. data/test/cassettes/Arena/channel/handles_a_400_error_that_returns_JSON.yml +39 -0
  50. data/test/cassettes/Arena/channel/handles_a_403_error.yml +39 -0
  51. data/test/lib/arena/api_test.rb +15 -0
  52. data/test/lib/arena/version_test.rb +4 -4
  53. data/test/test_helper.rb +5 -1
  54. metadata +15 -73
  55. data/.travis.yml +0 -6
data/lib/arena/user.rb CHANGED
@@ -1,22 +1,24 @@
1
- require "arena/base"
2
- require "arena/creatable"
3
- require "arena/entity"
4
- require "arena/entities/avatar"
1
+ # frozen_string_literal: true
2
+
3
+ require 'arena/base'
4
+ require 'arena/creatable'
5
+ require 'arena/entity'
6
+ require 'arena/entities/avatar'
5
7
 
6
8
  module Arena
7
9
  class User < Arena::Base
8
10
  include Arena::Creatable
9
11
 
10
12
  attr_reader :id, :slug, :username, :first_name, :last_name,
11
- :full_name, :avatar, :email, :channel_count, :following_count,
12
- :profile_id, :follower_count, :initials
13
+ :full_name, :avatar, :email, :channel_count, :following_count,
14
+ :profile_id, :follower_count, :initials
13
15
 
14
16
  def _class
15
- @attrs["class"]
17
+ @attrs['class']
16
18
  end
17
19
 
18
20
  def avatar_image
19
- Arena::Entity::Avatar.new(@attrs["avatar_image"]) if !@attrs["avatar_image"].nil?
21
+ Arena::Entity::Avatar.new(@attrs['avatar_image']) unless @attrs['avatar_image'].nil?
20
22
  end
21
- end # User
22
- end # Arena
23
+ end
24
+ end
@@ -1,21 +1,22 @@
1
- require "arena/base"
2
- require "arena/story"
1
+ # frozen_string_literal: true
2
+
3
+ require 'arena/base'
4
+ require 'arena/story'
3
5
 
4
6
  module Arena
5
7
  class UserFeed < Arena::Base
6
8
  attr_reader :type, :limit, :total, :offset, :range_start, :range_end
7
9
 
8
10
  def stories
9
- @stories ||= @attrs["items"].collect { |item| Arena::Story.new(item) } if stories?
11
+ @stories ||= @attrs['items'].collect { |item| Arena::Story.new(item) } if stories?
10
12
  end
11
13
 
12
14
  alias items stories
13
15
 
14
- private
16
+ private
15
17
 
16
18
  def stories?
17
- !@attrs["items"].nil?
19
+ !@attrs['items'].nil?
18
20
  end
19
-
20
- end # Feed
21
- end # Arena
21
+ end
22
+ end
data/lib/arena/version.rb CHANGED
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arena
2
- VERSION = "0.1.3"
4
+ VERSION = '0.2.0'
3
5
 
4
6
  def self.version
5
7
  VERSION
data/lib/arena.rb CHANGED
@@ -1,8 +1,10 @@
1
- require "arena/version"
1
+ # frozen_string_literal: true
2
2
 
3
- load "arena/client.rb"
4
- load "arena/default.rb"
5
- load "arena/configurable.rb"
3
+ require 'arena/version'
4
+
5
+ require 'arena/client'
6
+ require 'arena/default'
7
+ require 'arena/configurable'
6
8
 
7
9
  module Arena
8
10
  class << self
@@ -13,19 +15,15 @@ module Arena
13
15
  # @return [Arena::Client]
14
16
  #
15
17
  def client
16
- if @client
17
- @client
18
- else
19
- @client = Arena::Client.new(options)
20
- end
18
+ @client || @client = Arena::Client.new(options)
21
19
  end
22
20
 
23
- private
21
+ private
24
22
 
25
- def method_missing(method, *args, &block)
26
- self.client.send(method, *args, &block)
23
+ def method_missing(method, ...)
24
+ client.send(method, ...)
27
25
  end
28
- end # self
29
- end # Arena
26
+ end
27
+ end
30
28
 
31
29
  Arena.setup
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.are.na/v2/channels/delightfully-absurd
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 403
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sat, 11 Oct 2025 20:29:37 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Cache-Control:
28
+ - max-age=604800, private
29
+ Server:
30
+ - cloudflare
31
+ Vary:
32
+ - Origin
33
+ Via:
34
+ - 2.0 heroku-router
35
+ body:
36
+ encoding: UTF-8
37
+ string: '{"code":400,"message":"Internal Server Error","description":"Something went wrong."}'
38
+ recorded_at: Sat, 11 Oct 2025 20:29:37 GMT
39
+ recorded_with: VCR 6.3.1
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.are.na/v2/channels/delightfully-absurd
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 403
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sat, 11 Oct 2025 20:29:37 GMT
23
+ Content-Type:
24
+ - text/plain; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Cache-Control:
28
+ - max-age=604800, private
29
+ Server:
30
+ - cloudflare
31
+ Vary:
32
+ - Origin
33
+ Via:
34
+ - 2.0 heroku-router
35
+ body:
36
+ encoding: UTF-8
37
+ string: 'Forbidden'
38
+ recorded_at: Sat, 11 Oct 2025 20:29:37 GMT
39
+ recorded_with: VCR 6.3.1
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../test_helper'
2
4
 
3
5
  describe Arena do
@@ -5,5 +7,18 @@ describe Arena do
5
7
  it 'returns a channel' do
6
8
  assert_kind_of Arena::Channel, Arena.channel('delightfully-absurd')
7
9
  end
10
+
11
+ it 'handles a 403 error' do
12
+ assert_raises StandardError do
13
+ Arena.channel('delightfully-absurd')
14
+ end
15
+ end
16
+
17
+ it 'handles a 400 error that returns JSON' do
18
+ error = assert_raises StandardError do
19
+ Arena.channel('delightfully-absurd')
20
+ end
21
+ assert_equal '400: Internal Server Error - Something went wrong.', error.message
22
+ end
8
23
  end
9
24
  end
@@ -1,9 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../test_helper'
2
4
 
3
5
  describe Arena do
4
-
5
- it "must be defined" do
6
- Arena::VERSION.wont_be_nil
6
+ it 'must be defined' do
7
+ _(Arena::VERSION).wont_be_nil
7
8
  end
8
-
9
9
  end
data/test/test_helper.rb CHANGED
@@ -1,5 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ ENV['MT_COMPAT'] = 'true'
4
+
1
5
  require 'minitest/autorun'
2
- require File.expand_path('../../lib/arena.rb', __FILE__)
6
+ require File.expand_path('../lib/arena.rb', __dir__)
3
7
 
4
8
  require 'webmock'
5
9
  require 'vcr'
metadata CHANGED
@@ -1,73 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arena
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dzuc
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2018-06-03 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
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: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: webmock
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: minitest-vcr
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: json
13
+ name: httparty
71
14
  requirement: !ruby/object:Gem::Requirement
72
15
  requirements:
73
16
  - - ">="
@@ -81,7 +24,7 @@ dependencies:
81
24
  - !ruby/object:Gem::Version
82
25
  version: '0'
83
26
  - !ruby/object:Gem::Dependency
84
- name: httparty
27
+ name: json
85
28
  requirement: !ruby/object:Gem::Requirement
86
29
  requirements:
87
30
  - - ">="
@@ -101,8 +44,11 @@ executables: []
101
44
  extensions: []
102
45
  extra_rdoc_files: []
103
46
  files:
47
+ - ".github/workflows/lint.yml"
48
+ - ".github/workflows/test.yml"
104
49
  - ".gitignore"
105
- - ".travis.yml"
50
+ - ".rubocop.yml"
51
+ - ".rubocop_todo.yml"
106
52
  - Gemfile
107
53
  - LICENSE
108
54
  - README.md
@@ -147,14 +93,16 @@ files:
147
93
  - lib/arena/user.rb
148
94
  - lib/arena/user_feed.rb
149
95
  - lib/arena/version.rb
96
+ - test/cassettes/Arena/channel/handles_a_400_error_that_returns_JSON.yml
97
+ - test/cassettes/Arena/channel/handles_a_403_error.yml
150
98
  - test/cassettes/Arena/channel/returns_a_channel.yml
151
99
  - test/lib/arena/api_test.rb
152
100
  - test/lib/arena/version_test.rb
153
101
  - test/test_helper.rb
154
102
  homepage: https://www.are.na/
155
103
  licenses: []
156
- metadata: {}
157
- post_install_message:
104
+ metadata:
105
+ rubygems_mfa_required: 'true'
158
106
  rdoc_options: []
159
107
  require_paths:
160
108
  - lib
@@ -162,20 +110,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
110
  requirements:
163
111
  - - ">="
164
112
  - !ruby/object:Gem::Version
165
- version: '0'
113
+ version: '3.0'
166
114
  required_rubygems_version: !ruby/object:Gem::Requirement
167
115
  requirements:
168
116
  - - ">="
169
117
  - !ruby/object:Gem::Version
170
118
  version: '0'
171
119
  requirements: []
172
- rubyforge_project:
173
- rubygems_version: 2.6.8
174
- signing_key:
120
+ rubygems_version: 3.6.9
175
121
  specification_version: 4
176
122
  summary: Wrapper for Arena's API
177
- test_files:
178
- - test/cassettes/Arena/channel/returns_a_channel.yml
179
- - test/lib/arena/api_test.rb
180
- - test/lib/arena/version_test.rb
181
- - test/test_helper.rb
123
+ test_files: []
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- rvm:
2
- - 2.5.0
3
-
4
- language: ruby
5
-
6
- cache: bundler