Discogs API v2.0 的 Objective-C 接口。
该实现基于 RestKit v0.27.0。
pod 'DiscogsAPI'
如果您想尝试它,只需运行
pod try DiscogsAPI
或者克隆仓库,然后在 Example 目录中运行 pod install
。
配置您的项目 .plist 文件
右击您的 .plist 文件,选择 "将文件作为源代码打开"。将 XML 片段复制并粘贴到文件的主体中(<dict>...</dict>
)。您可以使用键/密钥对或您自己的个人访问令牌(您可以在您的 个人设置 中创建它们)。
将 DISCOGS_APP_CONSUMER_KEY 和 DISCOGS_APP_CONSUMER_SECRET 替换为您 Discogs 应用消费者的密钥和密钥。
<key>DiscogsConsumerKey</key>
<string>DISCOGS_APP_CONSUMER_Key</string>
<key>DiscogsConsumerSecret</key>
<string>DISCOGS_APP_CONSUMER_SECRET</string>
将 DISCOGS_PERSONAL_ACCESS_TOKEN 替换为您个人访问令牌。
<key>DiscogsAccessToken</key>
<string>DISCOGS_PERSONAL_ACCESS_TOKEN</string>
Discogs 支持两种认证方法:Discogs 认证和 OAuth。有关更多详细信息,请参阅 文档。
键/密钥或您的个人访问令牌将自动从您的项目配置中检索出来并在您的请求头中使用。您不需要做任何事情。
OAuth 流程由 'authentication' 端点全部处理。您只需显示 'authView' 视图,让用户输入其凭据并授权应用程序。令牌将自动存储在密钥链中。
[Discogs.api.authentication authenticateWithPreparedAuthorizationViewHandler:^(UIView *authView) {
// Show the authView
} success:^{
NSLog(@"The user has been successfully authentified");
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
以下示例展示了如何通过API访问Discogs数据库对象。
[Discogs.api.database getRelease:@249504 success:^(DGRelease *release) {
NSLog(@"Release: %@", release);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
[Discogs.api.database getMaster:@1000 success:^(DGMaster *master) {
NSLog(@"Master: %@", master);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
DGMasterVersionsRequest *request = [DGMasterVersionsRequest new];
request.masterID = @1000;
request.pagination.page = @3;
request.pagination.perPage = @25;
[Discogs.api.database getMasterVersion:request success:^(DGMasterVersionsResponse *response) {
NSLog(@"Versions: %@", response.versions);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
[Discogs.api.database getArtist:@108713 success:^(DGArtist *artist) {
NSLog(@"Artist: %@", artist);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
DGArtistReleasesRequest *request = [DGArtistReleasesRequest new];
request.artistID = @108713;
request.pagination.page = @3;
request.pagination.perPage = @25;
[Discogs.api.database getArtistReleases:request success:^(DGArtistReleasesResponse *response) {
NSLog(@"Releases: %@", response.releases);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
[Discogs.api.database getLabel:@1 success:^(DGLabel *label) {
NSLog(@"Label: %@", label);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
DGLabelReleasesRequest *request = [DGLabelReleasesRequest new];
request.labelID = @1;
request.pagination.page = @3;
request.pagination.perPage = @25;
[Discogs.api.database getLabelReleases:request success:^(DGLabelReleasesResponse *response) {
NSLog(@"Releases: %@", response.releases);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
DGSearchRequest *request = [DGSearchRequest new];
request.query = @"Cool band";
request.type = @"artist";
request.pagination.perPage = @25;
[Discogs.api.database searchFor:request success:^(DGSearchResponse *response) {
NSLog(@"Results: %@", response.results);
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
从分页响应中,通过DGPaginated
协议可以轻松加载下一页。
[response loadNextPageWithSuccess:^{
// Update UI
} failure:^(NSError * _Nullable error) {
NSLog(@"Error : %@", error);
}];
详细的用法说明可在Wiki中找到。
文档可通过CocoaDocs获得。
DiscogsAPI受MIT许可证保护。更多信息请参阅LICENSE。