neocities 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/neocities/cli.rb +31 -13
- data/lib/neocities/client.rb +32 -22
- data/lib/neocities/version.rb +1 -1
- data/neocities.gemspec +4 -4
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7fc3c5a5006cc43a1d376c76c016af351a0b577
|
4
|
+
data.tar.gz: 34b8fc7ddd3bac03b081855fc589a3e09d9e49ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f83a532c0b208f5f73d77fa8727a439df85baac46ff9a0dcb746d38ca78497af68c1a6d924204b394a025ef419149dcdb2595dbb48192bf7484bad611fd77d76
|
7
|
+
data.tar.gz: 294cf5bd9ef2413b8196fd7ad156e142b6d680f51166fff2f0ae1c277cf983cbb93aff446bf0e27f51ea5daee0afe5200fc298e2b57467d8e26b9bb64a24e5fa
|
data/lib/neocities/cli.rb
CHANGED
@@ -19,12 +19,16 @@ module Neocities
|
|
19
19
|
@subargs = @argv[1..@argv.length]
|
20
20
|
@prompt = TTY::Prompt.new
|
21
21
|
@api_key = ENV['NEOCITIES_API_KEY'] || nil
|
22
|
-
@app_config_path = File.join self.class.app_config_path, 'config'
|
22
|
+
@app_config_path = File.join self.class.app_config_path('neocities'), 'config'
|
23
23
|
end
|
24
24
|
|
25
25
|
def display_response(resp)
|
26
26
|
if resp[:result] == 'success'
|
27
27
|
puts "#{@pastel.green.bold 'SUCCESS:'} #{resp[:message]}"
|
28
|
+
elsif resp[:result] == 'error' && resp[:error_type] == 'file_exists'
|
29
|
+
out = "#{@pastel.yellow.bold 'EXISTS:'} #{resp[:message]}"
|
30
|
+
out += " (#{resp[:error_type]})" if resp[:error_type]
|
31
|
+
puts out
|
28
32
|
else
|
29
33
|
out = "#{@pastel.red.bold 'ERROR:'} #{resp[:message]}"
|
30
34
|
out += " (#{resp[:error_type]})" if resp[:error_type]
|
@@ -207,7 +211,9 @@ module Neocities
|
|
207
211
|
print @pastel.bold("Uploading #{path} ... ")
|
208
212
|
resp = @client.upload path, path
|
209
213
|
|
210
|
-
if resp[:result] == '
|
214
|
+
if resp[:result] == 'error' && resp[:error_type] == 'file_exists'
|
215
|
+
print @pastel.yellow.bold("EXISTS") + "\n"
|
216
|
+
elsif resp[:result] == 'success'
|
211
217
|
print @pastel.green.bold("SUCCESS") + "\n"
|
212
218
|
else
|
213
219
|
print "\n"
|
@@ -380,11 +386,7 @@ HERE
|
|
380
386
|
exit
|
381
387
|
end
|
382
388
|
|
383
|
-
def self.app_config_path
|
384
|
-
File.join root_config_path, 'neocities'
|
385
|
-
end
|
386
|
-
|
387
|
-
def self.root_config_path
|
389
|
+
def self.app_config_path(name)
|
388
390
|
platform = if RUBY_PLATFORM =~ /win32/
|
389
391
|
:win32
|
390
392
|
elsif RUBY_PLATFORM =~ /darwin/
|
@@ -396,14 +398,30 @@ HERE
|
|
396
398
|
end
|
397
399
|
|
398
400
|
case platform
|
399
|
-
when :
|
400
|
-
|
401
|
-
|
401
|
+
when :linux
|
402
|
+
if ENV['XDG_CONFIG_HOME']
|
403
|
+
return File.join(ENV['XDG_CONFIG_HOME'], name)
|
404
|
+
end
|
405
|
+
|
406
|
+
if ENV['HOME']
|
407
|
+
return File.join(ENV['HOME'], '.config', name)
|
408
|
+
end
|
402
409
|
when :darwin
|
403
|
-
File.join
|
410
|
+
return File.join(ENV['HOME'], 'Library', 'Application Support', name)
|
404
411
|
else
|
405
|
-
|
406
|
-
|
412
|
+
# Windows platform detection is weird, just look for the env variables
|
413
|
+
if ENV['LOCALAPPDATA']
|
414
|
+
return File.join(ENV['LOCALAPPDATA'], name)
|
415
|
+
end
|
416
|
+
|
417
|
+
if ENV['USERPROFILE']
|
418
|
+
return File.join(ENV['USERPROFILE'], 'Local Settings', 'Application Data', name)
|
419
|
+
end
|
420
|
+
|
421
|
+
# Should work for the BSDs
|
422
|
+
if ENV['HOME']
|
423
|
+
return File.join(ENV['HOME'], '.'+name)
|
424
|
+
end
|
407
425
|
end
|
408
426
|
end
|
409
427
|
end
|
data/lib/neocities/client.rb
CHANGED
@@ -3,12 +3,11 @@ begin
|
|
3
3
|
rescue
|
4
4
|
end
|
5
5
|
|
6
|
-
require 'net/http'
|
7
|
-
require 'net/https'
|
8
6
|
require 'json'
|
9
7
|
require 'pathname'
|
10
8
|
require 'uri'
|
11
|
-
require '
|
9
|
+
require 'digest'
|
10
|
+
require 'httpclient'
|
12
11
|
|
13
12
|
module Neocities
|
14
13
|
class Client
|
@@ -16,13 +15,19 @@ module Neocities
|
|
16
15
|
|
17
16
|
def initialize(opts={})
|
18
17
|
@uri = URI.parse API_URI
|
19
|
-
@http =
|
20
|
-
@http.use_ssl = true
|
18
|
+
@http = HTTPClient.new force_basic_auth: true
|
21
19
|
@opts = opts
|
22
20
|
|
23
|
-
unless
|
21
|
+
unless opts[:api_key] || (opts[:sitename] && opts[:password])
|
24
22
|
raise ArgumentError, 'client requires a login (sitename/password) or an api_key'
|
25
23
|
end
|
24
|
+
|
25
|
+
if opts[:api_key]
|
26
|
+
@http.default_header = {'Authorization' => "Bearer #{opts[:api_key]}"}
|
27
|
+
else
|
28
|
+
@http.set_auth API_URI, opts[:sitename], opts[:password]
|
29
|
+
end
|
30
|
+
|
26
31
|
end
|
27
32
|
|
28
33
|
def list(path=nil)
|
@@ -33,6 +38,10 @@ module Neocities
|
|
33
38
|
get 'key'
|
34
39
|
end
|
35
40
|
|
41
|
+
def upload_hash(remote_path, sha1_hash)
|
42
|
+
post 'upload_hash', remote_path => sha1_hash
|
43
|
+
end
|
44
|
+
|
36
45
|
def upload(path, remote_path=nil)
|
37
46
|
path = Pathname path
|
38
47
|
|
@@ -40,7 +49,17 @@ module Neocities
|
|
40
49
|
raise ArgumentError, "#{path.to_s} does not exist."
|
41
50
|
end
|
42
51
|
|
43
|
-
|
52
|
+
rpath = (remote_path || path.basename)
|
53
|
+
|
54
|
+
res = upload_hash rpath, Digest::SHA1.file(path.to_s).hexdigest
|
55
|
+
|
56
|
+
if res[:files] && res[:files][remote_path.to_s.to_sym] == true
|
57
|
+
return {result: 'error', error_type: 'file_exists', message: 'file already exists and matches local file, not uploading'}
|
58
|
+
else
|
59
|
+
File.open(path.to_s) do |file|
|
60
|
+
post 'upload', rpath => file
|
61
|
+
end
|
62
|
+
end
|
44
63
|
end
|
45
64
|
|
46
65
|
def delete(*paths)
|
@@ -51,25 +70,16 @@ module Neocities
|
|
51
70
|
get 'info', sitename: sitename
|
52
71
|
end
|
53
72
|
|
54
|
-
private
|
55
|
-
|
56
73
|
def get(path, params={})
|
57
|
-
|
58
|
-
|
74
|
+
uri = @uri+path
|
75
|
+
uri.query = URI.encode_www_form params
|
76
|
+
resp = @http.get uri
|
77
|
+
JSON.parse resp.body, symbolize_names: true
|
59
78
|
end
|
60
79
|
|
61
80
|
def post(path, args={})
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def request(req)
|
67
|
-
if @opts[:api_key]
|
68
|
-
req['Authorization'] = "Bearer #{@opts[:api_key]}"
|
69
|
-
else
|
70
|
-
req.basic_auth @opts[:sitename], @opts[:password]
|
71
|
-
end
|
72
|
-
resp = @http.request req
|
81
|
+
uri = @uri+path
|
82
|
+
resp = @http.post uri, args
|
73
83
|
JSON.parse resp.body, symbolize_names: true
|
74
84
|
end
|
75
85
|
end
|
data/lib/neocities/version.rb
CHANGED
data/neocities.gemspec
CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
spec.extensions = ['ext/mkrf_conf.rb']
|
19
19
|
|
20
|
-
spec.add_dependency 'tty-table',
|
21
|
-
spec.add_dependency 'tty-prompt',
|
22
|
-
spec.add_dependency 'pastel',
|
23
|
-
spec.add_dependency '
|
20
|
+
spec.add_dependency 'tty-table', '~> 0.8', '>= 0.8.0'
|
21
|
+
spec.add_dependency 'tty-prompt', '~> 0.12', '>= 0.12.0'
|
22
|
+
spec.add_dependency 'pastel', '~> 0.7', '>= 0.7.1'
|
23
|
+
spec.add_dependency 'httpclient', '~> 2.8', '>= 2.8.3'
|
24
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neocities
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Drake
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-table
|
@@ -71,25 +71,25 @@ dependencies:
|
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 0.7.1
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
74
|
+
name: httpclient
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
77
|
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: '2.
|
79
|
+
version: '2.8'
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.
|
82
|
+
version: 2.8.3
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '2.
|
89
|
+
version: '2.8'
|
90
90
|
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: 2.
|
92
|
+
version: 2.8.3
|
93
93
|
description:
|
94
94
|
email:
|
95
95
|
- contact@neocities.org
|