freefeed 0.1.1 → 0.5.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/.gitignore +1 -0
- data/README.md +2 -4
- data/bin/purge_samples +47 -0
- data/freefeed.gemspec +4 -3
- data/lib/freefeed/authenticated_request.rb +13 -0
- data/lib/freefeed/client.rb +8 -3
- data/lib/freefeed/constants.rb +2 -0
- data/lib/freefeed/request.rb +1 -10
- data/lib/freefeed/utils.rb +5 -8
- data/lib/freefeed/v1/attachments.rb +10 -2
- data/lib/freefeed/v1/comments.rb +21 -0
- data/lib/freefeed/v1/posts.rb +55 -0
- data/lib/freefeed/v2/posts.rb +19 -0
- data/lib/freefeed/v2/timelines.rb +23 -0
- data/lib/freefeed/v2/users.rb +21 -1
- data/lib/freefeed/version.rb +1 -1
- metadata +24 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9457203e8f03e0ca98ef13de587bf1e59d479870379ccfe4a37aeadfb11ba81a
|
4
|
+
data.tar.gz: 183c2c1ec58354221199334845008b8dcda208e3e8dd3d14863d78c9a7b67af7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f6a82928de9fb559a30f7abf35e61538e0f3f7fb3ea7146cd257cff3cbf58372ecb5595bc176cf5a55b76105ff189fcbf6ab6451f518043a0070dff8bfd7f72
|
7
|
+
data.tar.gz: 197f108c5496124e4cb005cafe3560adfdf4719d68f60d413fc38c70d4aeaa4bcadb196a99a39d2a5b75b8bde248ffa1ac1ccd5ff3a82958f4a5d61ce7490125
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
# Freefeed
|
1
|
+
# Freefeed::Client
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
[Freefeed](https://freefeed.net) API wrapper extracted from the [Feeder](https://frf.im) project.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
data/bin/purge_samples
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "pry"
|
5
|
+
|
6
|
+
PATH = File.join(File.expand_path("..", __dir__), "spec/fixtures/files")
|
7
|
+
|
8
|
+
# Object fields to replace with generic values:
|
9
|
+
#
|
10
|
+
# users
|
11
|
+
# username
|
12
|
+
# screenName
|
13
|
+
# description
|
14
|
+
#
|
15
|
+
# posts
|
16
|
+
# body
|
17
|
+
#
|
18
|
+
# comments
|
19
|
+
# body
|
20
|
+
|
21
|
+
|
22
|
+
def purge_user(data, index)
|
23
|
+
data["username"] = "user#{index}"
|
24
|
+
data["screenName"] = "User ##{index}"
|
25
|
+
data["description"] = "Sample description"
|
26
|
+
end
|
27
|
+
|
28
|
+
def purge_content(data)
|
29
|
+
data["body"] = "Sample content"
|
30
|
+
end
|
31
|
+
|
32
|
+
Dir.glob("#{PATH}/**/*.json").each do |file_name|
|
33
|
+
backup_copy = "#{file_name}.bak"
|
34
|
+
FileUtils.rm_rf(backup_copy)
|
35
|
+
FileUtils.mv(file_name, backup_copy)
|
36
|
+
|
37
|
+
data = JSON.parse(File.read(backup_copy))
|
38
|
+
next unless data.is_a?(Hash)
|
39
|
+
|
40
|
+
(data["users"] || []).each_with_index { |user, index| purge_user(user, index) }
|
41
|
+
(data["admins"] || []).each_with_index { |user, index| purge_user(user, index) }
|
42
|
+
|
43
|
+
(data["posts"] || []).each_with_index { |entity| purge_content(entity) }
|
44
|
+
(data["comments"] || []).each_with_index { |entity| purge_content(entity) }
|
45
|
+
|
46
|
+
File.open(file_name, "wt").write(JSON.pretty_generate(data))
|
47
|
+
end
|
data/freefeed.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.email = ["alex.musayev@gmail.com"].freeze
|
12
12
|
|
13
13
|
spec.summary = "Freefeed API wrapper"
|
14
|
-
spec.description =
|
14
|
+
spec.description = spec.summary
|
15
15
|
spec.homepage = "https://github.com/dreikanter/freefeed"
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
@@ -35,8 +35,9 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
36
36
|
spec.require_paths = ["lib"]
|
37
37
|
|
38
|
-
spec.add_dependency "dry-initializer", "
|
39
|
-
spec.add_dependency "http", "
|
38
|
+
spec.add_dependency "dry-initializer", "~> 3.0.2"
|
39
|
+
spec.add_dependency "http", "~> 4.2.0"
|
40
|
+
spec.add_dependency "mimemagic", "~> 0.3.3"
|
40
41
|
|
41
42
|
spec.add_development_dependency "bundler", "~> 2.0"
|
42
43
|
spec.add_development_dependency "pry", "~> 0.12.2"
|
data/lib/freefeed/client.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "logger"
|
4
3
|
require "dry-initializer"
|
5
4
|
require "freefeed/constants"
|
6
5
|
require "freefeed/v1/attachments"
|
7
|
-
require "freefeed/
|
6
|
+
require "freefeed/v1/comments"
|
7
|
+
require "freefeed/v1/posts"
|
8
|
+
require "freefeed/v2/posts"
|
8
9
|
require "freefeed/v2/timelines"
|
10
|
+
require "freefeed/v2/users"
|
9
11
|
require "freefeed/version"
|
10
12
|
|
11
13
|
module Freefeed
|
@@ -13,8 +15,11 @@ module Freefeed
|
|
13
15
|
extend Dry::Initializer
|
14
16
|
|
15
17
|
include Freefeed::V1::Attachments
|
16
|
-
include Freefeed::
|
18
|
+
include Freefeed::V1::Comments
|
19
|
+
include Freefeed::V1::Posts
|
20
|
+
include Freefeed::V2::Posts
|
17
21
|
include Freefeed::V2::Timelines
|
22
|
+
include Freefeed::V2::Users
|
18
23
|
|
19
24
|
option :token
|
20
25
|
option :logger, default: -> { Freefeed::LOGGER }
|
data/lib/freefeed/constants.rb
CHANGED
data/lib/freefeed/request.rb
CHANGED
@@ -30,25 +30,16 @@ module Freefeed
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def request_params
|
33
|
-
options
|
33
|
+
options.slice(:json, :form, :params, :body)
|
34
34
|
end
|
35
35
|
|
36
36
|
def headers
|
37
|
-
return common_headers unless authenticate?
|
38
|
-
common_headers.merge(authorization: "Bearer #{client.token}")
|
39
|
-
end
|
40
|
-
|
41
|
-
def common_headers
|
42
37
|
{
|
43
38
|
accept: "*/*",
|
44
39
|
user_agent: "#{Freefeed::Client.name}/#{Freefeed::VERSION}"
|
45
40
|
}
|
46
41
|
end
|
47
42
|
|
48
|
-
def authenticate?
|
49
|
-
!!(options[:auth] && client.token)
|
50
|
-
end
|
51
|
-
|
52
43
|
def user_agent
|
53
44
|
"#{Freefeed::Client.name}/#{Freefeed::VERSION}"
|
54
45
|
end
|
data/lib/freefeed/utils.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "freefeed/request"
|
4
|
+
require "freefeed/authenticated_request"
|
5
|
+
|
3
6
|
module Freefeed
|
4
7
|
module Utils
|
5
8
|
def authenticated_request(request_method, path, params = {})
|
6
|
-
|
9
|
+
AuthenticatedRequest.new(self, request_method, path, params).call
|
7
10
|
end
|
8
11
|
|
9
12
|
def request(request_method, path, params = {})
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def perform_request(request_method, path, options)
|
16
|
-
Freefeed::Request.new(self, request_method, path, options).call
|
13
|
+
Request.new(self, request_method, path, params).call
|
17
14
|
end
|
18
15
|
end
|
19
16
|
end
|
@@ -1,10 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "freefeed/
|
3
|
+
require "freefeed/utils"
|
4
|
+
require "mimemagic"
|
4
5
|
|
5
6
|
module Freefeed
|
6
7
|
module V1
|
7
8
|
module Attachments
|
9
|
+
# @param [String, Pathname, IO] source could by a file path
|
10
|
+
# or an IO object
|
8
11
|
def create_attachment(source)
|
9
12
|
options = { form: { file: file(source) } }
|
10
13
|
authenticated_request(:post, "/v1/attachments", options)
|
@@ -13,7 +16,12 @@ module Freefeed
|
|
13
16
|
private
|
14
17
|
|
15
18
|
def file(source)
|
16
|
-
HTTP::FormData::File.new(source, content_type:
|
19
|
+
HTTP::FormData::File.new(source, content_type: content_type(source))
|
20
|
+
end
|
21
|
+
|
22
|
+
def content_type(source)
|
23
|
+
return MimeMagic.by_magic(source) if source.is_a?(IO)
|
24
|
+
MimeMagic.by_path(source.to_s)
|
17
25
|
end
|
18
26
|
end
|
19
27
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "freefeed/utils"
|
4
|
+
|
5
|
+
module Freefeed
|
6
|
+
module V1
|
7
|
+
module Comments
|
8
|
+
def create_comment(comment)
|
9
|
+
authenticated_request(:post, "/v1/comments", json: comment)
|
10
|
+
end
|
11
|
+
|
12
|
+
def update_comment(id, comment)
|
13
|
+
authenticated_request(:put, "/v1/comments/#{id}", json: comment)
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete_comment(id)
|
17
|
+
authenticated_request(:delete, "/v1/comments/#{id}")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "freefeed/utils"
|
4
|
+
|
5
|
+
module Freefeed
|
6
|
+
module V1
|
7
|
+
module Posts
|
8
|
+
include Freefeed::Utils
|
9
|
+
|
10
|
+
def create_post(post)
|
11
|
+
authenticated_request(:post, "/v1/posts", json: post)
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_post(id, post)
|
15
|
+
authenticated_request(:put, "/v1/posts/#{id}", json: post)
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete_post(id)
|
19
|
+
authenticated_request(:delete, "/v1/posts/#{id}")
|
20
|
+
end
|
21
|
+
|
22
|
+
def like(id)
|
23
|
+
authenticated_request(:post, "/v1/posts/#{id}/like")
|
24
|
+
end
|
25
|
+
|
26
|
+
def unlike(id)
|
27
|
+
authenticated_request(:post, "/v1/posts/#{id}/unlike")
|
28
|
+
end
|
29
|
+
|
30
|
+
def hide(id)
|
31
|
+
authenticated_request(:post, "/v1/posts/#{id}/hide")
|
32
|
+
end
|
33
|
+
|
34
|
+
def unhide(id)
|
35
|
+
authenticated_request(:post, "/v1/posts/#{id}/unhide")
|
36
|
+
end
|
37
|
+
|
38
|
+
def save(id)
|
39
|
+
authenticated_request(:post, "/v1/posts/#{id}/save")
|
40
|
+
end
|
41
|
+
|
42
|
+
def unsave(id)
|
43
|
+
authenticated_request(:delete, "/v1/posts/#{id}/save")
|
44
|
+
end
|
45
|
+
|
46
|
+
def disable_comments(id)
|
47
|
+
authenticated_request(:post, "/v1/posts/#{id}/disableComments")
|
48
|
+
end
|
49
|
+
|
50
|
+
def enable_comments(id)
|
51
|
+
authenticated_request(:post, "/v1/posts/#{id}/enableComments")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "freefeed/utils"
|
4
|
+
|
5
|
+
module Freefeed
|
6
|
+
module V2
|
7
|
+
module Posts
|
8
|
+
include Freefeed::Utils
|
9
|
+
|
10
|
+
def post(id)
|
11
|
+
authenticated_request(:get, "/v2/posts/#{id}")
|
12
|
+
end
|
13
|
+
|
14
|
+
def post_open_graph(id)
|
15
|
+
authenticated_request(:get, "/v2/posts-opengraph/#{id}")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -14,6 +14,29 @@ module Freefeed
|
|
14
14
|
def everything
|
15
15
|
request(:get, "/v2/everything")
|
16
16
|
end
|
17
|
+
|
18
|
+
def own_timeline(filter: nil, offset: 0)
|
19
|
+
request_timeline(filter ? "filter/#{filter}" : "home", offset)
|
20
|
+
end
|
21
|
+
|
22
|
+
def timeline(username, offset: 0)
|
23
|
+
request_timeline(username, offset)
|
24
|
+
end
|
25
|
+
|
26
|
+
def comments_timeline(username, offset: 0)
|
27
|
+
request_timeline("#{username}/comments", offset)
|
28
|
+
end
|
29
|
+
|
30
|
+
def likes_timeline(username, offset: 0)
|
31
|
+
request_timeline("#{username}/likes", offset)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def request_timeline(path, offset)
|
37
|
+
params = offset.positive? ? { json: { offset: offset } } : {}
|
38
|
+
authenticated_request(:get, "/v2/timelines/#{path}", params)
|
39
|
+
end
|
17
40
|
end
|
18
41
|
end
|
19
42
|
end
|
data/lib/freefeed/v2/users.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "freefeed/
|
3
|
+
require "freefeed/utils"
|
4
4
|
|
5
5
|
module Freefeed
|
6
6
|
module V2
|
@@ -8,6 +8,26 @@ module Freefeed
|
|
8
8
|
def whoami
|
9
9
|
authenticated_request(:get, "/v2/users/whoami")
|
10
10
|
end
|
11
|
+
|
12
|
+
def blocked_by_me
|
13
|
+
authenticated_request(:get, "/v2/users/blockedByMe")
|
14
|
+
end
|
15
|
+
|
16
|
+
def unread_directs_number
|
17
|
+
authenticated_request(:get, "/v2/users/getUnreadDirectsNumber")
|
18
|
+
end
|
19
|
+
|
20
|
+
def unread_notifications_number
|
21
|
+
authenticated_request(:get, "/v2/users/getUnreadNotificationsNumber")
|
22
|
+
end
|
23
|
+
|
24
|
+
def mark_all_directs_as_read
|
25
|
+
authenticated_request(:get, "/v2/users/markAllDirectsAsRead")
|
26
|
+
end
|
27
|
+
|
28
|
+
def mark_all_notifications_as_read
|
29
|
+
authenticated_request(:post, "/v2/users/markAllNotificationsAsRead")
|
30
|
+
end
|
11
31
|
end
|
12
32
|
end
|
13
33
|
end
|
data/lib/freefeed/version.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freefeed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Musayev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-initializer
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.0.2
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '4'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - "
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.2
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '4'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: http
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
|
-
- - "
|
31
|
+
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
33
|
version: 4.2.0
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '5'
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
|
-
- - "
|
38
|
+
- - "~>"
|
48
39
|
- !ruby/object:Gem::Version
|
49
40
|
version: 4.2.0
|
50
|
-
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mimemagic
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.3.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
51
53
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
54
|
+
version: 0.3.3
|
53
55
|
- !ruby/object:Gem::Dependency
|
54
56
|
name: bundler
|
55
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,15 +170,20 @@ files:
|
|
168
170
|
- README.md
|
169
171
|
- Rakefile
|
170
172
|
- bin/console
|
173
|
+
- bin/purge_samples
|
171
174
|
- bin/setup
|
172
175
|
- freefeed.gemspec
|
173
176
|
- lib/freefeed.rb
|
177
|
+
- lib/freefeed/authenticated_request.rb
|
174
178
|
- lib/freefeed/client.rb
|
175
179
|
- lib/freefeed/constants.rb
|
176
180
|
- lib/freefeed/error.rb
|
177
181
|
- lib/freefeed/request.rb
|
178
182
|
- lib/freefeed/utils.rb
|
179
183
|
- lib/freefeed/v1/attachments.rb
|
184
|
+
- lib/freefeed/v1/comments.rb
|
185
|
+
- lib/freefeed/v1/posts.rb
|
186
|
+
- lib/freefeed/v2/posts.rb
|
180
187
|
- lib/freefeed/v2/timelines.rb
|
181
188
|
- lib/freefeed/v2/users.rb
|
182
189
|
- lib/freefeed/version.rb
|