forked from NyaMisty/AltSign-Linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDevice.cpp
More file actions
95 lines (75 loc) · 1.9 KB
/
Copy pathDevice.cpp
File metadata and controls
95 lines (75 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//
// Device.cpp
// AltSign-Windows
//
// Created by Riley Testut on 8/10/19.
// Copyright © 2019 Riley Testut. All rights reserved.
//
#include "Device.hpp"
#include "Error.hpp"
#include <algorithm>
Device::Device()
{
}
Device::~Device()
{
}
Device::Device(std::string name, std::string identifier, Device::Type type) : _name(name), _identifier(identifier), _type(type)
{
}
Device::Device(plist_t plist)
{
auto nameNode = plist_dict_get_item(plist, "name");
auto identifierNode = plist_dict_get_item(plist, "deviceNumber");
auto deviceTypeNode = plist_dict_get_item(plist, "deviceClass");
if (nameNode == nullptr || identifierNode == nullptr)
{
throw APIError(APIErrorCode::InvalidResponse);
}
char *name = nullptr;
plist_get_string_val(nameNode, &name);
char *identifier = nullptr;
plist_get_string_val(identifierNode, &identifier);
Device::Type deviceType = Device::Type::None;
if (deviceTypeNode != nullptr)
{
char* rawDeviceClass = nullptr;
plist_get_string_val(deviceTypeNode, &rawDeviceClass);
std::string deviceClass = rawDeviceClass;
std::transform(deviceClass.begin(), deviceClass.end(), deviceClass.begin(), ::tolower);
if (deviceClass == "iphone" || deviceClass == "ipod")
{
deviceType = Device::Type::iPhone;
}
else if (deviceClass == "ipad")
{
deviceType = Device::Type::iPad;
}
else if (deviceClass == "tvos")
{
deviceType = Device::Type::AppleTV;
}
}
_name = name;
_identifier = identifier;
_type = deviceType;
}
#pragma mark - Description -
std::ostream& operator<<(std::ostream& os, const Device& device)
{
os << "Name: " << device.name() << " UDID: " << device.identifier();
return os;
}
#pragma mark - Getters -
std::string Device::name() const
{
return _name;
}
std::string Device::identifier() const
{
return _identifier;
}
Device::Type Device::type() const
{
return _type;
}