qiita_org 0.1.21 → 0.1.35
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.yardopts +4 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +40 -1
- data/lib/qiita_org.rb +41 -52
- data/lib/qiita_org/.qiita.conf +7 -6
- data/lib/qiita_org/access_qiita.rb +29 -0
- data/lib/qiita_org/all.rb +50 -0
- data/lib/qiita_org/base.rb +98 -0
- data/lib/qiita_org/config.json +1 -0
- data/lib/qiita_org/config.rb +1 -2
- data/lib/qiita_org/error_message.rb +99 -0
- data/lib/qiita_org/get.rb +15 -53
- data/lib/qiita_org/get_multiple_files.rb +36 -0
- data/lib/qiita_org/get_template.rb +24 -48
- data/lib/qiita_org/list.rb +9 -39
- data/lib/qiita_org/md_converter_for_image.rb +7 -7
- data/lib/qiita_org/{check_pc_os.rb → old_programs/check_pc_os.rb} +0 -0
- data/lib/qiita_org/{decide_option.rb → old_programs/decide_option.rb} +6 -2
- data/lib/qiita_org/old_programs/file_open.rb +15 -0
- data/lib/qiita_org/{get_file_path.rb → old_programs/get_file_path.rb} +0 -0
- data/lib/qiita_org/{get_file_url.rb → old_programs/get_file_url.rb} +12 -14
- data/lib/qiita_org/{search_conf_path.rb → old_programs/search_conf_path.rb} +1 -1
- data/lib/qiita_org/old_programs/select_path.rb +16 -0
- data/lib/qiita_org/old_programs/set_config.rb +30 -0
- data/lib/qiita_org/{show_file_and_url.rb → old_programs/show_file_and_url.rb} +45 -36
- data/lib/qiita_org/post.rb +68 -50
- data/lib/qiita_org/template.org +1 -0
- data/lib/qiita_org/upload.rb +110 -0
- data/lib/qiita_org/version.rb +1 -1
- data/tests/test.org +10 -3
- data/tests/test2.org +3 -1
- data/tests/test3.org +2 -1
- data/tests/test4.org +16 -0
- data/tests/twitter_test.org +14 -0
- metadata +1614 -10
- data/lib/qiita_org/hoge.txt +0 -3
- data/tests/test2.md +0 -6
data/lib/qiita_org/config.rb
CHANGED
@@ -7,8 +7,7 @@ class QiitaConfig
|
|
7
7
|
@option = option
|
8
8
|
@input = input
|
9
9
|
if status == "local"
|
10
|
-
|
11
|
-
conf_dir = search.search_conf_path()
|
10
|
+
conf_dir = QiitaBase.new().search_conf_path(Dir.pwd, Dir.home)
|
12
11
|
if @option == "set"
|
13
12
|
@setup = File.join(Dir.pwd, ".qiita.conf")
|
14
13
|
else
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require "colorize"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
class ErrorMessage
|
5
|
+
def initialize()
|
6
|
+
end
|
7
|
+
|
8
|
+
def access_token_error(access_token)
|
9
|
+
if access_token == ""
|
10
|
+
puts "Please setting ACCESS_TOKEN.".red
|
11
|
+
puts "Hint: qiita config global access_token 'your access_token'.".red
|
12
|
+
puts "Hint: qiita config local access_token 'your access_token'.".red
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def teams_url_error(teams_url)
|
18
|
+
if teams_url == ""
|
19
|
+
puts "Please setting teams_url.".red
|
20
|
+
puts "Hint: qiita config global teams_url 'https://foge.qiita.com/'.".red
|
21
|
+
puts "Hint: qiita config local teams_url 'https://foge.qiita.com/'.".red
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def qiita_access_error(e)
|
27
|
+
puts "#{$!}".red
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
|
31
|
+
def qiita_post_error(response, file)
|
32
|
+
message = response.message
|
33
|
+
if message != "Created"
|
34
|
+
if message != "OK"
|
35
|
+
if message == "Unauthorized"
|
36
|
+
puts "#{message}".red
|
37
|
+
puts "Please check your access_token.".red
|
38
|
+
system "rm #{file}"
|
39
|
+
exit
|
40
|
+
elsif message == "Forbidden"
|
41
|
+
puts "#{message}".red
|
42
|
+
puts "You are not authorized to access this page. please check qiita_id.".red
|
43
|
+
system "rm #{file}"
|
44
|
+
exit
|
45
|
+
elsif message == "Not Found"
|
46
|
+
puts "#{message}".red
|
47
|
+
system "rm #{file}"
|
48
|
+
exit
|
49
|
+
else
|
50
|
+
puts "#{message}".red
|
51
|
+
system "rm #{file}"
|
52
|
+
exit
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def config_set_error(conf_dir)
|
59
|
+
conf_path = File.join(conf_dir, ".qiita.conf")
|
60
|
+
conf = JSON.load(File.read(conf_path))
|
61
|
+
check = true
|
62
|
+
|
63
|
+
if conf["name"] == ""
|
64
|
+
puts "Please set your name in config.".red
|
65
|
+
puts "Hint: qiita config global name 'YOUR NAME'.".red
|
66
|
+
puts "Hint: qiita config local name 'YOUR NAME'.".red
|
67
|
+
# system "rm template.org"
|
68
|
+
check = false
|
69
|
+
end
|
70
|
+
|
71
|
+
if conf["email"] == ""
|
72
|
+
puts "Please set your email in config.".red
|
73
|
+
puts "Hint: qiita config global email 'your_email@example.com'.".red
|
74
|
+
puts "Hint: qiita config local name 'your_email@example.com'.".red
|
75
|
+
check = false
|
76
|
+
end
|
77
|
+
unless check
|
78
|
+
exit
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def md_file_exists?(src, res)
|
83
|
+
unless File.exists?(src.gsub(".org", ".md"))
|
84
|
+
puts "Can not convert org doc to markdown.".red
|
85
|
+
puts 'Please confirm emacs version above 26.'.red
|
86
|
+
puts "Next, check links in the org doc, as converting in emacs by 'ctrl+c, ctrl+e, h, o'.".red
|
87
|
+
exit
|
88
|
+
else
|
89
|
+
p res
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def many_tags_error(tags)
|
94
|
+
if tags.count(",") >= 5
|
95
|
+
puts "The maximum number of tag is five. Please delete some tags.".red
|
96
|
+
exit
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/qiita_org/get.rb
CHANGED
@@ -3,56 +3,14 @@ require "json"
|
|
3
3
|
require "open-uri"
|
4
4
|
require "io/console"
|
5
5
|
require "colorize"
|
6
|
-
require "qiita_org/
|
6
|
+
require "qiita_org/error_message.rb"
|
7
|
+
require "qiita_org/access_qiita.rb"
|
7
8
|
|
8
9
|
class QiitaGet
|
9
10
|
def initialize(mode, id)
|
10
11
|
@mode = mode
|
11
12
|
@get_id = id
|
12
|
-
|
13
|
-
@conf_dir = search.search_conf_path()
|
14
|
-
end
|
15
|
-
|
16
|
-
# set config
|
17
|
-
def set_config()
|
18
|
-
conf_path = File.join(@conf_dir, ".qiita.conf")
|
19
|
-
conf = JSON.load(File.read(conf_path))
|
20
|
-
@access_token = conf["access_token"]
|
21
|
-
@teams_url = conf["teams_url"]
|
22
|
-
end
|
23
|
-
|
24
|
-
# select path
|
25
|
-
def select_path()
|
26
|
-
case @mode
|
27
|
-
when "teams"
|
28
|
-
@qiita = @teams_url
|
29
|
-
@path = "api/v2/items?page=1&per_page=100"
|
30
|
-
else
|
31
|
-
@qiita = "https://qiita.com/"
|
32
|
-
@path = "api/v2/authenticated_user/items?page=1&per_page=100"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# access qiita
|
37
|
-
def access_qiita()
|
38
|
-
uri = URI.parse(@qiita + @path)
|
39
|
-
|
40
|
-
headers = { "Authorization" => "Bearer #{@access_token}",
|
41
|
-
"Content-Type" => "application/json" }
|
42
|
-
|
43
|
-
begin
|
44
|
-
response = URI.open(
|
45
|
-
"#{uri}",
|
46
|
-
"Authorization" => "#{headers["Authorization"]}",
|
47
|
-
)
|
48
|
-
#raise "NOT FOUND: # {@get_id} report".red
|
49
|
-
rescue => e
|
50
|
-
puts "#{$!}".red
|
51
|
-
exit
|
52
|
-
else
|
53
|
-
p response
|
54
|
-
@items = JSON.parse(response.read)
|
55
|
-
end
|
13
|
+
@base = QiitaBase.new()
|
56
14
|
end
|
57
15
|
|
58
16
|
# select report
|
@@ -79,7 +37,7 @@ class QiitaGet
|
|
79
37
|
File.write(filename, item["body"])
|
80
38
|
convert_md_to_org()
|
81
39
|
write_header_on_org()
|
82
|
-
puts_massage_and_delete_md()
|
40
|
+
puts_massage_and_delete_md(item)
|
83
41
|
end
|
84
42
|
end
|
85
43
|
end
|
@@ -127,9 +85,9 @@ EOS
|
|
127
85
|
end
|
128
86
|
|
129
87
|
# see massage and delete id.md
|
130
|
-
def puts_massage_and_delete_md()
|
88
|
+
def puts_massage_and_delete_md(item)
|
131
89
|
puts "created #{@id}.org".green
|
132
|
-
puts "URL: #{
|
90
|
+
puts "URL: #{item["url"]}"
|
133
91
|
system "rm -f #{@id}.md"
|
134
92
|
end
|
135
93
|
|
@@ -142,7 +100,7 @@ EOS
|
|
142
100
|
end
|
143
101
|
@path = "api/v2/items/#{@get_id}"
|
144
102
|
|
145
|
-
access_qiita()
|
103
|
+
@items = AccessQiita.new(@access_token, @qiita, @path).access_qiita()
|
146
104
|
|
147
105
|
@title = @items["title"]
|
148
106
|
@id = @items["id"]
|
@@ -156,14 +114,18 @@ EOS
|
|
156
114
|
File.write(filename, @items["body"])
|
157
115
|
convert_md_to_org()
|
158
116
|
write_header_on_org()
|
159
|
-
puts_massage_and_delete_md()
|
117
|
+
puts_massage_and_delete_md(@items)
|
160
118
|
end
|
161
119
|
|
162
120
|
def run()
|
163
|
-
set_config()
|
121
|
+
@access_token, @teams_url, @display, @ox_qmd_load_path = @base.set_config()
|
122
|
+
if @mode == "teams"
|
123
|
+
ErrorMessage.new().teams_url_error(@teams_url)
|
124
|
+
end
|
125
|
+
|
164
126
|
if @get_id == nil
|
165
|
-
|
166
|
-
access_qiita()
|
127
|
+
@qiita, @path = @base.select_access_path(@mode, @teams_url)
|
128
|
+
@items = AccessQiita.new(@access_token, @qiita, @path).access_qiita()
|
167
129
|
select_report()
|
168
130
|
else
|
169
131
|
get_id_report()
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "colorize"
|
2
|
+
require "qiita_org/post.rb"
|
3
|
+
require "qiita_org/upload.rb"
|
4
|
+
|
5
|
+
class GetMultipleFiles
|
6
|
+
def initialize(files, os, type)
|
7
|
+
@files = files
|
8
|
+
@option = nil
|
9
|
+
@os = os
|
10
|
+
@type = type
|
11
|
+
unless @files[-1].match(/(.+).org/)
|
12
|
+
@option = @files[-1]
|
13
|
+
@files = @files[0..-2]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def run()
|
18
|
+
puts "#{@type} files: #{@files}".green
|
19
|
+
@files.each do |file|
|
20
|
+
mode = @option || QiitaBase.new().pick_up_option(file)
|
21
|
+
puts "qiita #{@type} #{file} #{mode}".green
|
22
|
+
if @type == "post"
|
23
|
+
qiita = QiitaPost.new(file, mode, @os)
|
24
|
+
begin
|
25
|
+
qiita.select_option(mode)
|
26
|
+
rescue RuntimeError => e
|
27
|
+
puts $!
|
28
|
+
else
|
29
|
+
qiita.run
|
30
|
+
end
|
31
|
+
elsif @type == "upload"
|
32
|
+
QiitaFileUpLoad.new(file, mode, @os).upload()
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
require "fileutils"
|
2
2
|
require "colorize"
|
3
3
|
require "kconv"
|
4
|
-
require "qiita_org/
|
4
|
+
require "qiita_org/error_message.rb"
|
5
5
|
|
6
6
|
class QiitaGetTemplate
|
7
|
-
def initialize(os)
|
7
|
+
def initialize(os, filename)
|
8
8
|
@os = os
|
9
|
-
|
10
|
-
|
11
|
-
@conf_dir = search.search_conf_path()
|
12
|
-
set_name_and_email()
|
13
|
-
# check_write_header()
|
14
|
-
check_write_contents()
|
9
|
+
@filename = filename
|
10
|
+
@conf_dir = QiitaBase.new().search_conf_path(Dir.pwd, Dir.home)
|
15
11
|
end
|
16
12
|
|
17
13
|
def get_macos_version()
|
@@ -20,9 +16,9 @@ class QiitaGetTemplate
|
|
20
16
|
m = []
|
21
17
|
m = version.match(/ProductName:\t(.+)\nProductVersion:\t(.+)\nBuildVersion:\t(.+)\n/)
|
22
18
|
system 'rm hoge.txt'
|
23
|
-
conts = File.read(
|
19
|
+
conts = File.read(@filename)
|
24
20
|
conts << "![#{m[1]}-#{m[2]}](https://img.shields.io/badge/#{m[1].gsub(" ", "")}-#{m[2]}-brightgreen) "
|
25
|
-
File.write(
|
21
|
+
File.write(@filename, conts) # + "# {m[1]}: # {m[2]}\n")
|
26
22
|
end
|
27
23
|
|
28
24
|
def get_windowsos_version()
|
@@ -35,9 +31,9 @@ class QiitaGetTemplate
|
|
35
31
|
m2 = version2.match(/OSArchitecture\n(.+)-bit/)
|
36
32
|
system 'rm hoge1.txt'
|
37
33
|
system 'rm hoge2.txt'
|
38
|
-
conts = File.read(
|
34
|
+
conts = File.read(@filename)
|
39
35
|
conts << "![#{m1[1]}-#{m1[2]}](https://img.shields.io/badge/#{m1[1].gsub(" ", "")}#{m1[2]}-#{m2[1]}bit-brightgreen) "
|
40
|
-
File.write(
|
36
|
+
File.write(@filename, conts) # + "# {m[1]}: # {m[2]}\n")
|
41
37
|
end
|
42
38
|
|
43
39
|
def get_ubuntu_version()
|
@@ -46,9 +42,9 @@ class QiitaGetTemplate
|
|
46
42
|
m = []
|
47
43
|
m = version.match(/(.+) (.+) LTS /)
|
48
44
|
system 'rm hoge.txt'
|
49
|
-
conts = File.read(
|
45
|
+
conts = File.read(@filename)
|
50
46
|
conts << "![#{m[1]}-#{m[2]}](https://img.shields.io/badge/#{m[1]}-#{m[2]}-brightgreen) "
|
51
|
-
File.write(
|
47
|
+
File.write(@filename, conts)
|
52
48
|
end
|
53
49
|
|
54
50
|
def get_ruby_version()
|
@@ -57,9 +53,9 @@ class QiitaGetTemplate
|
|
57
53
|
m = []
|
58
54
|
m = version.match(/ruby (.+) \((.+)/)
|
59
55
|
system 'rm hoge.txt'
|
60
|
-
conts = File.read(
|
56
|
+
conts = File.read(@filename)
|
61
57
|
conts << "![ruby-#{m[1]}](https://img.shields.io/badge/ruby-#{m[1].gsub(" ", "")}-brightgreen) "
|
62
|
-
File.write(
|
58
|
+
File.write(@filename, conts) # + "ruby: # {m[1]}\n")
|
63
59
|
end
|
64
60
|
|
65
61
|
# cp template.org
|
@@ -67,11 +63,11 @@ class QiitaGetTemplate
|
|
67
63
|
lib = File.expand_path("../../../lib", __FILE__)
|
68
64
|
cp_file = File.join(lib, "qiita_org", "template.org")
|
69
65
|
|
70
|
-
if File.exists?("
|
71
|
-
puts "
|
66
|
+
if File.exists?("./#{@filename}")
|
67
|
+
puts "#{@filename} exists.".red
|
72
68
|
exit
|
73
69
|
else
|
74
|
-
FileUtils.cp(cp_file,
|
70
|
+
FileUtils.cp(cp_file, @filename, verbose: true)
|
75
71
|
end
|
76
72
|
end
|
77
73
|
|
@@ -106,41 +102,21 @@ class QiitaGetTemplate
|
|
106
102
|
end
|
107
103
|
end
|
108
104
|
|
109
|
-
def check_write_header()
|
110
|
-
["name", "email"].each do |src|
|
111
|
-
print "Write your #{src}?(y/n) "
|
112
|
-
ans = STDIN.gets.chomp
|
113
|
-
next if ans == "n"
|
114
|
-
if ans == "y"
|
115
|
-
send("get_#{src}")
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def get_name()
|
121
|
-
conts = File.readlines("template.org")
|
122
|
-
p "Type your name"
|
123
|
-
name = STDIN.gets
|
124
|
-
conts[3] = "#+AUTHOR: #{name}"
|
125
|
-
File.write("template.org", conts.join)
|
126
|
-
end
|
127
|
-
|
128
|
-
def get_email()
|
129
|
-
conts = File.readlines("template.org")
|
130
|
-
p "Type your email"
|
131
|
-
email = STDIN.gets
|
132
|
-
conts[4] = "#+EMAIL: (concat \"#{email.chomp}\")\n"
|
133
|
-
File.write("template.org", conts.join)
|
134
|
-
end
|
135
|
-
|
136
105
|
def set_name_and_email()
|
137
106
|
conf_path = File.join(@conf_dir, ".qiita.conf")
|
138
107
|
conf = JSON.load(File.read(conf_path))
|
139
108
|
name = conf["name"]
|
140
109
|
email = conf["email"]
|
141
|
-
conts = File.readlines(
|
110
|
+
conts = File.readlines(@filename)
|
142
111
|
conts[3] = "#+AUTHOR: #{name}\n"
|
143
112
|
conts[4] = "#+EMAIL: (concat \"#{email}\")\n"
|
144
|
-
File.write(
|
113
|
+
File.write(@filename, conts.join)
|
114
|
+
end
|
115
|
+
|
116
|
+
def run()
|
117
|
+
ErrorMessage.new().config_set_error(@conf_dir)
|
118
|
+
cp_template()
|
119
|
+
set_name_and_email()
|
120
|
+
check_write_contents()
|
145
121
|
end
|
146
122
|
end
|
data/lib/qiita_org/list.rb
CHANGED
@@ -2,50 +2,21 @@ require "net/https"
|
|
2
2
|
require "json"
|
3
3
|
require "open-uri"
|
4
4
|
require "colorize"
|
5
|
-
require "qiita_org/
|
5
|
+
require "qiita_org/error_message.rb"
|
6
|
+
require "qiita_org/access_qiita.rb"
|
6
7
|
|
7
8
|
class QiitaList
|
8
9
|
def initialize(mode)
|
9
10
|
@mode = mode
|
10
|
-
|
11
|
-
@
|
12
|
-
|
13
|
-
|
14
|
-
access_qiita()
|
15
|
-
view_list()
|
16
|
-
end
|
17
|
-
|
18
|
-
def set_config()
|
19
|
-
conf_path = File.join(@conf_dir, ".qiita.conf")
|
20
|
-
conf = JSON.load(File.read(conf_path))
|
21
|
-
@access_token = conf["access_token"]
|
22
|
-
@teams_url = conf["teams_url"]
|
23
|
-
end
|
24
|
-
|
25
|
-
# select path
|
26
|
-
def select_path()
|
27
|
-
case @mode
|
28
|
-
when "teams"
|
29
|
-
@qiita = @teams_url
|
30
|
-
@path = "api/v2/items?page=1&per_page=100"
|
31
|
-
else
|
32
|
-
@qiita = "https://qiita.com/"
|
33
|
-
@path = "api/v2/authenticated_user/items?page=1&per_page=100"
|
11
|
+
@base = QiitaBase.new
|
12
|
+
@access_token, @teams_url, @display, @ox_qmd_load_path = @base.set_config()
|
13
|
+
if @mode == "teams"
|
14
|
+
ErrorMessage.new().teams_url_error(@teams_url)
|
34
15
|
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# access qiita
|
38
|
-
def access_qiita()
|
39
|
-
uri = URI.parse(@qiita + @path)
|
40
16
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
response = URI.open(
|
45
|
-
"#{uri}",
|
46
|
-
"Authorization" => "#{headers["Authorization"]}",
|
47
|
-
)
|
48
|
-
@items = JSON.parse(response.read)
|
17
|
+
@qiita, @path = @base.select_access_path(@mode, @teams_url)
|
18
|
+
@items = AccessQiita.new(@access_token, @qiita, @path).access_qiita()
|
19
|
+
view_list()
|
49
20
|
end
|
50
21
|
|
51
22
|
def view_list()
|
@@ -60,6 +31,5 @@ class QiitaList
|
|
60
31
|
end
|
61
32
|
puts ""
|
62
33
|
end
|
63
|
-
# p @items[0]["user"]["id"]
|
64
34
|
end
|
65
35
|
end
|