mockspotify 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Spotify
2
2
  module Mock
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
5
5
  end
data/lib/mockspotify.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'ffi'
2
2
  require 'rbconfig'
3
+ require 'mockspotify/version'
3
4
 
4
5
  module Spotify
5
6
  module Mock
data/src/image.c CHANGED
@@ -19,10 +19,8 @@ mocksp_image_create(const byte image_id[20], sp_imageformat format, size_t data_
19
19
  sp_image*
20
20
  sp_image_create_from_link(sp_session *session, sp_link *l)
21
21
  {
22
- byte *real_id = l->data + strlen("spotify:image:");
23
- byte *image_id = ALLOC_N(byte, 20);
24
- memcpy(image_id, real_id, 20); // TODO: convert "deadbeef" to array of: [0xDE, 0xAD, 0xBE, 0xEF]
25
- return mocksp_image_create(image_id, SP_IMAGE_FORMAT_JPEG, 0, NULL, SP_ERROR_OK);
22
+ byte *real_id = l->data + strlen("spotify:image:");
23
+ return mocksp_image_create(hextoa(real_id, 40), SP_IMAGE_FORMAT_JPEG, 0, NULL, SP_ERROR_OK);
26
24
  }
27
25
 
28
26
  void
data/src/link.c CHANGED
@@ -29,9 +29,18 @@ sp_link_create_from_string(const char *link)
29
29
  sp_link *
30
30
  sp_link_create_from_user(sp_user *user)
31
31
  {
32
- char *link = ALLOC_N(char, 1024);
33
- sprintf(link, "spotify:user:%s", user->canonical_name);
34
- return sp_link_create_from_string(link);
32
+ sp_link *link = ALLOC(sp_link);
33
+ sprintf(link->data, "spotify:user:%s", user->canonical_name);
34
+ return link;
35
+ }
36
+
37
+ sp_link *
38
+ sp_link_create_from_image(sp_image *image)
39
+ {
40
+ sp_link *link = ALLOC(sp_link);
41
+ sprintf(link->data, "spotify:image:");
42
+ atohex(link->data + strlen("spotify:image:"), image->image_id, 40);
43
+ return link;
35
44
  }
36
45
 
37
46
  int
data/src/util.c CHANGED
@@ -1,6 +1,4 @@
1
- #include <stdlib.h>
2
- #include <string.h>
3
- #include "util.h"
1
+ #include "libmockspotify.h"
4
2
 
5
3
  void*
6
4
  xmalloc(size_t size)
@@ -9,3 +7,47 @@ xmalloc(size_t size)
9
7
  memset(ptr, 0, size);
10
8
  return ptr;
11
9
  }
10
+
11
+ int
12
+ htoi(char n)
13
+ {
14
+ if (n >= '0' && n <= '9') return n - '0';
15
+ else if (n >= 'a' && n <= 'f') return n - 'a' + 10;
16
+ else if (n >= 'A' && n <= 'F') return n - 'A' + 10;
17
+ else return 0;
18
+ }
19
+
20
+ char
21
+ itoh(int n)
22
+ {
23
+ char hex[] = { "0123456789abcdef" };
24
+ return hex[n];
25
+ }
26
+
27
+ char*
28
+ hextoa(const char *str, int size)
29
+ {
30
+ if (size % 2) return NULL;
31
+
32
+ char *result = ALLOC_N(char, size / 2);
33
+
34
+ int i;
35
+ for (i = 0; i < size; i += 2)
36
+ {
37
+ result[i/2] = (htoi(str[i]) << 4) + htoi(str[i+1]);
38
+ }
39
+
40
+ return result;
41
+ }
42
+
43
+ void
44
+ atohex(char *dst, const char *src, int size)
45
+ {
46
+ int i;
47
+ int p;
48
+ for (i = p = 0; i < size; i += 2, p = i/2)
49
+ {
50
+ dst[i] = itoh((src[p] >> 4) & 0x0F);
51
+ dst[i+1] = itoh(src[p] & 0xF);
52
+ }
53
+ }
data/src/util.h CHANGED
@@ -6,6 +6,7 @@
6
6
  #define ALLOC(type) ALLOC_N(type, 1)
7
7
  #define ALLOC_N(type, n) ((type*) xmalloc(sizeof(type) * (n)))
8
8
  void *xmalloc(size_t);
9
+ char *hextoa(const char *, int);
9
10
 
10
11
  #define STARTS_WITH(x, y) (strncmp((x), (y), strlen(y)) == 0)
11
12
 
@@ -28,4 +28,22 @@ describe Spotify::Mock do
28
28
  Spotify.artist_is_loaded(@artist).must_equal true
29
29
  end
30
30
  end
31
+
32
+ describe "hextoa" do
33
+ it "should convert a hexidecimal string properly" do
34
+ Spotify.attach_function :hextoa, [:string, :int], :string
35
+ Spotify.hextoa("3A3A", 4).must_equal "::"
36
+ end
37
+ end
38
+
39
+ describe "atohex" do
40
+ it "should convert a byte string to a hexadecimal string" do
41
+ Spotify.attach_function :atohex, [:buffer_out, :buffer_in, :int], :void
42
+
43
+ FFI::Buffer.alloc_out(8) do |b|
44
+ Spotify.atohex(b, "\x3A\x3A\x0F\xF1", b.size)
45
+ b.get_string(0, b.size).must_equal "3a3a0ff1"
46
+ end
47
+ end
48
+ end
31
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mockspotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-07-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: spotify
16
- requirement: &2152836420 !ruby/object:Gem::Requirement
16
+ requirement: &2152713800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152836420
24
+ version_requirements: *2152713800
25
25
  description:
26
26
  email: kim@burgestrand.se
27
27
  executables: []