hiya 0.1.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53ce4a25c6148d9b5168d36cb88829557b7cc0c20ffd8323e1f982c90d7136ab
4
- data.tar.gz: e57e02fae1295f88f89038f91773ba1727ffef4b61ca175d4dc977f837b93b98
3
+ metadata.gz: a17b8a35230831183946a90c4104030acbc22763411f3f28562ec23fefac0e69
4
+ data.tar.gz: 67b4d9fb4fd6de89ff00c0c589f43b7d4803acabd57976ffb8d65ddf76cb757a
5
5
  SHA512:
6
- metadata.gz: 5251f018c62c47456969d1f6c4acea95263b9d661bd620b348f884ba9f1e3b3586c1151c9f1e57959b729be28f3367f7f54f94416106e82977943057c39d38ba
7
- data.tar.gz: a09c5451763dd253f5ddddb642fcb3f11122053f4531835e00bafed3be05d35b840423e3ff9d93d420aa6ea4daa48acdbdbb1222af83cabb9063af70ad4def0c
6
+ metadata.gz: 311ab3e4ac8bcc998a0501fbaa1a4cd3db94dca6e12da0c0502c2a2590198966ade8e4eef16f0ec96b5186b0aa63de0b3a393d433d8848f6a57c060119cd89bb
7
+ data.tar.gz: 42c6f7fb6f7ce7db2029ef443bdfc7849bc69019a1fe9a8dfe7612b9bb1e062d78d383ce7ddbd32394c158dc085b53bc5c27930cd13127bed7d940081a3a3185
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hiya (0.1.0)
4
+ hiya (0.2.0)
5
5
  faraday (~> 2.0)
6
- faraday-multipart
6
+ faraday-multipart (~> 1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -35,44 +35,158 @@ Hiya::Url.new.create(links)
35
35
  ### Image - create images short link
36
36
 
37
37
  ``` ruby
38
- paths = [
38
+ files = [
39
39
  '/Users/username/Desktop/aaa.jpg',
40
40
  '/Users/username/Desktop/bbb.png',
41
41
  '/Users/username/Desktop/ccc.gif'
42
42
  ]
43
- Hiya::Image.new.create(paths, {
44
- attach: { password: '1234', password_note: 'today', expired_num: 300, view_count_limit: 100 },
45
- post: { content: "haha\nhttps://www.google.com" }
43
+ Hiya::Image.new.create(files, {
44
+ attach: {
45
+ password: '1234',
46
+ password_note: 'today',
47
+ expired_num: 300,
48
+ view_count_limit: 100
49
+ },
50
+ post: {
51
+ content: "haha\nhttps://www.google.com"
52
+ }
46
53
  })
47
54
  ```
48
55
 
49
56
  ### Video - create videos short link
50
57
 
51
58
  ``` ruby
52
- paths = [
59
+ files = [
53
60
  '/Users/username/Desktop/aaa.mp4',
54
61
  '/Users/username/Desktop/bbb.mp4'
55
62
  ]
56
- Hiya::Video.new.create(paths, {
57
- attach: { password: '1234', password_note: 'today', expired_num: 300, view_count_limit: 100 },
58
- post: { content: "yoyo\nhttps://www.google.com" }
63
+ Hiya::Video.new.create(files, {
64
+ attach: {
65
+ password: '1234',
66
+ password_note: 'today',
67
+ expired_num: 300,
68
+ view_count_limit: 100
69
+ },
70
+ post: {
71
+ content: "yoyo\nhttps://www.google.com"
72
+ }
59
73
  })
60
74
  ```
61
75
 
62
76
  ### Audio - create audios short link
63
77
 
64
78
  ``` ruby
65
- paths = [
79
+ files = [
66
80
  '/Users/username/Desktop/aaa.mp3',
67
81
  '/Users/username/Desktop/bbb.mp3',
68
82
  '/Users/username/Desktop/ccc.mp3'
69
83
  ]
70
- Hiya::Audio.new.create(paths, {
71
- attach: { password: '1234', password_note: 'today', expired_num: 300, view_count_limit: 100 },
72
- post: { content: "yoyo\nhttps://www.google.com" }
84
+ Hiya::Audio.new.create(files, {
85
+ attach: {
86
+ password: '1234',
87
+ password_note: 'today',
88
+ expired_num: 300,
89
+ view_count_limit: 100
90
+ },
91
+ post: {
92
+ content: "hehe\nhttps://www.google.com"
93
+ }
73
94
  })
74
95
  ```
75
96
 
97
+ ### Login - get token
98
+
99
+ ``` ruby
100
+ params = {
101
+ grant_type: 'password', # required
102
+
103
+ # facebook
104
+ facebook_token: '<facebook_token>', # facebook token(String)
105
+ # google
106
+ google_token: '<google_token>', # google token(String)
107
+ google_refresh_token: '<google_refresh_token>', # google refresh token(String)
108
+ # line
109
+ line_token: '<line_token>', # line token(String)
110
+ # chatbot
111
+ chatbot_token: '<chatbot_token>', # chatbot token(String)
112
+ }
113
+ response = Hiya::Oauth.new.token(params)
114
+
115
+ puts response
116
+ {
117
+ access_token: '-qsizxNy83YTh7kdnZ7f20mKpty00-G0SidjWitGj0g',
118
+ token_type: 'Bearer',
119
+ created_at: 1688109992
120
+ }
121
+
122
+ # use user token create short link
123
+ links = [
124
+ { url: 'https://www.google.coom', weight: 1 }
125
+ ]
126
+ Hiya::Url.new(response[:token]).create(links)
127
+ ```
128
+
129
+ ### Get links
130
+
131
+ ``` ruby
132
+ Hiya::Users::Links.new(response[:token]).all
133
+ ```
134
+
135
+ ### Get link
136
+
137
+ ``` ruby
138
+ Hiya::Users::Links.new(response[:token]).find(code)
139
+ ```
140
+
141
+ ### Append files attach to link
142
+
143
+ ``` ruby
144
+ files = [
145
+ '/Users/username/Desktop/aaa.jpg',
146
+ '/Users/username/Desktop/bbb.png',
147
+ '/Users/username/Desktop/ccc.gif'
148
+ ]
149
+ Hiya::Users::Links.new(response[:token]).attach_files(code, files)
150
+ ```
151
+
152
+ ### Update attach to link
153
+
154
+ ``` ruby
155
+ params = {
156
+ attach: {
157
+ password: 'kopi',
158
+ password_note: 'こぴ / kopi',
159
+ view_count_limit: 9999
160
+ },
161
+ post: {
162
+ content: "こぴ / kopi\nhttps://youtu.be/kmPgjr0EL64"
163
+ }
164
+ }
165
+ Hiya::Users::Links.new(response[:token]).update(code, params)
166
+ ```
167
+
168
+ ### Update IP info to link
169
+
170
+ ``` ruby
171
+ params = {
172
+ ip: String: "125.227.100.100",
173
+ hostname: String: "125-227-100-100.hinet-ip.hinet.net",
174
+ city: String: "Taipei",
175
+ region: String: "Taiwan",
176
+ country: String: "TW",
177
+ loc: String: "25.0418,121.5359",
178
+ org: String: "AS3462 Data Communication Business Group",
179
+ timezone: String: "Asia/Taipei"
180
+ }
181
+ Hiya::Users::Links.new(response[:token]).update_ip_info(code, params)
182
+ ```
183
+
184
+ ### Destroy link
185
+
186
+ ``` ruby
187
+ Hiya::Users::Links.new(response[:token]).destroy(code)
188
+ ```
189
+
76
190
  ## Development
77
191
 
78
192
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -22,7 +22,7 @@ module Hiya
22
22
  @files = files
23
23
  @opts = opts
24
24
 
25
- response = multipart_conn.post(url) do |req|
25
+ @response = multipart_conn.post(url) do |req|
26
26
  req.body = create_params
27
27
  end
28
28
  Oj.load(response.body, symbol_keys: true)
data/lib/hiya/base.rb CHANGED
@@ -6,13 +6,13 @@ require 'faraday'
6
6
 
7
7
  module Hiya
8
8
  class Base
9
- def initialize(token = nil)
10
- @token = token
9
+ def initialize(bearer_token = nil)
10
+ @bearer_token = bearer_token
11
11
 
12
12
  setup
13
13
  end
14
14
 
15
- attr_reader :source, :api_url, :token
15
+ attr_reader :source, :api_url, :bearer_token, :response
16
16
 
17
17
  private
18
18
 
@@ -32,14 +32,14 @@ module Hiya
32
32
 
33
33
  def conn
34
34
  @conn ||= Faraday.new(api_url) do |f|
35
- f.request :authorization, 'Bearer', -> { token }
35
+ f.request :authorization, 'Bearer', -> { bearer_token }
36
36
  f.request :json
37
37
  end
38
38
  end
39
39
 
40
40
  def multipart_conn
41
41
  @multipart_conn ||= Faraday.new(api_url) do |f|
42
- f.request :authorization, 'Bearer', -> { token }
42
+ f.request :authorization, 'Bearer', -> { bearer_token }
43
43
  f.request :multipart
44
44
  end
45
45
  end
data/lib/hiya/link.rb CHANGED
@@ -18,7 +18,7 @@ module Hiya
18
18
  # }
19
19
  # }
20
20
  def update(code, params)
21
- response = conn.put("/v1/links/#{code}") do |req|
21
+ @response = conn.put("/v1/links/#{code}") do |req|
22
22
  req.body = params.to_json
23
23
  end
24
24
  Oj.load(response.body, symbol_keys: true)
@@ -31,7 +31,7 @@ module Hiya
31
31
  # token: String(required),
32
32
  # }
33
33
  def destroy(code, params)
34
- response = conn.delete("/v1/links/#{code}") do |req|
34
+ @response = conn.delete("/v1/links/#{code}") do |req|
35
35
  req.body = params.to_json
36
36
  end
37
37
  Oj.load(response.body, symbol_keys: true)
data/lib/hiya/oauth.rb ADDED
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hiya
4
+ class Oauth < Base
5
+ def self.token(params)
6
+ new.token(params)
7
+ end
8
+
9
+ # params: Hash: {
10
+ # grant_type: 'password',
11
+ # --- facebook
12
+ # facebook_token: String,
13
+ # --- google
14
+ # google_token: String,
15
+ # google_refresh_token: String,
16
+ # --- line
17
+ # line_token: String,
18
+ # --- chatbot
19
+ # chatbot_token: String,
20
+ # }
21
+ def token(params)
22
+ @response = conn.post('/v1/oauth/token') do |req|
23
+ req.body = params.to_json
24
+ end
25
+ Oj.load(response.body, symbol_keys: true)
26
+ rescue StandardError => _e
27
+ {}
28
+ end
29
+ end
30
+ end
data/lib/hiya/url.rb CHANGED
@@ -6,7 +6,7 @@ module Hiya
6
6
  def create(links)
7
7
  params = { links: links, source: source }
8
8
 
9
- response = conn.post(url) do |req|
9
+ @response = conn.post(url) do |req|
10
10
  req.body = params.to_json
11
11
  end
12
12
  Oj.load(response.body, symbol_keys: true)
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hiya
4
+ module Users
5
+ class Links < Base
6
+ def all
7
+ @response = conn.get('/v1/users/links')
8
+ Oj.load(response.body, symbol_keys: true)
9
+ rescue StandardError => _e
10
+ {}
11
+ end
12
+
13
+ def find(code)
14
+ @response = conn.get("/v1/users/links/#{code}")
15
+ Oj.load(response.body, symbol_keys: true)
16
+ rescue StandardError => _e
17
+ {}
18
+ end
19
+
20
+ # code: a2e1M
21
+ # files: Array[String]: ['/path/to/file1', '/path/to/file2', ...]
22
+ def attach_files(code, files)
23
+ return unless files.is_a?(Array)
24
+
25
+ @files = files
26
+
27
+ @response = multipart_conn.post("/v1/users/links/#{code}") do |req|
28
+ req.body = attach_file_params
29
+ end
30
+ Oj.load(response.body, symbol_keys: true)
31
+ rescue StandardError => _e
32
+ {}
33
+ end
34
+
35
+ # code: a2e1M
36
+ # params: Hash: {
37
+ # attach: Hash: {
38
+ # password: String: '1234'
39
+ # password_note: String: 'today'
40
+ # view_count_limit: Integer: 100
41
+ # }
42
+ # post: Hash: {
43
+ # content: String: 'This is post content'
44
+ # }
45
+ # }
46
+ def update(code, params)
47
+ @response = conn.put("/v1/users/links/#{code}") do |req|
48
+ req.body = params.to_json
49
+ end
50
+ Oj.load(response.body, symbol_keys: true)
51
+ rescue StandardError => _e
52
+ {}
53
+ end
54
+
55
+ # code: a2e1M
56
+ # params: Hash: {
57
+ # ip: String: "125.227.100.100",
58
+ # hostname: String: "125-227-100-100.hinet-ip.hinet.net",
59
+ # city: String: "Taipei",
60
+ # region: String: "Taiwan",
61
+ # country: String: "TW",
62
+ # loc: String: "25.0418,121.5359",
63
+ # org: String: "AS3462 Data Communication Business Group",
64
+ # timezone: String: "Asia/Taipei"
65
+ # }
66
+ def update_ip_info(code, params)
67
+ @response = conn.post("/v1/users/links/#{code}/ip_info") do |req|
68
+ req.body = params.to_json
69
+ end
70
+ Oj.load(response.body, symbol_keys: true)
71
+ rescue StandardError => _e
72
+ {}
73
+ end
74
+
75
+ # code: a2e1M
76
+ def destroy(code)
77
+ @response = conn.delete("/v1/users/links/#{code}")
78
+ Oj.load(response.body, symbol_keys: true)
79
+ rescue StandardError => _e
80
+ {}
81
+ end
82
+
83
+ private
84
+
85
+ def attach_file_params
86
+ {
87
+ attach: {
88
+ files: make_files
89
+ }
90
+ }
91
+ end
92
+
93
+ def make_files
94
+ @files.map do |file|
95
+ Faraday::Multipart::FilePart.new(make_io(file), 'application/octet-stream')
96
+ end
97
+ end
98
+
99
+ def make_io(path_or_io)
100
+ if path_or_io.is_a?(String)
101
+ ::File.open(path_or_io, binmode: true)
102
+ elsif defined?(Pathname) && path_or_io.is_a?(Pathname)
103
+ path_or_io.open(binmode: true)
104
+ else
105
+ path_or_io
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
data/lib/hiya/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hiya
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/hiya.rb CHANGED
@@ -8,6 +8,8 @@ require_relative 'hiya/url'
8
8
  require_relative 'hiya/image'
9
9
  require_relative 'hiya/video'
10
10
  require_relative 'hiya/audio'
11
+ require_relative 'hiya/oauth'
12
+ require_relative 'hiya/users/links'
11
13
 
12
14
  module Hiya
13
15
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiya
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-30 00:00:00.000000000 Z
11
+ date: 2023-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -60,7 +60,9 @@ files:
60
60
  - lib/hiya/configuration.rb
61
61
  - lib/hiya/image.rb
62
62
  - lib/hiya/link.rb
63
+ - lib/hiya/oauth.rb
63
64
  - lib/hiya/url.rb
65
+ - lib/hiya/users/links.rb
64
66
  - lib/hiya/version.rb
65
67
  - lib/hiya/video.rb
66
68
  - sig/hiya.rbs