kittyverse 0.4.1 → 0.4.2

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: 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