kittyverse 0.4.1 → 0.4.2

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
  SHA1:
3
- metadata.gz: 4216c923457a71aed326af9ffa9146848c4866ff
4
- data.tar.gz: 4b2063cee7ba1b685581bbe1b915afff47701d5b
3
+ metadata.gz: 2698032788d8346a7291346483e585502611d69c
4
+ data.tar.gz: f40553268c0458012235f9fbd7aa9a1eed690ec5
5
5
  SHA512:
6
- metadata.gz: abe587be776050fb01626c8cc4650c069e75c08201f31a847b2cd7e6f0b9bc107e2c1aab09e3e52e0b3d7fb3d1aa459e7280cdeaa7ddb83bb2ea3d4c013daf15
7
- data.tar.gz: 8e7a2babf9c0110a75135e41c34f0572d6a4c77b0e64085e64bb309f6a5b8ef7b1f39133e20c0361e2eea3b0a31f7fbe21f452c70375593a78b23ea8b4a4de8f
6
+ metadata.gz: bf8ab2090846cafbb6c9673067247455c4607cad4a9fd89f852967ba70ad341661031e1b3d7b511ea2324e1e599f629074cfc216b397d0a60bc631f00f1e44ce
7
+ data.tar.gz: 53ec77865e458b19a4261b15bdd3fdabee440a171133cc3fe077ca71037aac79f76231c096be2c0a6178d484430dab2b0fbfd194e57576747808039ab709255e
data/Manifest.txt CHANGED
@@ -4,7 +4,10 @@ Manifest.txt
4
4
  README.md
5
5
  Rakefile
6
6
  lib/kittyverse.rb
7
+ lib/kittyverse/api/client.rb
8
+ lib/kittyverse/api/versions.rb
7
9
  lib/kittyverse/cattributes.rb
10
+ lib/kittyverse/config/colors.rb
8
11
  lib/kittyverse/config/fancies.rb
9
12
  lib/kittyverse/config/purrstiges.rb
10
13
  lib/kittyverse/config/traits.rb
data/lib/kittyverse.rb CHANGED
@@ -3,6 +3,11 @@
3
3
  ## std libs
4
4
  require 'date'
5
5
  require 'json'
6
+ require "pp"
7
+ require "uri"
8
+ require "net/http"
9
+ require "net/https"
10
+
6
11
 
7
12
 
8
13
  ## 3rd party libs
@@ -16,6 +21,7 @@ require 'kittyverse/config/traits'
16
21
  require 'kittyverse/config/traits_timeline'
17
22
  require 'kittyverse/config/fancies'
18
23
  require 'kittyverse/config/purrstiges'
24
+ require 'kittyverse/config/colors'
19
25
 
20
26
 
21
27
  require 'kittyverse/mewtations'
@@ -28,6 +34,10 @@ require 'kittyverse/traits'
28
34
  require 'kittyverse/cattributes'
29
35
  require 'kittyverse/fancies'
30
36
 
37
+ ## api support
38
+ require 'kittyverse/api/client'
39
+ require 'kittyverse/api/versions'
40
+
31
41
 
32
42
 
33
43
  # say hello
@@ -0,0 +1,72 @@
1
+ # encoding: utf-8
2
+
3
+ module Kitties
4
+
5
+
6
+ class Client
7
+
8
+ ##
9
+ ## todo: add (optional) close with @http.close - why? why not?
10
+
11
+
12
+ def initialize( base_uri:, token: nil )
13
+ uri = URI.parse( base_uri )
14
+ @http = Net::HTTP.new( uri.host, uri.port )
15
+ if uri.instance_of? URI::HTTPS
16
+ @http.use_ssl = true
17
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
18
+ end
19
+
20
+ @base_request_uri = uri.request_uri ## e.g. save /v1 etc.
21
+ ## puts "base_request_uri: >#{@base_request_uri}<"
22
+
23
+ @token = token
24
+ end # method initialize
25
+
26
+ def get( service )
27
+ puts "GET #{service}"
28
+
29
+ request_uri = if @base_request_uri == "/"
30
+ service
31
+ else
32
+ "#{@base_request_uri}#{service}" ## e.g. add /v1 etc.
33
+ end
34
+
35
+ headers = if @token
36
+ { "x-api-token" => @token }
37
+ else
38
+ {}
39
+ end
40
+
41
+ req = Net::HTTP::Get.new( request_uri, headers )
42
+
43
+ res = @http.request(req)
44
+
45
+ ## todo/fix: add check for res.code == "200"
46
+ ## throw exception of fail
47
+
48
+
49
+ if Kitties.debug?
50
+ # Iterate all response headers.
51
+ res.each_header do |key, value|
52
+ p "#{key} => #{value}"
53
+ end
54
+ # => "content-type => application/json; charset=utf-8"
55
+ # => "x-ratelimit-limit => 20"
56
+ # => "x-ratelimit-remaining => 19"
57
+ # => "x-ratelimit-reset => 1558079593"
58
+ # ...
59
+ end
60
+
61
+ body = res.read_body
62
+ ## pp body
63
+
64
+ json = JSON.parse( body ) ## use just body (any difference?) - why? why not?
65
+ ## pp json
66
+ json
67
+ end # methdo get
68
+
69
+ end ## class Client
70
+
71
+
72
+ end # module Kitties
@@ -0,0 +1,76 @@
1
+ # encoding: utf-8
2
+
3
+ module Kitties
4
+
5
+ class Configuration
6
+ attr_accessor :token
7
+ attr_accessor :debug
8
+
9
+ def initialize
10
+ # try default setup via ENV variables
11
+ @token = ENV[ 'KITTIES_TOKEN' ]
12
+ @debug = false
13
+ end
14
+ end
15
+
16
+ ## lets you use
17
+ ## Kitties.configure do |config|
18
+ ## config.token = 'secret'
19
+ ## end
20
+ def self.configuration
21
+ @configuration ||= Configuration.new
22
+ end
23
+
24
+ def self.configure
25
+ yield( configuration )
26
+ end
27
+
28
+ ### debug convenience helpers
29
+ def self.debug?() configuration.debug; end
30
+ def self.debug=(value) configuration.debug = value; end
31
+
32
+
33
+
34
+
35
+ module V0
36
+ class Client < ::Kitties::Client
37
+ def initialize
38
+ super( base_uri: "https://api.cryptokitties.co" )
39
+ end
40
+
41
+ def get_cattributes() get('/cattributes'); end
42
+ def get_kitty( id ) get("/kitties/#{id}"); end ## use get_kitty_by_id - why? why not?
43
+ end # class Client
44
+ end # module V0
45
+
46
+
47
+
48
+
49
+ module V1
50
+ ###
51
+ ## see https://docs.api.cryptokitties.co
52
+
53
+ class Client < ::Kitties::Client
54
+ def initialize
55
+ super( base_uri: "https://public.api.cryptokitties.co/v1",
56
+ token: Kitties.configuration.token )
57
+ end
58
+
59
+ def get_cattributes() get('/cattributes'); end
60
+ def get_kitty( id ) get("/kitties/#{id}"); end ## use get_kitty_by_id - why? why not?
61
+ def get_colors_body() get('/colors/body'); end
62
+ def get_colors_eyes() get('/colors/eyes'); end
63
+ def get_colors_secondary() get('/colors/secondary'); end
64
+ def get_colors_tertiary() get('/colors/tertiary'); end
65
+
66
+ end # class Client
67
+ end # module V1
68
+
69
+
70
+ CLIENT_V0 = V0::Client.new
71
+ CLIENT_V1 = V1::Client.new
72
+
73
+ def self.v0() CLIENT_V0; end
74
+ def self.v1() CLIENT_V1; end
75
+
76
+ end # module Kitties
@@ -0,0 +1,132 @@
1
+ # encoding: utf-8
2
+
3
+ COLORS = {
4
+ ## 31 colors body
5
+ meowgarine: "#fcfc95",
6
+ cornflower: "#7592fc",
7
+ icicle: "#c5e2ff",
8
+ hotcocoa: "#5e4a47",
9
+ firstblush: "#fcd0f8",
10
+ tundra: "#dbccbf",
11
+ glacier: "#ccffff",
12
+ hyacinth: "#a45de2",
13
+ shamrock: "#50c878",
14
+ shadowgrey: "#b1b1be",
15
+ salmon: "#f4a792",
16
+ orangesoda: "#f7bc56",
17
+ cottoncandy: "#ecd1eb",
18
+ mauveover: "#ded0ee",
19
+ aquamarine: "#add5d2",
20
+ nachocheez: "#fcda86",
21
+ harbourfog: "#afb4d5",
22
+ cinderella: "#5ab0f1",
23
+ greymatter: "#d1dadf",
24
+ brownies: "#b78662",
25
+ dragonfruit: "#ec79f2",
26
+ hintomint: "#d0ead2",
27
+ bananacream: "#f8f8e0",
28
+ cloudwhite: "#ffffff",
29
+ oldlace: "#ffebe9",
30
+ koala: "#85828a",
31
+ lavender: "#bc99ff",
32
+ redvelvet: "#f77272",
33
+ verdigris: "#73ffc3",
34
+ onyx: "#42414c",
35
+ martian: "#a4ff6f",
36
+ ## 31 colors eyes
37
+ olive: "#729100",
38
+ pinefresh: "#177a25",
39
+ oasis: "#ccffef",
40
+ dioscuri: "#0ba09c",
41
+ isotope: "#e4ff73",
42
+ bridesmaid: "#ffc2df",
43
+ downbythebay: "#83b293",
44
+ gemini: "#ffd150",
45
+ kaleidoscope: "#bcba5e",
46
+ thundergrey: "#828282",
47
+ gold: "#fcdf35",
48
+ topaz: "#0ba09c",
49
+ mintgreen: "#43edac",
50
+ sizzurp: "#7c40ff",
51
+ chestnut: "#a56429",
52
+ strawberry: "#ef4b62",
53
+ sapphire: "#4c7aef",
54
+ forgetmenot: "#4eb4f9",
55
+ dahlia: "#b8bdff",
56
+ coralsunrise: "#ff9088",
57
+ doridnudibranch: "#fa9fff",
58
+ parakeet: "#49b749",
59
+ cyan: "#45f0f4",
60
+ pumpkin: "#ffa039",
61
+ limegreen: "#aef72f",
62
+ bubblegum: "#ef52d1",
63
+ twilightsparkle: "#ba8aff",
64
+ palejade: "#c3d8cf",
65
+ eclipse: "#484c5b",
66
+ babypuke: "#bcba5e",
67
+ autumnmoon: "#ffe8bb",
68
+ ## 31 colors secondary
69
+ cyborg: "#959cae",
70
+ ooze: "#daea31",
71
+ peppermint: "#00a86b",
72
+ inflatablepool: "#4fb9c5",
73
+ prairierose: "#e0115f",
74
+ springcrocus: "#ab7fef",
75
+ egyptiankohl: "#4a4855",
76
+ poisonberry: "#773c5f",
77
+ lilac: "#e5e5f9",
78
+ apricot: "#f4a45b",
79
+ royalpurple: "#cf5be8",
80
+ padparadscha: "#ffd5c7",
81
+ swampgreen: "#44e192",
82
+ violet: "#765be8",
83
+ scarlet: "#ea5f5a",
84
+ barkbrown: "#886662",
85
+ coffee: "#756650",
86
+ lemonade: "#ffef85",
87
+ chocolate: "#c47e33",
88
+ butterscotch: "#ffce6c",
89
+ safetyvest: "#b0f852",
90
+ turtleback: "#387573",
91
+ rosequartz: "#ffaefb",
92
+ wolfgrey: "#737184",
93
+ cerulian: "#385877",
94
+ skyblue: "#83d5ff",
95
+ garnet: "#f4679a",
96
+ universe: "#494981",
97
+ royalblue: "#5b6ee8",
98
+ mertail: "#36f2bc",
99
+ pearl: "#fff8fa",
100
+ ## 31 colors tertiary
101
+ hanauma: "#7accb5",
102
+ belleblue: "#afd0f7",
103
+ peach: "#f9cfad",
104
+ granitegrey: "#b1aeb9",
105
+ kittencream: "#f7ebda",
106
+ emeraldgreen: "#8be179",
107
+ bloodred: "#ff7a7a",
108
+ daffodil: "#fff09f",
109
+ sandalwood: "#b8916c",
110
+ icy: "#eef8f8",
111
+ flamingo: "#ec87ba",
112
+ seafoam: "#9eeec5",
113
+ azaleablush: "#ffccd8",
114
+ morningglory: "#887cff",
115
+ purplehaze: "#dad6e1",
116
+ missmuffett: "#f4b3f0",
117
+ summerbonnet: "#cbb0ff",
118
+ mallowflower: "#c170b1",
119
+ fallspice: "#ff9331",
120
+ dreamboat: "#fd6cd5",
121
+ periwinkle: "#cacaff",
122
+ frosting: "#ffdce6",
123
+ patrickstarfish: "#ffad97",
124
+ mintmacaron: "#b0f1f4",
125
+ shale: "#585666",
126
+ cashewmilk: "#f9efef",
127
+ buttercup: "#f4e65d",
128
+ cobalt: "#5262db",
129
+ sully: "#70f9f9",
130
+ kalahari: "#ffcf8a",
131
+ atlantis: "#2a7f96"
132
+ }
@@ -139,15 +139,25 @@ class TraitType
139
139
  end
140
140
  end
141
141
 
142
- def self.[]( key )
143
- ## check for codes e.g. FU, PA, ... (or fu, pa,...).
144
- if key.size == 2 && key =~ /^[A-Za-z]{2}$/
145
- TraitType.find_by_code( key )
142
+ def self.[]( key_or_index_or_offset, length=nil )
143
+ if length ## returns a slice of trait types
144
+ offset = key_or_index_or_offset
145
+ @@trait_types_by_key.values[offset, length]
146
146
  else
147
- if key.is_a? Symbol ## e.g. :body, :pattern, etc.
148
- TraitType.find_by_key( key )
149
- else ## assume string
150
- TraitType.find_by_name( key )
147
+ if key_or_index_or_offset.is_a? Integer
148
+ index = key_or_index_or_offset
149
+ @@trait_types_by_key.values[index]
150
+ else
151
+ key = key_or_index_or_offset
152
+ if key.size == 2 && key =~ /^[A-Za-z]{2}$/ ## check for codes e.g. FU, PA, ... (or fu, pa,...)
153
+ TraitType.find_by_code( key )
154
+ else
155
+ if key.is_a? Symbol ## e.g. :body, :pattern, etc.
156
+ TraitType.find_by_key( key )
157
+ else ## assume string
158
+ TraitType.find_by_name( key )
159
+ end
160
+ end
151
161
  end
152
162
  end
153
163
  end
@@ -166,7 +176,6 @@ class TraitType
166
176
 
167
177
  def self.size() @@trait_types_by_key.size; end ## todo: add length alias too? why? why not?
168
178
 
169
-
170
179
  attr_accessor :key,
171
180
  :name,
172
181
  :code,
@@ -5,7 +5,7 @@ class Kittyverse
5
5
 
6
6
  MAJOR = 0
7
7
  MINOR = 4
8
- PATCH = 1
8
+ PATCH = 2
9
9
  VERSION = [MAJOR,MINOR,PATCH].join('.')
10
10
 
11
11
  def self.version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kittyverse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-14 00:00:00.000000000 Z
11
+ date: 2019-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base32-alphabets
@@ -69,7 +69,10 @@ files:
69
69
  - README.md
70
70
  - Rakefile
71
71
  - lib/kittyverse.rb
72
+ - lib/kittyverse/api/client.rb
73
+ - lib/kittyverse/api/versions.rb
72
74
  - lib/kittyverse/cattributes.rb
75
+ - lib/kittyverse/config/colors.rb
73
76
  - lib/kittyverse/config/fancies.rb
74
77
  - lib/kittyverse/config/purrstiges.rb
75
78
  - lib/kittyverse/config/traits.rb