github_markdown_api 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0f51deadfe6eb8a74ec96e94c26032aa15e4732
4
- data.tar.gz: 9de0644d7834a2a2543e54ebc34c8386bc8e5704
3
+ metadata.gz: 5737fe7e4af01198fac341d2a3b476d3039f6d62
4
+ data.tar.gz: b7796252fd4bf0bc846f023755d929a727283269
5
5
  SHA512:
6
- metadata.gz: 397ef2cdb9b4a14cc48aefc52c97399cfd8182b9fbbf481139b8cfa6f645fe4e2e9bb23b59a6e85f92aaa7776bbbb483fa82bafcd484fc716818c56d3f245bd6
7
- data.tar.gz: f0e18d25d97014f59a7967d3145c13f39b2eb78190e12a6c7c3e19be52b21d17af58db8f11cb9eda0ff88a8d63863bf459298179e2cc9e224b79c8a7393db9c0
6
+ metadata.gz: 04475cda8d9dd4770736c5f7d7f4452535551fdf7581d8ed831c34d28c8ce8801a4fafc7c565fb7b74bb7ba3072c4b9f2a25cb1ab4a342aa17726757fdb0a4b7
7
+ data.tar.gz: 857ed5d1dd898e319c3c9ba6dde801f2e43e15859b2a2fed81f4a0c78786e32b223b2f3a00b4f06ef111e85782e292cbe4facf9e80e8ab828fce949115c06dbc
data/LICENSE.md CHANGED
@@ -3,25 +3,42 @@ Github_Markdown_API
3
3
 
4
4
  Github Markdown API client and command-line tool.
5
5
 
6
- You can redistribute it and/or modify it under either the terms of the GPL Version 3 or NYSL(0.9982).
6
+ You can redistribute it and/or modify it under either the terms of the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) or [NYSL Version 0.9982](http://www.kmonos.net/nysl/).
7
+
8
+ Apache-2.0
9
+ ----------
10
+
11
+ > Copyright 2013 USAMI Kenta <tadsan@zonu.me>
12
+ >
13
+ > Licensed under the Apache License, Version 2.0 (the "License");
14
+ > you may not use this file except in compliance with the License.
15
+ > You may obtain a copy of the License at
16
+ >
17
+ > http://www.apache.org/licenses/LICENSE-2.0
18
+ >
19
+ > Unless required by applicable law or agreed to in writing, software
20
+ > distributed under the License is distributed on an "AS IS" BASIS,
21
+ > WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
+ > See the License for the specific language governing permissions and
23
+ > limitations under the License.
7
24
 
8
25
  NYSL(ja)
9
26
  --------
10
27
 
11
28
  > A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、
12
29
  > ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。
13
- >
30
+ >
14
31
  > A-1. フリーウェアです。作者からは使用料等を要求しません。
15
32
  > A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。
16
33
  > A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。
17
34
  > A-4. 変更したものや部分的に使用したものは、あなたのものになります。
18
35
  > 公開する場合は、あなたの名前の下で行って下さい。
19
- >
36
+ >
20
37
  > B. このソフトを利用することによって生じた損害等について、作者は
21
38
  > 責任を負わないものとします。各自の責任においてご利用下さい。
22
- >
23
- > C. 著作者人格権は ZonuEXE(Kusami, tadsan@zonu.me) に帰属します。著作権は放棄します。
24
-
39
+ >
40
+ > C. 著作者人格権は USAMI Kenta <tadsan@zonu.me> に帰属します。著作権は放棄します。
41
+ >
25
42
  > D. 以上の3項は、ソース・実行バイナリの双方に適用されます。
26
43
 
27
44
  NYSL(en, Unofficial)
@@ -30,38 +47,20 @@ NYSL(en, Unofficial)
30
47
  > A. This software is "Everyone'sWare". It means:
31
48
  > Anybody who has this software can use it as if he/she is
32
49
  > the author.
33
- >
50
+ >
34
51
  > A-1. Freeware. No fee is required.
35
52
  > A-2. You can freely redistribute this software.
36
53
  > A-3. You can freely modify this software. And the source
37
54
  > may be used in any software with no limitation.
38
55
  > A-4. When you release a modified version to public, you
39
56
  > must publish it with your name.
40
- >
57
+ >
41
58
  > B. The author is not responsible for any kind of damages or loss
42
59
  > while using or misusing this software, which is distributed
43
60
  > "AS IS". No warranty of any kind is expressed or implied.
44
61
  > You use AT YOUR OWN RISK.
45
- >
62
+ >
46
63
  > C. Copyrighted to USAMI Kenta <tadsan@zonu.me>
47
- >
64
+ >
48
65
  > D. Above three clauses are applied both to source and binary
49
66
  > form of this software.
50
-
51
- GPLv3
52
- -----
53
-
54
- > Copyright (C) 2012 Kusami, USAMI Kenta <<tadsan@zonu.me>>
55
- >
56
- > This program is free software: you can redistribute it and/or modify
57
- > it under the terms of the GNU General Public License as published by
58
- > the Free Software Foundation, either version 3 of the License, or
59
- > (at your option) any later version.
60
- >
61
- > This program is distributed in the hope that it will be useful,
62
- > but WITHOUT ANY WARRANTY; without even the implied warranty of
63
- > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
64
- > GNU General Public License for more details.
65
- >
66
- > You should have received a copy of the GNU General Public License
67
- > along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $LOAD_PATH.unshift(File.expand_path('./../../lib', __FILE__))
4
+
3
5
  require 'github_markdown_api'
4
6
 
5
7
  puts GitHubMarkdownAPI::Raw::render(ARGF.read) rescue abort $!.inspect
@@ -10,15 +10,14 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["tadsan@zonu.me"]
11
11
  spec.description = %q{GitHub Markdown API client and command-line tool}
12
12
  spec.summary = %q{}
13
- spec.homepage = "http://dt.zonu.me/"
14
- spec.licenses = %w[LGPLv3 NYSL]
13
+ spec.homepage = "https://github.com/zonuexe/ruby-github_markdown_api"
14
+ spec.licenses = %w[Apache-2.0 NYSL]
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency 'hashize'
22
21
  spec.add_development_dependency "bundler", "~> 1.3"
23
22
  spec.add_development_dependency "rake"
24
23
  end
@@ -1,14 +1,16 @@
1
1
  require 'github_markdown_api/version'
2
- require 'github_markdown_api/raw'
3
2
 
4
3
  module GitHubMarkdownAPI
5
4
  DEFAULT_SCHEME = :https
6
- DEFAULT_HOST = 'api.github.com'
5
+ DEFAULT_HOST = 'api.github.com'.freeze
7
6
  DEFAULT_PORT = nil
8
7
  DEFAULT_ENDPOINTS = {
9
8
  raw: '/markdown/raw',
10
9
  attr: '/markdown',
11
- }
10
+ }.freeze
12
11
  DEFAULT_AUTH = nil
13
- DEFAULT_CONTENT_TYPE = 'text/plain'
12
+ DEFAULT_CONTENT_TYPE = 'text/plain'.freeze
13
+
14
+ autoload :APIClient, 'github_markdown_api/api_client'
15
+ autoload :Raw, 'github_markdown_api/raw'
14
16
  end
@@ -1,15 +1,18 @@
1
1
  require 'uri'
2
2
  require 'net/https'
3
- require 'github_markdown_api/version'
4
3
 
5
4
  # Abstract class of API Clients
6
5
  # @abstract
7
6
  class GitHubMarkdownAPI::APIClient
7
+ def self.render(markdown)
8
+ new.render(markdown)
9
+ end
10
+
8
11
  # @param [Hash,String] args
9
- def initialize (args = {}, sub_args = {})
12
+ def initialize(args = {}, sub_args = {})
10
13
  case args
11
14
  when Hash
12
- set_option args
15
+ set_option(args)
13
16
  when String
14
17
  # pending
15
18
  end
@@ -35,77 +38,76 @@ class GitHubMarkdownAPI::APIClient
35
38
 
36
39
  # @param [Hash] args
37
40
  # @return [self]
38
- def set_option (args)
41
+ def set_option(args)
39
42
  option = default_options.merge(args)
40
- @scheme = option[:scheme].intern
41
- @host = option[:host].to_s
42
- @port = option[:port]
43
- @endpoints = option[:endpoints].to_hash
44
- @content_type = option[:content_type].to_s
45
- return self
43
+
44
+ self.scheme = option[:scheme].to_sym
45
+ self.host = option[:host].to_s
46
+ self.port = option[:port]
47
+ self.endpoints = option[:endpoints].to_h
48
+ self.content_type = option[:content_type].to_s
49
+
50
+ self
46
51
  end
47
52
 
48
- # Returns hash of default options
49
- # @return [Hash]
50
- def default_options
51
- return {
52
- scheme: GitHubMarkdownAPI::DEFAULT_SCHEME,
53
- host: GitHubMarkdownAPI::DEFAULT_HOST,
54
- port: GitHubMarkdownAPI::DEFAULT_PORT,
55
- endpoints: GitHubMarkdownAPI::DEFAULT_ENDPOINTS,
56
- auth: GitHubMarkdownAPI::DEFAULT_AUTH,
57
- content_type: GitHubMarkdownAPI::DEFAULT_CONTENT_TYPE,
58
- }
53
+ # Renders HTML from Markdown
54
+ # @param [String] markdown
55
+ # @abstract
56
+ def render(markdown)
57
+ raise NotImplementedError, "#{__method__} is a abstract method."
59
58
  end
60
59
 
60
+ private
61
+
61
62
  # Requests API
62
63
  # @param [URI] raw_uri
63
64
  # @param [Hash] request
64
65
  # @return [String]
65
- def request (raw_uri, post)
66
+ def request(raw_uri, post)
66
67
  http = Net::HTTP.new(raw_uri.host, raw_uri.port)
67
- if @scheme == :https
68
+
69
+ if scheme == :https
68
70
  http.use_ssl = true
69
71
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
70
72
  end
71
73
 
72
- response = http.start{ http.request post }
74
+ response = http.start { http.request(post) }
73
75
  @last_response = response
74
76
 
75
77
  case response
76
78
  when Net::HTTPSuccess
77
- return response.body
79
+ response.body
78
80
  else
79
81
  raise RuntimeError, response
80
82
  end
81
83
  end
82
84
 
83
- # Renders HTML from Markdown
84
- # @param [String] markdown
85
- # @abstract
86
- def render (markdown)
87
- raise NotImplementedError, "#{__method__} is a abstract method."
88
- end
89
-
90
85
  # Returns endpoint of API type
91
86
  # @param [Symbol,#to_sym] type
92
87
  # @return [URI]
93
- def endpoint (type)
94
- path = @endpoints[type.to_sym]
95
- klass = case @scheme
96
- when :http; URI::HTTP
97
- when :https; URI::HTTPS
98
- end
88
+ def endpoint(type)
89
+ path = endpoints[type.to_sym]
90
+ scheme_class = URI.scheme_list.fetch(scheme.to_s.upcase)
91
+
99
92
  param = {
100
- host: @host,
93
+ host: host,
101
94
  path: path,
95
+ port: (port || 443)
102
96
  }
103
- param[:port] = @port || 443
104
97
 
105
- return klass.build(param)
98
+ scheme_class.build(param)
106
99
  end
107
100
 
108
- def self.render (markdown)
109
- return self.new.render markdown
101
+ # Returns hash of default options
102
+ # @return [Hash]
103
+ def default_options
104
+ {
105
+ scheme: GitHubMarkdownAPI::DEFAULT_SCHEME,
106
+ host: GitHubMarkdownAPI::DEFAULT_HOST,
107
+ port: GitHubMarkdownAPI::DEFAULT_PORT,
108
+ endpoints: GitHubMarkdownAPI::DEFAULT_ENDPOINTS,
109
+ auth: GitHubMarkdownAPI::DEFAULT_AUTH,
110
+ content_type: GitHubMarkdownAPI::DEFAULT_CONTENT_TYPE,
111
+ }
110
112
  end
111
113
  end
@@ -1,20 +1,17 @@
1
- require 'uri'
2
- require 'net/https'
3
- require 'github_markdown_api/version'
4
- require 'github_markdown_api/api_client'
5
-
6
1
  # Client implementation of Markdown Raw API
7
2
  class GitHubMarkdownAPI::Raw < GitHubMarkdownAPI::APIClient
8
3
  # @param [String] markdown
9
4
  # @return [String]
10
- def render (markdown)
5
+ def render(markdown)
11
6
  raw_uri = endpoint(:raw)
12
- header = {
7
+
8
+ headers = {
13
9
  'Content-Type' => @content_type
14
10
  }
15
- post = Net::HTTP::Post.new(raw_uri, header)
11
+
12
+ post = Net::HTTP::Post.new(raw_uri, headers)
16
13
  post.body = markdown
17
14
 
18
- return request(raw_uri, post)
15
+ request(raw_uri, post)
19
16
  end
20
17
  end
@@ -1,5 +1,5 @@
1
1
  # Namespace of github_markdown_api gem
2
2
  module GitHubMarkdownAPI
3
3
  # Version number of github_markdown_api gem
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'.freeze
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github_markdown_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - USAMI Kenta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-25 00:00:00.000000000 Z
11
+ date: 2016-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: hashize
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -72,9 +58,9 @@ files:
72
58
  - lib/github_markdown_api/api_client.rb
73
59
  - lib/github_markdown_api/raw.rb
74
60
  - lib/github_markdown_api/version.rb
75
- homepage: http://dt.zonu.me/
61
+ homepage: https://github.com/zonuexe/ruby-github_markdown_api
76
62
  licenses:
77
- - LGPLv3
63
+ - Apache-2.0
78
64
  - NYSL
79
65
  metadata: {}
80
66
  post_install_message:
@@ -93,9 +79,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
79
  version: '0'
94
80
  requirements: []
95
81
  rubyforge_project:
96
- rubygems_version: 2.2.1
82
+ rubygems_version: 2.5.2
97
83
  signing_key:
98
84
  specification_version: 4
99
85
  summary: ''
100
86
  test_files: []
101
- has_rdoc: