Class: QiitaGet

Inherits:
Object
  • Object
show all
Defined in:
lib/qiita_org/get.rb

Instance Method Summary collapse

Constructor Details

#initialize(mode, id) ⇒ QiitaGet

Returns a new instance of QiitaGet.



8
9
10
11
# File 'lib/qiita_org/get.rb', line 8

def initialize(mode, id)
  @mode = mode
  @get_id = id
end

Instance Method Details

#access_qiitaObject

access qiita



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/qiita_org/get.rb', line 34

def access_qiita()
  uri = URI.parse(@qiita + @path)

  headers = { "Authorization" => "Bearer #{@access_token}",
    "Content-Type" => "application/json" }

  response = URI.open(
                      "#{uri}",
                      "Authorization" => "#{headers["Authorization"]}",
                      )
  @items = JSON.parse(response.read)
end

#check_modeObject

check mode



100
101
102
103
104
105
106
# File 'lib/qiita_org/get.rb', line 100

def check_mode()
  if @private
    @mode = "private"
  else
    @mode = "public"
  end
end

#convert_md_to_orgObject

id.md -> id.org



77
78
79
# File 'lib/qiita_org/get.rb', line 77

def convert_md_to_org()
  system "pandoc #{@id}.md -o #{@id}.org"
end

#get_id_reportObject



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/qiita_org/get.rb', line 124

def get_id_report()
  case @mode
  when "teams"
    @qiita = @teams_url
  else
    @qiita = "https://qiita.com/"
  end
  @path = "api/v2/items/#{@get_id}"

  access_qiita()

  @title = @items["title"]
  @id = @items["id"]
  @author = @items["user"]["id"]
  @tags = []
  @private = @items["private"]
  @items["tags"].each do |tag|
    @tags << tag["name"]
  end
  p filename = "#{@id}.md"
  File.write(filename, @items["body"])
  convert_md_to_org()
  write_header_on_org()
  puts_massage_and_delete_md()
end

#puts_massage_and_delete_mdObject

see massage and delete id.md



119
120
121
122
# File 'lib/qiita_org/get.rb', line 119

def puts_massage_and_delete_md()
  puts "created #{@id}.org".green
  system "rm -f #{@id}.md"
end

#runObject



150
151
152
153
154
155
156
157
158
159
# File 'lib/qiita_org/get.rb', line 150

def run()
  set_config()
  if @get_id == nil
    select_path()
    access_qiita()
    select_report()
  else
    get_id_report()
  end
end

#select_pathObject

select path



22
23
24
25
26
27
28
29
30
31
# File 'lib/qiita_org/get.rb', line 22

def select_path()
  case @mode
  when "teams"
    @qiita = @teams_url
    @path = "api/v2/items?page=1&per_page=100"
  else
    @qiita = "https://qiita.com/"
    @path = "api/v2/authenticated_user/items?page=1&per_page=100"
  end
end

#select_reportObject

select report



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/qiita_org/get.rb', line 48

def select_report()
  @items.each do |item|
    p "title: #{item["title"]}"
    p "Do you gets it?(y/n), ('e' to exit)"
    p ans = STDIN.getch

    next if ans == "n"
    if ans == "e"
      break
    end
    if ans == "y"
      p @title = item["title"] #.gsub(/ |\(|\)/, " " => "_", "(" => "", ")" => "")
      @id = item["id"]
      @author = item["user"]["id"]
      @tags = []
      @private = item["private"]
      item["tags"].each do |tag|
        @tags << tag["name"]
      end
      p filename = "#{@id}.md"
      File.write(filename, item["body"])
      convert_md_to_org()
      write_header_on_org()
      puts_massage_and_delete_md()
    end
  end
end

#set_configObject

set config



14
15
16
17
18
19
# File 'lib/qiita_org/get.rb', line 14

def set_config()
  conf_path = File.join(ENV["HOME"], ".qiita.conf")
  conf = JSON.load(File.read(conf_path))
  @access_token = conf["access_token"]
  @teams_url = conf["teams_url"]
end

#set_headerObject

set header



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/qiita_org/get.rb', line 82

def set_header()
  head = "#+OPTIONS: ^:{}\n#+STARTUP: indent nolineimages\n#+TITLE: \#{@title}\n#+AUTHOR: \#{@author}\n#+EMAIL:\n#+LANGUAGE:  jp\n# +OPTIONS:   H:4 toc:t num:2\n#+OPTIONS:   toc:nil\n#+TAG: \#{@tags.join(\", \")}\n#+SETUPFILE: ~/.emacs.d/org-mode/theme-readtheorg.setup\\n\n"

  return head
end

#write_header_on_orgObject

write header



109
110
111
112
113
114
115
116
# File 'lib/qiita_org/get.rb', line 109

def write_header_on_org()
  head = set_header()

  check_mode() if @mode != "teams"

  conts = File.read("#{@id}.org")
  File.write("#{@id}.org", "#+qiita_#{@mode}: #{@id}\n" + head + conts)
end