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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.yardopts +4 -0
  4. data/Gemfile +7 -0
  5. data/Gemfile.lock +40 -1
  6. data/lib/qiita_org.rb +41 -52
  7. data/lib/qiita_org/.qiita.conf +7 -6
  8. data/lib/qiita_org/access_qiita.rb +29 -0
  9. data/lib/qiita_org/all.rb +50 -0
  10. data/lib/qiita_org/base.rb +98 -0
  11. data/lib/qiita_org/config.json +1 -0
  12. data/lib/qiita_org/config.rb +1 -2
  13. data/lib/qiita_org/error_message.rb +99 -0
  14. data/lib/qiita_org/get.rb +15 -53
  15. data/lib/qiita_org/get_multiple_files.rb +36 -0
  16. data/lib/qiita_org/get_template.rb +24 -48
  17. data/lib/qiita_org/list.rb +9 -39
  18. data/lib/qiita_org/md_converter_for_image.rb +7 -7
  19. data/lib/qiita_org/{check_pc_os.rb → old_programs/check_pc_os.rb} +0 -0
  20. data/lib/qiita_org/{decide_option.rb → old_programs/decide_option.rb} +6 -2
  21. data/lib/qiita_org/old_programs/file_open.rb +15 -0
  22. data/lib/qiita_org/{get_file_path.rb → old_programs/get_file_path.rb} +0 -0
  23. data/lib/qiita_org/{get_file_url.rb → old_programs/get_file_url.rb} +12 -14
  24. data/lib/qiita_org/{search_conf_path.rb → old_programs/search_conf_path.rb} +1 -1
  25. data/lib/qiita_org/old_programs/select_path.rb +16 -0
  26. data/lib/qiita_org/old_programs/set_config.rb +30 -0
  27. data/lib/qiita_org/{show_file_and_url.rb → old_programs/show_file_and_url.rb} +45 -36
  28. data/lib/qiita_org/post.rb +68 -50
  29. data/lib/qiita_org/template.org +1 -0
  30. data/lib/qiita_org/upload.rb +110 -0
  31. data/lib/qiita_org/version.rb +1 -1
  32. data/tests/test.org +10 -3
  33. data/tests/test2.org +3 -1
  34. data/tests/test3.org +2 -1
  35. data/tests/test4.org +16 -0
  36. data/tests/twitter_test.org +14 -0
  37. metadata +1614 -10
  38. data/lib/qiita_org/hoge.txt +0 -3
  39. data/tests/test2.md +0 -6
@@ -7,8 +7,7 @@ class QiitaConfig
7
7
  @option = option
8
8
  @input = input
9
9
  if status == "local"
10
- search = SearchConfPath.new(Dir.pwd, Dir.home)
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
@@ -3,56 +3,14 @@ require "json"
3
3
  require "open-uri"
4
4
  require "io/console"
5
5
  require "colorize"
6
- require "qiita_org/search_conf_path.rb"
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
- search = SearchConfPath.new(Dir.pwd, Dir.home)
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: #{@items["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
- select_path()
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/search_conf_path"
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
- cp_template()
10
- search = SearchConfPath.new(Dir.pwd, Dir.home)
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("template.org")
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("template.org", conts) # + "# {m[1]}: # {m[2]}\n")
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("template.org")
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("template.org", conts) # + "# {m[1]}: # {m[2]}\n")
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("template.org")
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("template.org", conts)
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("template.org")
56
+ conts = File.read(@filename)
61
57
  conts << "![ruby-#{m[1]}](https://img.shields.io/badge/ruby-#{m[1].gsub(" ", "")}-brightgreen) "
62
- File.write("template.org", conts) # + "ruby: # {m[1]}\n")
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?("./template.org")
71
- puts "template.org exists.".red
66
+ if File.exists?("./#{@filename}")
67
+ puts "#{@filename} exists.".red
72
68
  exit
73
69
  else
74
- FileUtils.cp(cp_file, ".", verbose: true)
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("template.org")
110
+ conts = File.readlines(@filename)
142
111
  conts[3] = "#+AUTHOR: #{name}\n"
143
112
  conts[4] = "#+EMAIL: (concat \"#{email}\")\n"
144
- File.write("template.org", conts.join)
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
@@ -2,50 +2,21 @@ require "net/https"
2
2
  require "json"
3
3
  require "open-uri"
4
4
  require "colorize"
5
- require "qiita_org/search_conf_path.rb"
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
- search = SearchConfPath.new(Dir.pwd, Dir.home)
11
- @conf_dir = search.search_conf_path()
12
- set_config()
13
- select_path()
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
- headers = { "Authorization" => "Bearer #{@access_token}",
42
- "Content-Type" => "application/json" }
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