joplin 0.1.3 → 0.1.4

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
  SHA256:
3
- metadata.gz: 9d84d8923de4d7a272f6e90570f733207852aea344c6e972140a3313c0d3790d
4
- data.tar.gz: 18603e001b301ffa9dbfdd354acb2c3669b52f6377f326673e830101246ef2d6
3
+ metadata.gz: a00bb3fcafc4b1e31a2248b00e5a94bf68385b2b98d3b41d0119b3b451e14916
4
+ data.tar.gz: e58b2a8e7ce244728258de458da08174c9b36852bcbf58a7d2f11f41946a7a2d
5
5
  SHA512:
6
- metadata.gz: 4772336bb0e14afc24267af28f96f3af597516e408a7a7deaf25dc50a274f3394559db9bc0b7655a527e483bb9b3f8d59921b89f1d425cdd95fc68bc65812799
7
- data.tar.gz: 3f5409be7a1d412f9e5f1ed1000863749bf0fb626fa874919c2a9b2775081de3b248740aeb2b80d10ba5af5f3ada650608ec398af9e27b7ab4f96d01f36b9a8f
6
+ metadata.gz: 13b659f736facbeeea76548a0b83a7060d24f8f7ae8ceb1e7f7c56305d0a62ec0476709ac5d623248f98fc0f8896572d908af5bbff9244145d93f005d2790d28
7
+ data.tar.gz: 9cd4f0bfd7eace341b36e3909d5a1b5eea48d57e21e1d1c85a50722801447b49bb03f83f894704fba7d1e5aea79d12a41233f01e9c9b1e1c05e5892f42be507a
data/Gemfile CHANGED
@@ -6,3 +6,5 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
6
6
  gemspec
7
7
 
8
8
  gem "faraday", "~> 1.0"
9
+
10
+ gem "thor", "~> 1.0"
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- joplin (0.1.0)
4
+ joplin (0.1.3)
5
+ faraday (~> 1.0)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -24,6 +25,7 @@ GEM
24
25
  diff-lcs (>= 1.2.0, < 2.0)
25
26
  rspec-support (~> 3.9.0)
26
27
  rspec-support (3.9.3)
28
+ thor (1.0.1)
27
29
 
28
30
  PLATFORMS
29
31
  ruby
@@ -34,6 +36,7 @@ DEPENDENCIES
34
36
  joplin!
35
37
  rake (~> 13.0)
36
38
  rspec (~> 3.0)
39
+ thor (~> 1.0)
37
40
 
38
41
  BUNDLED WITH
39
42
  1.17.2
data/README.md CHANGED
@@ -1,39 +1,26 @@
1
1
  # Joplin
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/joplin`. To experiment with that code, run `bin/console` for an interactive prompt.
4
3
 
5
- TODO: Delete this and the text above, and describe your gem
6
-
7
- ## Installation
8
-
9
- Add this line to your application's Gemfile:
4
+ ## usage
10
5
 
6
+ Creating a note
11
7
  ```ruby
12
- gem 'joplin'
8
+ Joplin::token = "your joplintoken here copied from the webclippper settings"
9
+
10
+ begin
11
+ note = Joplin::Notes.new
12
+ note.title = "a new note"
13
+ note.body = "markdown content"
14
+ note.save!
15
+ rescue
16
+ puts "Joplin not running?"
17
+ end
13
18
  ```
14
19
 
15
- And then execute:
16
-
17
- $ bundle
18
-
19
- Or install it yourself as:
20
-
21
- $ gem install joplin
22
-
23
- ## Usage
24
-
25
- TODO: Write usage instructions here
26
-
27
- ## Development
28
-
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
-
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
-
33
- ## Contributing
34
-
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/danielb2/joplin.
36
-
37
- ## License
38
-
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
20
+ updating a note
21
+ ```ruby
22
+ note = Joplin::Notes.new "6e3811c7a73148a" # note id can be found in the information of any note
23
+ note.title = "a new note title"
24
+ note.save!
25
+ end
26
+ ```
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "./lib/joplin.rb"
4
+ require 'thor'
5
+
6
+
7
+ class MyCLI < Thor
8
+ class_option :token, :type => :string #, required: true
9
+ class_option :help, :type => :boolean
10
+ class_option :version, :type => :boolean
11
+ map ["-v", "--version"] => :version
12
+ map ["-h", "--help"] => :help
13
+ option :token, :required => true
14
+ option :'dry-run', desc: "dry-run", aliases: '-n'
15
+ desc :clean, "clean unused resources"
16
+ def clean
17
+ Joplin::token = options[:token]
18
+ Joplin::Resource.orphaned.map { |r|
19
+ r.delete if not options['dry-run']
20
+ puts "Deleted #{r.id}"
21
+ }
22
+ end
23
+
24
+ method_options :force => :boolean
25
+ desc "version", "get version of program"
26
+ def version
27
+ puts Joplin::VERSION
28
+ end
29
+ end
30
+
31
+ MyCLI.start(ARGV)
@@ -30,12 +30,13 @@ Gem::Specification.new do |spec|
30
30
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
31
31
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
32
  end
33
- spec.bindir = "exe"
34
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
+ spec.bindir = "bin"
34
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }.reject { |f| f =~ /(console|setup)/ }
35
35
  spec.require_paths = ["lib"]
36
36
 
37
37
  spec.add_dependency "faraday", "~> 1.0"
38
38
  spec.add_development_dependency "bundler", "~> 1.17"
39
39
  spec.add_development_dependency "rake", "~> 13.0"
40
40
  spec.add_development_dependency "rspec", "~> 3.0"
41
+ spec.add_development_dependency "thor", "~> 1.0.1"
41
42
  end
@@ -24,7 +24,50 @@ module Joplin
24
24
 
25
25
  self.uri = "http://localhost:41184"
26
26
 
27
- class Notes
27
+ class Resource
28
+ attr_reader :id
29
+
30
+ def self.all
31
+ url = "#{Joplin::uri}/resources/?token=#{Joplin::token}&fields=id"
32
+ res = Faraday.get url
33
+ parsed = JSON.parse res.body
34
+ if res.status != 200
35
+ throw Error.new(parsed['error'])
36
+ end
37
+ parsed.map do |resource|
38
+ Resource.new resource['id']
39
+ end
40
+ end
41
+
42
+ def initialize(id=nil)
43
+
44
+ raise Error.new("need id") unless id
45
+ @id = id
46
+ url = "#{Joplin::uri}/resources/#{id}?token=#{Joplin::token}&fields=mime,filename,id"
47
+ res = Faraday.get url
48
+ @parsed = JSON.parse res.body
49
+ end
50
+
51
+ def delete
52
+ url = "#{Joplin::uri}/resources/#{id}?token=#{Joplin::token}"
53
+ res = Faraday.delete url
54
+ res.status == 200
55
+ end
56
+
57
+ def to_s
58
+ """id: #{@id},
59
+ mime: #{@parsed['mime']}
60
+ filename: #{@parsed['filename']}"""
61
+ end
62
+
63
+ def self.orphaned
64
+ resources = all.map { |r| r.id }
65
+ note_resources = Note.all.map { |n| n.resources }.flatten.map { |r| r.id }
66
+ resources.difference(note_resources).map { |id| Resource.new id }
67
+ end
68
+ end
69
+
70
+ class Note
28
71
  attr_accessor :body
29
72
  attr_accessor :title
30
73
  attr_reader :id
@@ -38,6 +81,16 @@ module Joplin
38
81
  end
39
82
  end
40
83
 
84
+ def resources
85
+ url = "#{Joplin::uri}/notes/#{id}/resources?token=#{Joplin::token}&fields=id"
86
+ res = Faraday.get url
87
+ parsed = JSON.parse res.body
88
+ parsed.map do |resource_data|
89
+ id = resource_data['id']
90
+ Resource.new id
91
+ end
92
+ end
93
+
41
94
  def to_json
42
95
  {
43
96
  title: @title,
@@ -62,6 +115,15 @@ title: #{self.title}
62
115
  body: #{self.body}"""
63
116
  end
64
117
 
118
+ def self.all
119
+ url = "#{Joplin::uri}/notes/?token=#{Joplin::token}&fields=id"
120
+ res = Faraday.get url
121
+ parsed = JSON.parse res.body
122
+ parsed.map do |note|
123
+ Note.new note['id']
124
+ end
125
+ end
126
+
65
127
  private
66
128
  def parse response
67
129
  return if not response.body
@@ -1,3 +1,3 @@
1
1
  module Joplin
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joplin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bretoi
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-25 00:00:00.000000000 Z
11
+ date: 2020-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -66,10 +66,25 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.1
69
83
  description: joplin API
70
84
  email:
71
85
  - daniel@bretoi.com
72
- executables: []
86
+ executables:
87
+ - joplin
73
88
  extensions: []
74
89
  extra_rdoc_files: []
75
90
  files:
@@ -83,6 +98,7 @@ files:
83
98
  - README.md
84
99
  - Rakefile
85
100
  - bin/console
101
+ - bin/joplin
86
102
  - bin/setup
87
103
  - joplin.gemspec
88
104
  - lib/joplin.rb