qiita_org 0.1.21 → 0.1.35

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 (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