profilepic 0.0.1 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16107e3018976b2e83a60246d8997efb87bd36870a570d384df7b12967d1fc89
4
- data.tar.gz: b0383b166aa51bed2bc09530d26b474e9927d284b466279cfc6d9d0307dfb031
3
+ metadata.gz: 9f6333d662946773d2af33fa3d776bafe894e7bf91086d2258ab10b2395d91d6
4
+ data.tar.gz: 73bcbdc5a25884aafc8f2cdbc85b4658b09e0c371cd2c8ff1d4b6664ea0da3ae
5
5
  SHA512:
6
- metadata.gz: c018701f85b09f2f8033cc1fb21ee3ddb81ec83ccd7c7c863d0b2a37ac000893c293a947341380f29ee32d5732672c38ac379eaa46fa2aa33add76596ea4775b
7
- data.tar.gz: 37311c4b6de44151128048d398f932dc57bc4b13a5fdc288753b027d8bc32b9a666be69fbfcc9e63dffe36854cd659d2d03b787bafd741de03ba748ed6454832
6
+ metadata.gz: 0236e6a9e43d77384c1beb48dcd0e2e107c110026e56ef8fa45862c4d035451afd07a6194c4d9efebb69a5995be6026998d8d51f521183c893cd95777a7bf806
7
+ data.tar.gz: 4324b06b0fffaab639a3e5a580b21ecd40ee9067c99b097536a912a6e7350baf3b5a6b2478c5a0a50b9a998a5200024ec7f7f8af82d459cc73618d0497a04744
data/Manifest.txt CHANGED
@@ -2,5 +2,11 @@ CHANGELOG.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
+ bin/profilepic
5
6
  lib/profilepic.rb
7
+ lib/profilepic/public/style.css
8
+ lib/profilepic/service.rb
6
9
  lib/profilepic/version.rb
10
+ lib/profilepic/views/index.erb
11
+ lib/profilepic/views/layout.erb
12
+ lib/profilepic/views/shared/_version.erb
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ Hoe.spec 'profilepic' do
6
6
 
7
7
  self.version = Profilepic::VERSION
8
8
 
9
- self.summary = "profilepic - profile pic(tures) as a service"
9
+ self.summary = "profilepic - profile pic(ture) as a service"
10
10
  self.description = summary
11
11
 
12
12
  self.urls = { home: 'https://github.com/profilepic/profilepic' }
@@ -20,6 +20,8 @@ Hoe.spec 'profilepic' do
20
20
 
21
21
  self.extra_deps = [
22
22
  ['originals'],
23
+ ['sinatra'],
24
+ ['webrick'],
23
25
  ]
24
26
 
25
27
  self.licenses = ['Public Domain']
data/bin/profilepic ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ###################
4
+ # == DEV TIPS:
5
+ #
6
+ # For local testing run like:
7
+ #
8
+ # ruby -Ilib bin/profilepic
9
+ #
10
+ # Set the executable bit in Linux. Example:
11
+ #
12
+ # % chmod a+x bin/profilepic
13
+ #
14
+
15
+ require 'profilepic'
16
+
17
+
18
+ Profilepic.main
@@ -0,0 +1,28 @@
1
+ body {
2
+ font-family: sans-serif;
3
+ color: #333333;
4
+ }
5
+
6
+ a, a:visited {
7
+ text-decoration: none;
8
+ color: maroon;
9
+ }
10
+
11
+ a:hover {
12
+ text-decoration: underline;
13
+ color: maroon;
14
+ }
15
+
16
+
17
+
18
+
19
+ /** version block **********/
20
+
21
+ .version {
22
+ text-align: center;
23
+ margin-top: 10px;
24
+ color: grey; }
25
+ .version a, .version span {
26
+ font-size: 12px;
27
+ color: grey; }
28
+
@@ -0,0 +1,58 @@
1
+ class ProfilepicService < Sinatra::Base
2
+
3
+ get '/' do
4
+ erb :index
5
+ end
6
+
7
+
8
+ get '/generate' do
9
+ type = params[:t] || "punk"
10
+ attributes = params[:attributes] || ""
11
+ zoom = params[:z] || "1"
12
+ background = params[:bg] || "none"
13
+
14
+ txt= <<TXT
15
+ image generation (string) params:
16
+ type: >#{type}< - #{type.class.name}
17
+ attributes: >#{attributes}< - #{attributes.class.name}
18
+ zoom: >#{zoom}< - #{zoom.class.name}
19
+ background >#{background}< - #{background.class.name}
20
+ TXT
21
+
22
+ # convert attributes to array
23
+ ## allow various separators
24
+ attributes = attributes.split( %r{[,;|+/]+} )
25
+ attributes = attributes.map { |attr| attr.strip }
26
+ attributes = attributes.select { |attr| !attr.empty?} ## remove empty strings (if any)
27
+
28
+ type = type.downcase.strip
29
+ zoom = zoom.strip.to_i( 10 )
30
+ background = background.downcase.strip
31
+
32
+ txt += <<TXT
33
+ resulting in:
34
+ type: >#{type}< - #{type.class.name}
35
+ #{attributes.size} attribute(s):
36
+ #{attributes.join(', ')}
37
+ zoom @ #{zoom}x - #{zoom.class.name}
38
+ background >#{background}< - #{background.class.name}
39
+ TXT
40
+
41
+ puts "generate request:"
42
+ puts txt
43
+
44
+ img = Original::Image.fabricate( type, *attributes )
45
+ img = img.background( background ) if background != 'none'
46
+ img = img.zoom( zoom ) if [2,3,4,5,6,7,8,9,10,20].include?( zoom )
47
+
48
+ # check - add a debug/save option - why? why not?
49
+ # img.save( "./tmp/profilepic-#{Time.now.to_i}.png" )
50
+
51
+ headers( 'Content-Type' => "image/png" )
52
+
53
+ blob = img.image.to_blob
54
+ blob
55
+ end
56
+ end
57
+
58
+
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Profilepic
4
4
  MAJOR = 0
5
- MINOR = 0
6
- PATCH = 1
5
+ MINOR = 1
6
+ PATCH = 0
7
7
  VERSION = [MAJOR,MINOR,PATCH].join('.')
8
8
 
9
9
  def self.version
@@ -0,0 +1,126 @@
1
+
2
+
3
+ <h1>Profile Pic(ture) As Service</h1>
4
+
5
+ <p>Yes, you can!
6
+ Generate your own originals that you
7
+ own 100% forever.
8
+ </p>
9
+
10
+
11
+
12
+ <form action="/generate" method="get" id="form1">
13
+
14
+ <fieldset>
15
+ <legend>Select an image generator:</legend>
16
+
17
+ <div>
18
+ <input type="radio" id="t1" name="t" value="punk"
19
+ checked>
20
+ <label for="t1">Punk (24×24)</label>
21
+ </div>
22
+
23
+ <div>
24
+ <input type="radio" id="t2" name="t" value="phunk">
25
+ <label for="t2">Phunk (24×24)</label>
26
+ </div>
27
+
28
+ <div>
29
+ <input type="radio" id="t3" name="t" value="marilyn">
30
+ <label for="t3">Marilyn (24×24)</label>
31
+ </div>
32
+
33
+ <div>
34
+ <input type="radio" id="t4" name="t" value="marc">
35
+ <label for="t4">Marc (24×24)</label>
36
+ </div>
37
+
38
+ <div>
39
+ <input type="radio" id="t5" name="t" value="saudi">
40
+ <label for="t5">Saudi Sheik (24×24)</label>
41
+ </div>
42
+
43
+ <div>
44
+ <input type="radio" id="t6" name="t" value="yeoldepunk">
45
+ <label for="t6">Matt &amp; John's® Ye Olde' Punk V1/V2 (Anno 2017) (24×24)</label>
46
+ </div>
47
+ </fieldset>
48
+
49
+
50
+ <fieldset>
51
+ <legend>Type attribute description / specification:</legend>
52
+
53
+ <div>
54
+ <input type="text" id="attributes" name="attributes"
55
+ minlength="0" maxlength="200" size="80"
56
+ style="font-size: 200%;"
57
+ placeholder="Attribute 1, Attribute 2, Attribute 3, ...">
58
+
59
+ <p>
60
+ Examples:
61
+ </p>
62
+ <ul>
63
+ <li>Female 2, Wild Blonde, Earring, Mole, Big Shades</li>
64
+ <li>Zombie, Crazy Hair, 3D Glasses</li>
65
+ <li>Alien, Headband</li>
66
+ </ul>
67
+
68
+ </div>
69
+ </fieldset>
70
+
71
+ <div>
72
+ <button type="submit" form="form1" value="Submit"
73
+ style="font-size: 400%; color: white; background-color: blue;">Generate Profile Pic(ture) in .PNG Format</button>
74
+ </div>
75
+
76
+
77
+ <p>More options:</p>
78
+
79
+ <fieldset>
80
+ <legend>Select a zoom size:</legend>
81
+
82
+ <div>
83
+ <input type="radio" id="z1" name="z" value="1"
84
+ checked>
85
+ <label for="z1">1X</label>
86
+ </div>
87
+
88
+ <div>
89
+ <input type="radio" id="z2" name="z" value="2">
90
+ <label for="z2">2X</label>
91
+ </div>
92
+
93
+ <div>
94
+ <input type="radio" id="z4" name="z" value="4">
95
+ <label for="z4">4X</label>
96
+ </div>
97
+
98
+ <div>
99
+ <input type="radio" id="z8" name="z" value="8">
100
+ <label for="z8">8X</label>
101
+ </div>
102
+ </fieldset>
103
+
104
+
105
+ <fieldset>
106
+ <legend>Select a background:</legend>
107
+
108
+ <div>
109
+ <input type="radio" id="bg1" name="bg" value="none"
110
+ checked>
111
+ <label for="bg1">None (Transparent)</label>
112
+ </div>
113
+
114
+ <div>
115
+ <input type="radio" id="bg2" name="bg" value="ukraine">
116
+ <label for="bg2">We Stand With Ukraine</label>
117
+ </div>
118
+
119
+ <div>
120
+ <input type="radio" id="bg3" name="bg" value="rainbow">
121
+ <label for="bg3">Pride / Rainbow</label>
122
+ </div>
123
+ </fieldset>
124
+
125
+
126
+ </form>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset='utf-8'>
5
+
6
+ <title>Profile Pic(ture) As A Service</title>
7
+
8
+ <link href="<%= url('/style.css') %>" rel='stylesheet'>
9
+ </head>
10
+ <body>
11
+
12
+ <%= yield %>
13
+
14
+ <%= erb :'shared/_version' %>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,5 @@
1
+ <div class='version'>
2
+ <a href="https://github.com/profilepic/profilepic">profilepic/<%= Profilepic::VERSION %></a> -
3
+ <span>ruby/<%= "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}/#{RUBY_PLATFORM})" %> on</span>
4
+ <span>sinatra/<%= Sinatra::VERSION %> (<%= ENV['RACK_ENV'] %>)</span>
5
+ </div>
data/lib/profilepic.rb CHANGED
@@ -1,17 +1,46 @@
1
1
  ## 3rd party libs
2
2
  require 'originals'
3
3
 
4
+ ## pull-in web service support
5
+ require 'sinatra/base' ## note: using the "modular" style
6
+ require 'webrick'
7
+
4
8
 
5
9
  ## our own code
6
10
  require 'profilepic/version' # note: let version always go first
11
+ require 'profilepic/service'
12
+
13
+
14
+
15
+ module Profilepic
16
+ def self.main
17
+ puts 'hello from main'
7
18
 
19
+ #####
20
+ # fix/todo:
21
+ ## use differnt port ??
22
+ ##
23
+ ## use --local for host e.g. 127.0.0.1 insteaod of 0.0.0.0 ???
8
24
 
25
+ # puts 'before Puma.run app'
26
+ # require 'rack/handler/puma'
27
+ # Rack::Handler::Puma.run ProfilepicService, :Port => 3000, :Host => '0.0.0.0'
28
+ # puts 'after Puma.run app'
29
+
30
+ # use webrick for now - why? why not?
31
+ puts 'before WEBrick.run service'
32
+ Rack::Handler::WEBrick.run ProfilepicService, :Port => 3000, :Host => '127.0.0.1'
33
+ puts 'after WEBrick.run service'
34
+
35
+ puts 'bye'
36
+ end
37
+ end
9
38
 
10
39
 
11
40
  ####
12
41
  # convenience aliases / shortcuts / alternate spellings
13
- ProfilePic = Profilepic
14
-
42
+ ProfilePic = Profilepic
43
+ ProfilePicService = ProfilepicService
15
44
 
16
45
 
17
46
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: profilepic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: webrick
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rdoc
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -58,9 +86,10 @@ dependencies:
58
86
  - - "~>"
59
87
  - !ruby/object:Gem::Version
60
88
  version: '3.23'
61
- description: profilepic - profile pic(tures) as a service
89
+ description: profilepic - profile pic(ture) as a service
62
90
  email: wwwmake@googlegroups.com
63
- executables: []
91
+ executables:
92
+ - profilepic
64
93
  extensions: []
65
94
  extra_rdoc_files:
66
95
  - CHANGELOG.md
@@ -71,8 +100,14 @@ files:
71
100
  - Manifest.txt
72
101
  - README.md
73
102
  - Rakefile
103
+ - bin/profilepic
74
104
  - lib/profilepic.rb
105
+ - lib/profilepic/public/style.css
106
+ - lib/profilepic/service.rb
75
107
  - lib/profilepic/version.rb
108
+ - lib/profilepic/views/index.erb
109
+ - lib/profilepic/views/layout.erb
110
+ - lib/profilepic/views/shared/_version.erb
76
111
  homepage: https://github.com/profilepic/profilepic
77
112
  licenses:
78
113
  - Public Domain
@@ -97,5 +132,5 @@ requirements: []
97
132
  rubygems_version: 3.3.7
98
133
  signing_key:
99
134
  specification_version: 4
100
- summary: profilepic - profile pic(tures) as a service
135
+ summary: profilepic - profile pic(ture) as a service
101
136
  test_files: []