Compare commits

..

1 Commits

Author SHA1 Message Date
Anton b0636ee934 Authorization validation cancellation fix 2016-09-29 18:32:06 +03:00
276 changed files with 4941 additions and 3950 deletions

2
.gitignore vendored
View File

@ -30,5 +30,3 @@ Pods
#AppCode
*/.idea/*
.idea/*
SDKBuildSteps.info

View File

@ -1,5 +0,0 @@
language: objective-c
osx_image: xcode7.3
xcode_project: VK-ios-sdk.xcodeproj
xcode_scheme: VKSdk
xcode_sdk: iphonesimulator9.3

2
LICENSE Executable file → Normal file
View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2015 VK.com
Copyright (c) 2014 VK.com
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

328
README.md Executable file → Normal file
View File

@ -1,24 +1,28 @@
vk-ios-sdk
==========
Library for working with VK API, authorizing through VK app, using VK API methods. Supported iOS from 6.0
Library for working with VK API, authorization through VK app, using VK functions. Supported iOS from 6.0
Prepare for Using VK SDK
----------
To use VK SDK primarily you need to create a new Standalone VK application [here](https://vk.com/editapp?act=create). Choose a title and confirm the action via SMS and you will be redirected to the application settings page.
You will need your APP_ID to use the library. Fill in the App Bundle for iOS field.
To use VK SDK primarily you need to create a new VK application [here](https://vk.com/editapp?act=create) by choosing the Standalone application type. Choose a title and confirm the action via SMS and you will be redirected to the application settings page.
You will require your Application ID (referenced as API_ID in the documentation). Fill in the App Bundle for iOS field.
Setup URL schema of Your Application
Setup URL-schema of Your Application
----------
To authorize via VK App you need to setup a url-schema for your application, which looks like vk+APP_ID (e.g. **vk1234567**).
To use authorization via VK App you need to setup a url-schema of your application.
[How to implement your own URL Scheme here](https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW10), Also there is [nice Twitter tutorial](https://dev.twitter.com/cards/mobile/url-schemes)
<b>Xcode 5 and above:</b>
Open your application settings then select the Info tab. In the URL Types section click the plus sign. Enter vk+APP_ID (e.g. **vk1234567**) to the Identifier and URL Schemes fields.
<b>Xcode 4:</b>
Open your Info.plist then add a new row URL Types. Set the URL identifier to vk+APP_ID
Configuring application for iOS 9
----------
iOS 9 changes the way of applications security and way of using unsecured connections. Basically, you don't have to change anything in transport security settings. But, if you're planing to use VK API with `nohttps` scope, you have to change security settings that way (in your `Info.plist` file):
iOS 9 changes the way of applications security and way of using unsecured connections. Basically, you don't have to change anything in transport security settings. But, if you're planing to use VK API with "nohttps" scope, you have to change security settings that way (in your Info.plist file):
```
<key>NSAppTransportSecurity</key>
<dict>
@ -37,256 +41,185 @@ iOS 9 changes the way of applications security and way of using unsecured connec
</dict>
```
We **don't** recommend using `nohttps` scope.
We're don't recommend you to use "nohttps" scope.
Also, for iOS 9 you have to add app schemas your app will use and check for `canOpenURL:`.
Add this to your `Info.plist`:
Also, for iOS 9 you have to enumerate app schemas which you app using (and checking for canOpenURL:) to have ability to open that apps. For VK SDK you should change your Info.plist in that way:
```
<key>LSApplicationQueriesSchemes</key>
<array>
<string>vk</string>
<string>vk-share</string>
<string>vkauthorize</string>
</array>
```
How to set up VK iOS SDK
Adding VK iOS SDK to your iOS application
==========
Installation with CocoaPods
----------
CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like VK SDK in your projects. See the [Getting Started](http://cocoapods.org/) guide for more information.
CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like VK SDK in your projects. See the "[Getting Started](http://cocoapods.org/)" guide for more information.
`Podfile`
Podfile
platform :ios, '6.0'
target 'YourProjectName' do
pod 'VK-ios-sdk'
end
Then import the project as module if your podfile contains `use_frameworks!` directive:
@import VK_ios_sdk;
pod "VK-ios-sdk"
Or import the main project header, if you're installing pods without `use_frameworks!` directive:
#import <VK-ios-sdk/VKSdk.h>
Installation with [Carthage](https://github.com/Carthage/Carthage)
----------
*iOS 8 and upper only*
Add this to you `Cartfile`:
```
github "VKCOM/vk-ios-sdk" >= 1.4
```
See building instructions for [Carthage here](https://github.com/Carthage/Carthage#if-youre-building-for-ios)
Then import the main header.
#import <VKSdkFramework/VKSdkFramework.h>
#import <VKSdk.h>
Installation with framework project
Installation with source code
----------
If you're targeting iOS 8 and upper, you can use the SDK framework target. Add `VK-ios-sdk.xcodeproj` as sub-project to your project. Open your project in Xcode **->** Go to **General** tab **->** Find the **Embedded Binaries** section **->** Click **Add items** (plus sign) **->** And select `VKSdkFramework.framework` from the VK-ios-sdk project lastly import the main header:
#import <VKSdkFramework/VKSdkFramework.h>
Add `VKSdk.framework` and `VKSdkResources.bundle` files into your project. In the Application settings open **Build phases**, then the **Link Binary with Libraries** section, add `VKSdk.framework` there. Add `VKSdkResources.bundle` into **Copy bundle resources** section. Import the main header:
#import <VKSdk.h>
Using SDK
==========
Pre-requirements
----------
**Please read this section carefully if you don't want your app to be rejected!**
If your application is using VK SDK to provide the basic application functions, your app may be rejected by default (reason 10.6, see this issue #64), because the SDK is trying to authorize user through the Mobile Safari.
If you making such application, implement `-(BOOL)vkSdkIsBasicAuthorization {return YES;}` delegate method for tell SDK authorize with UIWebView first.
SDK Initialization
----------
1) Put this code to the application delegate method
1) Put this code to the application delegate method `application:openURL:sourceApplication:annotation:`
```
//iOS 9 workflow
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
[VKSdk processOpenURL:url fromApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
return YES;
}
//iOS 8 and lower
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[VKSdk processOpenURL:url fromApplication:sourceApplication];
return YES;
}
```
Note: if you already have FaceBook SDK added and one of this methods returns `[FBSDKDelegate ...]` you can handle it
2) Initialize SDK with your APP_ID for any delegate.
```
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
[[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
[VKSdk processOpenURL:url fromApplication:sourceApplication];
return YES;
}
```
2) Initialize VK SDK with your APP_ID for any delegate
```
VKSdk *sdkInstance = [VKSdk initializeWithAppId:YOUR_APP_ID];
```
Starting from version 1.3 there are two types of delegates available: common delegate and UI delegate. You can register as much common delegates, as you need, but an UI delegate may be only one. After the SDK initialization you should register delegates separately:
```
[sdkInstance registerDelegate:delegate];
[sdkInstance setUiDelegate:uiDelegate];
```
or
```
[[VKSdk initializeWithAppId:APP_ID] registerDelegate:delegate];
```
You will find full description of `VKSdkDelegate` and `VKSdkUIDelegate` protocols [here](http://cocoadocs.org/docsets/VK-ios-sdk) or [here](http://vkcom.github.io/vk-ios-sdk/index.html)
3) You need to check, if there is previous session available, so call asynchronous method `wakeUpSession:completeBlock:`
```
NSArray *SCOPE = @[@"friends", @"email"];
[VKSdk wakeUpSession:SCOPE completeBlock:^(VKAuthorizationState state, NSError *error) {
if (state == VKAuthorizationAuthorized) {
// Authorized and ready to go
} else if (error) {
// Some error happend, but you may try later
[VKSdk initializeWithDelegate:delegate andAppId:YOUR_APP_ID];
if ([VKSdk wakeUpSession])
{
//Start working
}
}];
```
You will find full list of available SCOPE permission [here](https://vk.com/dev/permissions)
Check out the VKAuthorizationState parameter. You can get several states:
* VKAuthorizationInitialized means the SDK is ready to work, and you can authorize user with `+authorize:` method. Probably, an old session has expired, and we wiped it out. *This is not an error.*
* VKAuthorizationAuthorized - means a previous session is okay, and you can continue working with user data.
* VKAuthorizationError - means some error happened when we tried to check the authorization. Probably, the internet connection has a bad quality. You have to try again later.
```
[VKSdk wakeUpSession:SCOPE completeBlock:^(VKAuthorizationState state, NSError *err) {
if (state == VKAuthorizationAuthorized) {
// authorized
} else {
// auth needed
}
}];
```
```
See full description of `VKSdkDelegate` protocol here: http://vkcom.github.io/vk-ios-sdk/Protocols/VKSdkDelegate.html
User Authorization
----------
If you don't have a session yet, you have to authorize user with a next method:
```
[VKSdk authorize:scope];
```
You have to conform to both `VKSdkDelegate` and `VKSdkUIDelegate` protocols to get appropriate methods called.
There are several methods for authorization:
After the authorization, all common delegates will be called with a next method:
```
- (void)vkSdkAccessAuthorizationFinishedWithResult:(VKAuthorizationResult *)result;
```
[VKSdk authorize:scope];
[VKSdk authorize:scope revokeAccess:YES];
[VKSdk authorize:scope revokeAccess:YES forceOAuth:YES];
`VKAuthorizationResult` contains some initial information: new access token object, basic user information, and error (if authorization failed).
[Complete documentation here](http://vkcom.github.io/vk-ios-sdk/index.html)
Generally, `[VKSdk authorize:scope revokeAccess:YES]` is enough for your needs.
When succeeded, the following method of delegate will be called:
-(void) vkSdkReceivedNewToken:(VKAccessToken*) newToken;
In case of error (e.g., user canceled authorization):
-(void) vkSdkUserDeniedAccess:(VKError*) authorizationError;
To get the User ID after authorization use method of `VKAccessToken` class
[[VKSdk getAccessToken] userId] //Return NSString - authorized user id
API Requests
==========
VK API Request syntax
Requests Syntax
----------
Below we have listed some examples for several request types.
Below we have listed the examples for several request types.
1) Plain request.
1) Plain request
```
VKRequest *usersReq = [[VKApi users] get];
```
VKRequest * audioReq = [[VKApi users] get];
2) Request with parameters
```
VKRequest *audioReq = [[VKApi audio] get:@{VK_API_OWNER_ID : @"896232"}];
```
2) Request with parameters.
3) Request with predetermined maximum number of attempts
```
VKRequest *postReq = [[VKApi wall] post:@{VK_API_MESSAGE : @"Test"}];
postReq.attempts = 10;
//or infinite
//postReq.attempts = 0;
```
It will take 10 attempts until succeeds or an API error occurs
VKRequest * audioReq = [[VKApi audio] get:@{VK_API_OWNER_ID : @"896232"}];
4) Request that calls any method of VK API
```
VKRequest *getWall = [VKRequest requestWithMethod:@"wall.get" andParameters:@{VK_API_OWNER_ID : @"-1"}];
```
3) Http (not https) request (only if scope `VK_PER_NOHTTPS` has been passed)
5) Request that uploads a photo to a user's wall
```
VKRequest *request = [VKApi uploadWallPhotoRequest:[UIImage imageNamed:@"my_photo"] parameters:[VKImageParameters pngImage] userId:0 groupId:0 ];
```
VKRequest * audioReq = [[VKApi audio] get:@{VK_API_OWNER_ID : @"896232"}];
audioReq.secure = NO;
Request firing
4) Request with predetermined maximum number of attempts.
VKRequest * postReq = [[VKApi wall] post:@{VK_API_MESSAGE : @"Test"}];
postReq.attempts = 10;
//or infinite
//postReq.attempts = 0;
It will take 10 attempts until succeeds or an API error occurs.
5) Request that calls a method of VK API (keep in mind scope value).
VKRequest * getWall = [VKRequest requestWithMethod:@"wall.get" andParameters:@{VK_API_OWNER_ID : @"-1"} andHttpMethod:@"GET"];
6) Request for uploading photos on user wall.
VKRequest * request = [VKApi uploadWallPhotoRequest:[UIImage imageNamed:@"my_photo"] parameters:[VKImageParameters pngImage] userId:0 groupId:0 ];
Requests Sending
----------
```
[audioReq executeWithResultBlock:^(VKResponse *response) {
NSLog(@"Json result: %@", response.json);
} errorBlock:^(NSError * error) {
if (error.code != VK_API_ERROR) {
[error.vkError.request repeat];
} else {
NSLog(@"VK error: %@", error);
}
}];
```
[audioReq executeWithResultBlock:^(VKResponse * response) {
NSLog(@"Json result: %@", response.json);
} errorBlock:^(NSError * error) {
if (error.code != VK_API_ERROR) {
[error.vkError.request repeat];
} else {
NSLog(@"VK error: %@", error);
}
}];
Error Handling
----------
Every request can return `NSError` with domain equal to `VKSdkErrorDomain`. SDK can return networking error or internal SDK error (e.g. request was canceled). Category `NSError+VKError` provides `vkError` property that describes error event. Compare error code with the global constant `VK_API_ERROR`. If they are equal that means you process `vkError` property as API error. Otherwise you should handle an http error.
Every request can return `NSError` with domain equal to `VKSdkErrorDomain`. SDK can return networking error or internal SDK error (e.g. request was canceled). Category `NSError+VKError` provides vkError property that describes error event. Compare error code with the global constant `VK_API_ERROR`. If they equal that means you process vkError property as API error. Otherwise you should handle an http error.
SDK can handle some errors (e.g., captcha error, validation error). Appropriate ui delegate method will be called for this purpose.
Some errors (e.g., captcha error, validation error) can be proccessed by the SDK. Appropriate delegate methods will be called for this purpose.
Below is an example of captcha error processing:
```
- (void)vkSdkNeedCaptchaEnter:(VKError *)captchaError
{
VKCaptchaViewController *vc = [VKCaptchaViewController captchaControllerWithError:captchaError];
[vc presentIn:self];
}
```
-(void) vkSdkNeedCaptchaEnter:(VKError*) captchaError
{
VKCaptchaViewController * vc = [VKCaptchaViewController captchaControllerWithError:captchaError];
[vc presentIn:self];
}
Batch Processing Requests
----------
SDK allows to execute several unrelated requests at the one call (aka Batch Request).
SDK gives a feature to execute several unrelated requests at the one call.
1) Prepare requests
```
VKRequest *request1 = [[VKApi audio] get];
request1.completeBlock = ^(VKResponse *) { ... };
VKRequest * request1 = [[VKApi audio] get];
request1.completeBlock = ^(VKResponse*) { ... };
VKRequest *request2 = [[VKApi users] get:@{VK_USER_IDS : @[@(1), @(6492), @(1708231)]}];
request2.completeBlock = ^(VKResponse *) { ... };
VKRequest * request2 = [[VKApi users] get:@{VK_USER_IDS : @[@(1), @(6492), @(1708231)]}];
request2.completeBlock = ^(VKResponse*) { ... };
```
2) Merge requests into one
```
VKBatchRequest *batch = [[VKBatchRequest alloc] initWithRequests:request1, request2, nil];
```
3) Fire the obtained request
```
[batch executeWithResultBlock:^(NSArray *responses) {
NSLog(@"Responses: %@", responses);
} errorBlock:^(NSError \*error) {
NSLog(@"Error: %@", error);
}];
```
4) The result of each method returns to a corresponding completeBlock. Response array contains result of the requests in order they have been passed.
2) Combine created requests into one.
VKBatchRequest * batch = [[VKBatchRequest alloc] initWithRequests:request1, request2, nil];
3) Load the obtained request.
[batch executeWithResultBlock:^(NSArray *responses) {
NSLog(@"Responses: %@", responses);
} errorBlock:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
4) The result of each method returns to a corresponding completeBlock. The responses array contains responses of the requests in order they have been passed.
Working with Share dialog
==========
Share dialog allows you to create a user friendly dialog for sharing text and photos from your application directly to VK. See the Share dialog usage example:
```
VKShareDialogController *shareDialog = [VKShareDialogController new]; //1
VKShareDialogController * shareDialog = [VKShareDialogController new]; //1
shareDialog.text = @"This post created using #vksdk #ios"; //2
shareDialog.vkImages = @[@"-10889156_348122347",@"7840938_319411365",@"-60479154_333497085"]; //3
shareDialog.shareLink = [[VKShareLink alloc] initWithTitle:@"Super puper link, but nobody knows" link:[NSURL URLWithString:@"https://vk.com/dev/ios_sdk"]]; //4
@ -295,27 +228,22 @@ shareDialog.shareLink = [[VKShareLink alloc] initWithTitle:@"Super puper link
}]; //5
[self presentViewController:shareDialog animated:YES completion:nil]; //6
```
1) Create an instance of the dialog controller as usual
1) create an instance of the dialog controller as usual.
2) Attach some text information to a dialog. Notice that users can change this information
2) attach some text information to a dialog. Notice that users can change this information.
3) Attach images uploaded to VK earlier. If you want user to upload a new image use `uploadImages` property
3) attach images uploaded to VK earlier. If you want user to upload a new image, use the `uploadImages` property.
4) Attach link at your pages
4) attach link at your pages
5) Set the dialog completion handler
6) Present the dialog view controller to your view controller
5) set the dialog completion handler
6) present the dialog viewcontroller in your view controller
Working with share activity
==========
VK SDK provides a special class to work with `UIActivityViewController` - `VKActivity`.
Pay attention to the fact, that a VK App has it own Share extension since version 2.4. Since version 2.5 it will support special URL scheme to check if Share extension is available. You should call `[VKActivity vkShareExtensionEnabled]` method to remove `VKActivity` from activities list, if a VK share extension is available.
Check the example below to understand how it works:
VK SDK provides a special class for working with `UIActivityViewController` - `VKActivity`. See example below for understand how it works:
```
NSArray *items = @[[UIImage imageNamed:@"apple"], @"Check out information about VK SDK" , [NSURL URLWithString:@"https://vk.com/dev/ios_sdk"]]; //1
@ -332,16 +260,16 @@ if (VK_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
[self presentViewController:activityViewController animated:YES completion:nil]; //6
```
Let's go through the example step-by-step
Lets see steps of the example:
1) Prepare your share information - `UIImage`, `NSString` and `NSURL`. That kind of information may be shared through VK
1) Prepare your share information - `UIImage`, `NSString` and `NSURL`. That kind of information may be shared throught VK.
2) Prepare `UIActivityViewController` with a new application `VKActivity`
2) Prepare `UIActivityViewController` with new application `VKActivity`.
3) Set additional properties for `activityViewController`
3) Set additional properties for `activityViewController`.
4) Set completion handler for `activityViewController`
5) Check if you're running iOS 8 or upper. If user is using iPad, you have to present the activity controller in a popover otherwise you'll get system error
5) Check if you're running above iOS 8. If user working with iPad, you must present the activity controller in popover, otherwise you'll get system error.
6) Present the activity controller as usual
6) Present the activity controller as usual.

8
VK-ios-sdk.podspec Executable file → Normal file
View File

@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "VK-ios-sdk"
s.version = "1.4.4"
s.version = "1.2.2"
s.summary = "Library for working with VK."
s.homepage = "https://github.com/VKCOM/vk-ios-sdk"
s.license = 'MIT'
@ -9,9 +9,7 @@ Pod::Spec.new do |s|
s.source = { :git => "https://github.com/VKCOM/vk-ios-sdk.git", :tag => s.version.to_s }
s.source_files = 'library/source/**/*.{h,m}'
s.public_header_files = 'library/source/**/*.h'
s.resource_bundles = {
'VKSdkResources' => ['library/Resources/SdkAssetCatalog.xcassets','library/Resources/*.lproj']
}
s.frameworks = 'Foundation','UIKit','SafariServices','CoreGraphics','Security'
s.resources = "VKSdkResources.bundle"
s.frameworks = 'Foundation','UIKit'
s.requires_arc = true
end

527
VK-ios-sdk.xcodeproj/project.pbxproj Executable file → Normal file
View File

@ -6,6 +6,22 @@
objectVersion = 46;
objects = {
/* Begin PBXAggregateTarget section */
F37145F61A42EB2900EEBD6D /* Framework */ = {
isa = PBXAggregateTarget;
buildConfigurationList = F37145F71A42EB2900EEBD6D /* Build configuration list for PBXAggregateTarget "Framework" */;
buildPhases = (
F37145FC1A42EB4700EEBD6D /* MultiPlatform Build */,
);
dependencies = (
F340187C1AC1D36C006CCEE0 /* PBXTargetDependency */,
F37146011A42F06E00EEBD6D /* PBXTargetDependency */,
);
name = Framework;
productName = Framework;
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
132CF7FE19D2B3360084884D /* VKAccessToken.h in Copy Files */ = {isa = PBXBuildFile; fileRef = F3C7549918226ABB00964716 /* VKAccessToken.h */; };
132CF7FF19D2B3360084884D /* VKBatchRequest.h in Copy Files */ = {isa = PBXBuildFile; fileRef = F3D38E7D183F7B4800D05079 /* VKBatchRequest.h */; };
@ -31,6 +47,7 @@
1ACA6509BAA3CEB2D5C3BA1D /* VKCaptchaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA608862B093D6D0F46BC4 /* VKCaptchaViewController.m */; };
1ACA656AD2A705875E2C86DC /* VKApiBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA628E1013456A0CB8D71E /* VKApiBase.m */; };
1ACA65FFFA2849D789FFDB88 /* VKApiGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA62BE07D3E456A04ACE24 /* VKApiGroups.m */; };
1ACA66450BE336D6F5AD4683 /* NSData+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA628625B4301841232A88 /* NSData+MD5.m */; };
1ACA664E3EC08CC26D0E2340 /* VKUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6F8866BE96889BB9DA68 /* VKUtil.m */; };
1ACA66EB5F29CF88789B1D5F /* VKApiWall.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6D5C2E0E59A23C3D3B4C /* VKApiWall.m */; };
1ACA68336BEF00F13DEDA870 /* VKUploadMessagesPhotoRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA60EB8A19FBF44B2A0769 /* VKUploadMessagesPhotoRequest.m */; };
@ -60,26 +77,58 @@
1ACA6F1A8CF8466F058EE7BC /* VKGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6C700C815D16F08DD4CD /* VKGroup.m */; };
1ACA6F8C335233B3D05A0F49 /* VKActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6F9E65F7742733AB46DF /* VKActivity.m */; };
1ACA6FE428FEE2FCF7316DBB /* VKShareDialogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6536B0B95A5ADF4F4D7A /* VKShareDialogController.m */; };
8F99D6351C42C6010006DB03 /* VKApiDocs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F99D6331C42C6010006DB03 /* VKApiDocs.h */; settings = {ATTRIBUTES = (Public, ); }; };
8F99D6361C42C6010006DB03 /* VKApiDocs.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F99D6341C42C6010006DB03 /* VKApiDocs.m */; };
8F99D6371C42C6010006DB03 /* VKApiDocs.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F99D6341C42C6010006DB03 /* VKApiDocs.m */; };
8F99D63A1C42C61A0006DB03 /* VKDocs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F99D6381C42C61A0006DB03 /* VKDocs.h */; settings = {ATTRIBUTES = (Public, ); }; };
8F99D63B1C42C61A0006DB03 /* VKDocs.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F99D6391C42C61A0006DB03 /* VKDocs.m */; };
8F99D63C1C42C61A0006DB03 /* VKDocs.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F99D6391C42C61A0006DB03 /* VKDocs.m */; };
F3007C5D1AEE50B5007CCA9D /* VKApiConst.m in Sources */ = {isa = PBXBuildFile; fileRef = F3007C5C1AEE50B5007CCA9D /* VKApiConst.m */; };
F3050D211C49123C0092FE76 /* VKDocs.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8F99D6381C42C61A0006DB03 /* VKDocs.h */; };
F3050D221C4912420092FE76 /* VKApiDocs.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8F99D6331C42C6010006DB03 /* VKApiDocs.h */; };
F34074F61D214AAC00F65798 /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3769E701BE8E41C00AEC4AF /* SafariServices.framework */; };
F3062B801A4185FF006B57F9 /* ic_vk_ios7_activity_logo~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B7F1A4185FD006B57F9 /* ic_vk_ios7_activity_logo~ipad.png */; };
F3062B851A418A0E006B57F9 /* ic_vk_ios7_activity_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B811A418A0E006B57F9 /* ic_vk_ios7_activity_logo.png */; };
F3062B861A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B821A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x.png */; };
F3062B871A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B831A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x~ipad.png */; };
F3062B881A418A0E006B57F9 /* ic_vk_ios7_activity_logo@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B841A418A0E006B57F9 /* ic_vk_ios7_activity_logo@3x.png */; };
F32ADDCD1A417CE9009A9FD6 /* ic_vk_activity_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDC81A417C4C009A9FD6 /* ic_vk_activity_logo.png */; };
F32ADDCE1A417CE9009A9FD6 /* ic_vk_activity_logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDC91A417C4C009A9FD6 /* ic_vk_activity_logo@2x.png */; };
F32ADDCF1A417CE9009A9FD6 /* ic_vk_activity_logo@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDCA1A417C4C009A9FD6 /* ic_vk_activity_logo@2x~ipad.png */; };
F32ADDD01A417CE9009A9FD6 /* ic_vk_activity_logo@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDCB1A417C4C009A9FD6 /* ic_vk_activity_logo@3x.png */; };
F32ADDD11A417CE9009A9FD6 /* ic_vk_activity_logo~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDCC1A417C4C009A9FD6 /* ic_vk_activity_logo~ipad.png */; };
F3454FD01ABB1D1A00B15E85 /* VKRequestsScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = F3454FCF1ABB1D1A00B15E85 /* VKRequestsScheduler.m */; };
F34670201B8B6BF3003EF74B /* VKSdk.h in Copy Files */ = {isa = PBXBuildFile; fileRef = F34670171B8B50E0003EF74B /* VKSdk.h */; };
F34670361B8B7C5A003EF74B /* VKSdkFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = F34670351B8B7C5A003EF74B /* VKSdkFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346704A1B8B7C6B003EF74B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3EEFFA81827BB18000BB525 /* UIKit.framework */; };
F346704B1B8B7C70003EF74B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3C75430182133CC00964716 /* Foundation.framework */; };
F346704C1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B811A418A0E006B57F9 /* ic_vk_ios7_activity_logo.png */; };
F346704D1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B821A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x.png */; };
F346704E1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B831A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x~ipad.png */; };
F346704F1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B841A418A0E006B57F9 /* ic_vk_ios7_activity_logo@3x.png */; };
F34670501B8B7C8E003EF74B /* ic_vk_ios7_activity_logo~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F3062B7F1A4185FD006B57F9 /* ic_vk_ios7_activity_logo~ipad.png */; };
F34670511B8B7C8E003EF74B /* ic_vk_activity_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDC81A417C4C009A9FD6 /* ic_vk_activity_logo.png */; };
F34670521B8B7C8E003EF74B /* ic_vk_activity_logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDC91A417C4C009A9FD6 /* ic_vk_activity_logo@2x.png */; };
F34670531B8B7C8E003EF74B /* ic_vk_activity_logo@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDCA1A417C4C009A9FD6 /* ic_vk_activity_logo@2x~ipad.png */; };
F34670541B8B7C8E003EF74B /* ic_vk_activity_logo@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDCB1A417C4C009A9FD6 /* ic_vk_activity_logo@3x.png */; };
F34670551B8B7C8E003EF74B /* ic_vk_activity_logo~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = F32ADDCC1A417C4C009A9FD6 /* ic_vk_activity_logo~ipad.png */; };
F34670561B8B7C8E003EF74B /* Disclosure.png in Resources */ = {isa = PBXBuildFile; fileRef = F3A1D1F01A40436A00EFEC74 /* Disclosure.png */; };
F34670571B8B7C8E003EF74B /* Disclosure@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3A1D1F11A40436A00EFEC74 /* Disclosure@2x.png */; };
F34670581B8B7C8E003EF74B /* Disclosure@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3A1D1F21A40436A00EFEC74 /* Disclosure@3x.png */; };
F34670591B8B7C8E003EF74B /* BlueBtn_pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00AF1A3A019A00167AEB /* BlueBtn_pressed.png */; };
F346705A1B8B7C8E003EF74B /* BlueBtn_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B01A3A019A00167AEB /* BlueBtn_pressed@2x.png */; };
F346705B1B8B7C8E003EF74B /* BlueBtn_pressed@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B11A3A019A00167AEB /* BlueBtn_pressed@3x.png */; };
F346705C1B8B7C8E003EF74B /* BlueBtn.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B21A3A019A00167AEB /* BlueBtn.png */; };
F346705D1B8B7C8E003EF74B /* BlueBtn@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B31A3A019A00167AEB /* BlueBtn@2x.png */; };
F346705E1B8B7C8E003EF74B /* BlueBtn@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B41A3A019A00167AEB /* BlueBtn@3x.png */; };
F346705F1B8B7C8E003EF74B /* ic_deleteattach.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C31977DC2D0085898F /* ic_deleteattach.png */; };
F34670601B8B7C8E003EF74B /* ic_deleteattach@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C41977DC2D0085898F /* ic_deleteattach@2x.png */; };
F34670611B8B7C8E003EF74B /* ic_deletephoto.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C51977DC2D0085898F /* ic_deletephoto.png */; };
F34670621B8B7C8E003EF74B /* ic_deletephoto@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C61977DC2D0085898F /* ic_deletephoto@2x.png */; };
F34670631B8B7C8E003EF74B /* ic_vk_logo_nb.png in Resources */ = {isa = PBXBuildFile; fileRef = F3BACC5F186883E8003158DA /* ic_vk_logo_nb.png */; };
F34670641B8B7C8E003EF74B /* ic_vk_logo_nb@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3BACC60186883E8003158DA /* ic_vk_logo_nb@2x.png */; };
F34670651B8B7C8E003EF74B /* ic_vk_logo_nb@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B51A3A019A00167AEB /* ic_vk_logo_nb@3x.png */; };
F34670661B8B7C8E003EF74B /* img_newpostattachlink.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114CF1978060F0085898F /* img_newpostattachlink.png */; };
F34670671B8B7C8E003EF74B /* img_newpostattachlink@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114D01978060F0085898F /* img_newpostattachlink@2x.png */; };
F34670681B8B7C8E003EF74B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F36114A4197684870085898F /* Localizable.strings */; };
F34670691B8B7C8E003EF74B /* vk_settings.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114AF19768FD70085898F /* vk_settings.png */; };
F346706A1B8B7C8E003EF74B /* vk_settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114B019768FD70085898F /* vk_settings@2x.png */; };
F34670D51B8B7CC7003EF74B /* VKImageParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA64A77C64725DC48444F7 /* VKImageParameters.m */; };
F34670D61B8B7CCA003EF74B /* VKUploadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6FA4664723004E33ADE4 /* VKUploadImage.m */; };
F34670D71B8B7CD2003EF74B /* VKUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6F8866BE96889BB9DA68 /* VKUtil.m */; };
F34670D81B8B7CD2003EF74B /* NSString+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6108D9F4E0C7644BAC52 /* NSString+MD5.m */; };
F34670D91B8B7CD2003EF74B /* NSData+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA628625B4301841232A88 /* NSData+MD5.m */; };
F34670DA1B8B7CD2003EF74B /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA69BCB967C1A6450F9935 /* OrderedDictionary.m */; };
F34670DB1B8B7CD9003EF74B /* VKActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6F9E65F7742733AB46DF /* VKActivity.m */; };
F34670DC1B8B7CD9003EF74B /* VKAuthorizeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA602BF516D3FC45609A2B /* VKAuthorizeController.m */; };
@ -122,17 +171,17 @@
F34671011B8B7D07003EF74B /* VKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6A6A44F31EF577C52D25 /* VKError.m */; };
F34671021B8B7D07003EF74B /* VKHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6B563F483A0A35070645 /* VKHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671031B8B7D07003EF74B /* VKHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA684708A969AF04E34B85 /* VKHTTPClient.m */; };
F34671041B8B7D07003EF74B /* VKHTTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6E01EE850C5782604D41 /* VKHTTPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671041B8B7D07003EF74B /* VKHTTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6E01EE850C5782604D41 /* VKHTTPOperation.h */; };
F34671051B8B7D07003EF74B /* VKHTTPOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6FEB2DD3739A1AFB8403 /* VKHTTPOperation.m */; };
F34671061B8B7D07003EF74B /* VKJSONOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DA65AF1B3DA34600E64A30 /* VKJSONOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671061B8B7D07003EF74B /* VKJSONOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DA65AF1B3DA34600E64A30 /* VKJSONOperation.h */; };
F34671071B8B7D07003EF74B /* VKJSONOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F3DA65B01B3DA34600E64A30 /* VKJSONOperation.m */; };
F34671081B8B7D07003EF74B /* VKObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6B275906BC58E311AF45 /* VKObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671091B8B7D07003EF74B /* VKObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6062CBB5C51999B6F516 /* VKObject.m */; };
F346710A1B8B7D07003EF74B /* VKOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA61B2E964393FB2431C30 /* VKOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346710A1B8B7D07003EF74B /* VKOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA61B2E964393FB2431C30 /* VKOperation.h */; };
F346710B1B8B7D07003EF74B /* VKOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6FE235BA094D8E3A0189 /* VKOperation.m */; };
F346710C1B8B7D07003EF74B /* VKRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA69C5C9C5019C00FA4FE9 /* VKRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346710D1B8B7D07003EF74B /* VKRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA6422AA73710CE582104B /* VKRequest.m */; };
F346710E1B8B7D07003EF74B /* VKRequestsScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = F3454FCE1ABB1D1A00B15E85 /* VKRequestsScheduler.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346710E1B8B7D07003EF74B /* VKRequestsScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = F3454FCE1ABB1D1A00B15E85 /* VKRequestsScheduler.h */; };
F346710F1B8B7D07003EF74B /* VKRequestsScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = F3454FCF1ABB1D1A00B15E85 /* VKRequestsScheduler.m */; };
F34671101B8B7D07003EF74B /* VKResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6B2CF4703D6489516BCE /* VKResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671111B8B7D07003EF74B /* VKResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA624D02724AC703780337 /* VKResponse.m */; };
@ -174,21 +223,22 @@
F34671351B8B7D07003EF74B /* VKCaptchaView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA61750D18E769710C23D2 /* VKCaptchaView.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671361B8B7D07003EF74B /* VKCaptchaViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA60549B5805BC010388F6 /* VKCaptchaViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671371B8B7D07003EF74B /* VKShareDialogController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA636E76F65CA58F05D4C9 /* VKShareDialogController.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671381B8B7D07003EF74B /* VKSharedTransitioningObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6A7961FA6DBB3C1530F9 /* VKSharedTransitioningObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34671381B8B7D07003EF74B /* VKSharedTransitioningObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6A7961FA6DBB3C1530F9 /* VKSharedTransitioningObject.h */; };
F34671391B8B7D07003EF74B /* VKUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA671427725230741603BC /* VKUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346713A1B8B7D07003EF74B /* NSData+MD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA60466E2608234660028D /* NSData+MD5.h */; };
F346713B1B8B7D07003EF74B /* OrderedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6CCE31EAF497A4030D24 /* OrderedDictionary.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346713C1B8B7D07003EF74B /* NSString+MD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6E07E9640D2B9D9B4831 /* NSString+MD5.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346713C1B8B7D07003EF74B /* NSString+MD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA6E07E9640D2B9D9B4831 /* NSString+MD5.h */; };
F346713D1B8B7D07003EF74B /* VKUploadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA68CDC5C08713A61C5AD1 /* VKUploadImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
F346713E1B8B7D07003EF74B /* VKImageParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA62D0E659DB7778EF2633 /* VKImageParameters.h */; settings = {ATTRIBUTES = (Public, ); }; };
F34DECF61D2171E3005495E5 /* SdkAssetCatalog.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F34DECF11D2171A1005495E5 /* SdkAssetCatalog.xcassets */; };
F34DECF71D217260005495E5 /* SdkAssetCatalog.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F34DECF11D2171A1005495E5 /* SdkAssetCatalog.xcassets */; };
F36114A9197685810085898F /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F36114A4197684870085898F /* Localizable.strings */; };
F3769D411BDFDC6F00AEC4AF /* VKAuthorizationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = F3769D3F1BDFDC6F00AEC4AF /* VKAuthorizationResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
F3769D421BDFDC6F00AEC4AF /* VKAuthorizationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = F3769D401BDFDC6F00AEC4AF /* VKAuthorizationResult.m */; };
F3769D431BDFDC6F00AEC4AF /* VKAuthorizationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = F3769D401BDFDC6F00AEC4AF /* VKAuthorizationResult.m */; };
F3769D441BDFDD3C00AEC4AF /* VKAuthorizationResult.h in Copy Files */ = {isa = PBXBuildFile; fileRef = F3769D3F1BDFDC6F00AEC4AF /* VKAuthorizationResult.h */; };
F3769E6F1BE8E41800AEC4AF /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3769E6E1BE8E41800AEC4AF /* CoreGraphics.framework */; };
F3769E711BE8E41C00AEC4AF /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3769E701BE8E41C00AEC4AF /* SafariServices.framework */; };
F36114B319768FDD0085898F /* vk_settings.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114AF19768FD70085898F /* vk_settings.png */; };
F36114B419768FDD0085898F /* vk_settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114B019768FD70085898F /* vk_settings@2x.png */; };
F36114C71977DC2D0085898F /* ic_deleteattach.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C31977DC2D0085898F /* ic_deleteattach.png */; };
F36114C81977DC2D0085898F /* ic_deleteattach@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C41977DC2D0085898F /* ic_deleteattach@2x.png */; };
F36114C91977DC2D0085898F /* ic_deletephoto.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C51977DC2D0085898F /* ic_deletephoto.png */; };
F36114CA1977DC2D0085898F /* ic_deletephoto@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114C61977DC2D0085898F /* ic_deletephoto@2x.png */; };
F36114D11978060F0085898F /* img_newpostattachlink.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114CF1978060F0085898F /* img_newpostattachlink.png */; };
F36114D21978060F0085898F /* img_newpostattachlink@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F36114D01978060F0085898F /* img_newpostattachlink@2x.png */; };
F3909FE51A9C7B24006540A6 /* NSError+VKError.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 1ACA6A36848AD5D36847B463 /* NSError+VKError.h */; };
F3909FE61A9C7B24006540A6 /* VKRequest.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 1ACA69C5C9C5019C00FA4FE9 /* VKRequest.h */; };
F3909FE71A9C7B24006540A6 /* VKError.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 1ACA6DAE30C094CEFFDC106A /* VKError.h */; };
@ -229,18 +279,32 @@
F390A00A1A9C7B25006540A6 /* VKUtil.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 1ACA671427725230741603BC /* VKUtil.h */; };
F390A00B1A9C7B25006540A6 /* VKUploadImage.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 1ACA68CDC5C08713A61C5AD1 /* VKUploadImage.h */; };
F390A00C1A9C7B25006540A6 /* VKImageParameters.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 1ACA62D0E659DB7778EF2633 /* VKImageParameters.h */; };
F3C58CD01D213B2C005E94B5 /* VKSdkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F3C58CCF1D213B2C005E94B5 /* VKSdkTests.m */; };
F3C68F151C0C7E6600E1EB5E /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3769E701BE8E41C00AEC4AF /* SafariServices.framework */; };
F3C68F171C0C855C00E1EB5E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3C68F161C0C855C00E1EB5E /* Security.framework */; };
F3C68F181C0C857F00E1EB5E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3769E6E1BE8E41800AEC4AF /* CoreGraphics.framework */; };
F3C68F191C0C858300E1EB5E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3C68F161C0C855C00E1EB5E /* Security.framework */; };
F39A00B61A3A019A00167AEB /* BlueBtn_pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00AF1A3A019A00167AEB /* BlueBtn_pressed.png */; };
F39A00B71A3A019A00167AEB /* BlueBtn_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B01A3A019A00167AEB /* BlueBtn_pressed@2x.png */; };
F39A00B81A3A019A00167AEB /* BlueBtn_pressed@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B11A3A019A00167AEB /* BlueBtn_pressed@3x.png */; };
F39A00B91A3A019A00167AEB /* BlueBtn.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B21A3A019A00167AEB /* BlueBtn.png */; };
F39A00BA1A3A019A00167AEB /* BlueBtn@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B31A3A019A00167AEB /* BlueBtn@2x.png */; };
F39A00BB1A3A019A00167AEB /* BlueBtn@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B41A3A019A00167AEB /* BlueBtn@3x.png */; };
F39A00BC1A3A019A00167AEB /* ic_vk_logo_nb@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F39A00B51A3A019A00167AEB /* ic_vk_logo_nb@3x.png */; };
F3A1D1F31A40436A00EFEC74 /* Disclosure.png in Resources */ = {isa = PBXBuildFile; fileRef = F3A1D1F01A40436A00EFEC74 /* Disclosure.png */; };
F3A1D1F41A40436A00EFEC74 /* Disclosure@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3A1D1F11A40436A00EFEC74 /* Disclosure@2x.png */; };
F3A1D1F51A40436A00EFEC74 /* Disclosure@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3A1D1F21A40436A00EFEC74 /* Disclosure@3x.png */; };
F3BACC481865905B003158DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F3BACC461865905B003158DA /* InfoPlist.strings */; };
F3BACC61186883E8003158DA /* ic_vk_logo_nb.png in Resources */ = {isa = PBXBuildFile; fileRef = F3BACC5F186883E8003158DA /* ic_vk_logo_nb.png */; };
F3BACC62186883E8003158DA /* ic_vk_logo_nb@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F3BACC60186883E8003158DA /* ic_vk_logo_nb@2x.png */; };
F3C75431182133CC00964716 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3C75430182133CC00964716 /* Foundation.framework */; };
F3DA65B11B3DA34600E64A30 /* VKJSONOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F3DA65B01B3DA34600E64A30 /* VKJSONOperation.m */; };
F3DD81301D21966F001E7E63 /* VKSdkFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F34670311B8B7C5A003EF74B /* VKSdkFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
F3EEFFA91827BB18000BB525 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3EEFFA81827BB18000BB525 /* UIKit.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
F340187B1AC1D36C006CCEE0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F3C75425182133CB00964716 /* Project object */;
proxyType = 1;
remoteGlobalIDString = F3C7542C182133CC00964716;
remoteInfo = VKSdk;
};
F34670261B8B7A59003EF74B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F3C75425182133CB00964716 /* Project object */;
@ -248,12 +312,12 @@
remoteGlobalIDString = F3BACC3F1865905B003158DA;
remoteInfo = VKSdkResources;
};
F3DD81311D2198C8001E7E63 /* PBXContainerItemProxy */ = {
F37146001A42F06E00EEBD6D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F3C75425182133CB00964716 /* Project object */;
proxyType = 1;
remoteGlobalIDString = F3C7542C182133CC00964716;
remoteInfo = VKSdk;
remoteGlobalIDString = F3BACC3F1865905B003158DA;
remoteInfo = VKSdkResources;
};
/* End PBXContainerItemProxy section */
@ -264,9 +328,6 @@
dstPath = "include/$(PRODUCT_NAME)";
dstSubfolderSpec = 16;
files = (
F3050D221C4912420092FE76 /* VKApiDocs.h in Copy Files */,
F3050D211C49123C0092FE76 /* VKDocs.h in Copy Files */,
F3769D441BDFDD3C00AEC4AF /* VKAuthorizationResult.h in Copy Files */,
F34670201B8B6BF3003EF74B /* VKSdk.h in Copy Files */,
F3909FE51A9C7B24006540A6 /* NSError+VKError.h in Copy Files */,
F3909FE61A9C7B24006540A6 /* VKRequest.h in Copy Files */,
@ -317,21 +378,12 @@
name = "Copy Files";
runOnlyForDeploymentPostprocessing = 0;
};
F3DD812F1D219660001E7E63 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
F3DD81301D21966F001E7E63 /* VKSdkFramework.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1ACA602BF516D3FC45609A2B /* VKAuthorizeController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKAuthorizeController.m; sourceTree = "<group>"; };
1ACA6041B183FB7781AC6F07 /* VKUploadMessagesPhotoRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKUploadMessagesPhotoRequest.h; sourceTree = "<group>"; };
1ACA60466E2608234660028D /* NSData+MD5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+MD5.h"; sourceTree = "<group>"; };
1ACA60549B5805BC010388F6 /* VKCaptchaViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKCaptchaViewController.h; sourceTree = "<group>"; };
1ACA6062CBB5C51999B6F516 /* VKObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKObject.m; sourceTree = "<group>"; };
1ACA608862B093D6D0F46BC4 /* VKCaptchaViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKCaptchaViewController.m; sourceTree = "<group>"; };
@ -347,6 +399,7 @@
1ACA61B2E964393FB2431C30 /* VKOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKOperation.h; sourceTree = "<group>"; };
1ACA61F606614B473B1F8535 /* VKUploadWallPhotoRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKUploadWallPhotoRequest.m; sourceTree = "<group>"; };
1ACA624D02724AC703780337 /* VKResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKResponse.m; sourceTree = "<group>"; };
1ACA628625B4301841232A88 /* NSData+MD5.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+MD5.m"; sourceTree = "<group>"; };
1ACA628E1013456A0CB8D71E /* VKApiBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKApiBase.m; sourceTree = "<group>"; };
1ACA62BE07D3E456A04ACE24 /* VKApiGroups.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKApiGroups.m; sourceTree = "<group>"; };
1ACA62D0E659DB7778EF2633 /* VKImageParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKImageParameters.h; sourceTree = "<group>"; };
@ -418,33 +471,51 @@
1ACA6FA4664723004E33ADE4 /* VKUploadImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKUploadImage.m; sourceTree = "<group>"; };
1ACA6FE235BA094D8E3A0189 /* VKOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKOperation.m; sourceTree = "<group>"; };
1ACA6FEB2DD3739A1AFB8403 /* VKHTTPOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKHTTPOperation.m; sourceTree = "<group>"; };
8F99D6331C42C6010006DB03 /* VKApiDocs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VKApiDocs.h; path = library/Source/API/methods/VKApiDocs.h; sourceTree = SOURCE_ROOT; };
8F99D6341C42C6010006DB03 /* VKApiDocs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VKApiDocs.m; path = library/Source/API/methods/VKApiDocs.m; sourceTree = SOURCE_ROOT; };
8F99D6381C42C61A0006DB03 /* VKDocs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKDocs.h; sourceTree = "<group>"; };
8F99D6391C42C61A0006DB03 /* VKDocs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKDocs.m; sourceTree = "<group>"; };
F3007C5C1AEE50B5007CCA9D /* VKApiConst.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKApiConst.m; sourceTree = "<group>"; };
F3062B7F1A4185FD006B57F9 /* ic_vk_ios7_activity_logo~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_ios7_activity_logo~ipad.png"; sourceTree = "<group>"; };
F3062B811A418A0E006B57F9 /* ic_vk_ios7_activity_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_vk_ios7_activity_logo.png; sourceTree = "<group>"; };
F3062B821A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_ios7_activity_logo@2x.png"; sourceTree = "<group>"; };
F3062B831A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_ios7_activity_logo@2x~ipad.png"; sourceTree = "<group>"; };
F3062B841A418A0E006B57F9 /* ic_vk_ios7_activity_logo@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_ios7_activity_logo@3x.png"; sourceTree = "<group>"; };
F32ADDC81A417C4C009A9FD6 /* ic_vk_activity_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_vk_activity_logo.png; sourceTree = "<group>"; };
F32ADDC91A417C4C009A9FD6 /* ic_vk_activity_logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_activity_logo@2x.png"; sourceTree = "<group>"; };
F32ADDCA1A417C4C009A9FD6 /* ic_vk_activity_logo@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_activity_logo@2x~ipad.png"; sourceTree = "<group>"; };
F32ADDCB1A417C4C009A9FD6 /* ic_vk_activity_logo@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_activity_logo@3x.png"; sourceTree = "<group>"; };
F32ADDCC1A417C4C009A9FD6 /* ic_vk_activity_logo~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_activity_logo~ipad.png"; sourceTree = "<group>"; };
F3454FCE1ABB1D1A00B15E85 /* VKRequestsScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKRequestsScheduler.h; sourceTree = "<group>"; };
F3454FCF1ABB1D1A00B15E85 /* VKRequestsScheduler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKRequestsScheduler.m; sourceTree = "<group>"; };
F34670171B8B50E0003EF74B /* VKSdk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKSdk.h; sourceTree = "<group>"; };
F34670311B8B7C5A003EF74B /* VKSdkFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VKSdkFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F34670341B8B7C5A003EF74B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
F34670351B8B7C5A003EF74B /* VKSdkFramework.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VKSdkFramework.h; sourceTree = "<group>"; };
F34DECF11D2171A1005495E5 /* SdkAssetCatalog.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = SdkAssetCatalog.xcassets; sourceTree = "<group>"; };
F34DECF81D217291005495E5 /* Resources-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Resources-Info.plist"; sourceTree = "<group>"; };
F36114A5197684870085898F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
F36114A8197684A00085898F /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
F36114AF19768FD70085898F /* vk_settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vk_settings.png; sourceTree = "<group>"; };
F36114B019768FD70085898F /* vk_settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "vk_settings@2x.png"; sourceTree = "<group>"; };
F36114BF1976CEB80085898F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
F3769D3F1BDFDC6F00AEC4AF /* VKAuthorizationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKAuthorizationResult.h; sourceTree = "<group>"; };
F3769D401BDFDC6F00AEC4AF /* VKAuthorizationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKAuthorizationResult.m; sourceTree = "<group>"; };
F3769E6E1BE8E41800AEC4AF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
F3769E701BE8E41C00AEC4AF /* SafariServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SafariServices.framework; path = System/Library/Frameworks/SafariServices.framework; sourceTree = SDKROOT; };
F36114C31977DC2D0085898F /* ic_deleteattach.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_deleteattach.png; sourceTree = "<group>"; };
F36114C41977DC2D0085898F /* ic_deleteattach@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_deleteattach@2x.png"; sourceTree = "<group>"; };
F36114C51977DC2D0085898F /* ic_deletephoto.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_deletephoto.png; sourceTree = "<group>"; };
F36114C61977DC2D0085898F /* ic_deletephoto@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_deletephoto@2x.png"; sourceTree = "<group>"; };
F36114CF1978060F0085898F /* img_newpostattachlink.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_newpostattachlink.png; sourceTree = "<group>"; };
F36114D01978060F0085898F /* img_newpostattachlink@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_newpostattachlink@2x.png"; sourceTree = "<group>"; };
F39A00AF1A3A019A00167AEB /* BlueBtn_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueBtn_pressed.png; sourceTree = "<group>"; };
F39A00B01A3A019A00167AEB /* BlueBtn_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueBtn_pressed@2x.png"; sourceTree = "<group>"; };
F39A00B11A3A019A00167AEB /* BlueBtn_pressed@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueBtn_pressed@3x.png"; sourceTree = "<group>"; };
F39A00B21A3A019A00167AEB /* BlueBtn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueBtn.png; sourceTree = "<group>"; };
F39A00B31A3A019A00167AEB /* BlueBtn@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueBtn@2x.png"; sourceTree = "<group>"; };
F39A00B41A3A019A00167AEB /* BlueBtn@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueBtn@3x.png"; sourceTree = "<group>"; };
F39A00B51A3A019A00167AEB /* ic_vk_logo_nb@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_logo_nb@3x.png"; sourceTree = "<group>"; };
F3A1D1F01A40436A00EFEC74 /* Disclosure.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Disclosure.png; sourceTree = "<group>"; };
F3A1D1F11A40436A00EFEC74 /* Disclosure@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Disclosure@2x.png"; sourceTree = "<group>"; };
F3A1D1F21A40436A00EFEC74 /* Disclosure@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Disclosure@3x.png"; sourceTree = "<group>"; };
F3BACC401865905B003158DA /* VKSdkResources.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VKSdkResources.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
F3BACC451865905B003158DA /* Resources-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Resources-Info.plist"; sourceTree = "<group>"; };
F3BACC471865905B003158DA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
F3BACC5618659493003158DA /* VKBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VKBundle.h; sourceTree = "<group>"; };
F3BACC5718659493003158DA /* VKBundle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VKBundle.m; sourceTree = "<group>"; };
F3C58CCD1D213B2C005E94B5 /* VKSdkTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VKSdkTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
F3C58CCF1D213B2C005E94B5 /* VKSdkTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VKSdkTests.m; sourceTree = "<group>"; };
F3C58CD11D213B2C005E94B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
F3C68F161C0C855C00E1EB5E /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
F3BACC5F186883E8003158DA /* ic_vk_logo_nb.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_vk_logo_nb.png; sourceTree = "<group>"; };
F3BACC60186883E8003158DA /* ic_vk_logo_nb@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_vk_logo_nb@2x.png"; sourceTree = "<group>"; };
F3C7542D182133CC00964716 /* libVKSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVKSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
F3C75430182133CC00964716 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
F3C75437182133CC00964716 /* VKSdk.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VKSdk.m; sourceTree = "<group>"; };
@ -465,9 +536,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F3C68F171C0C855C00E1EB5E /* Security.framework in Frameworks */,
F3769E711BE8E41C00AEC4AF /* SafariServices.framework in Frameworks */,
F3769E6F1BE8E41800AEC4AF /* CoreGraphics.framework in Frameworks */,
F346704B1B8B7C70003EF74B /* Foundation.framework in Frameworks */,
F346704A1B8B7C6B003EF74B /* UIKit.framework in Frameworks */,
);
@ -480,21 +548,10 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
F3C58CCA1D213B2C005E94B5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F34074F61D214AAC00F65798 /* SafariServices.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F3C7542A182133CC00964716 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F3C68F191C0C858300E1EB5E /* Security.framework in Frameworks */,
F3C68F181C0C857F00E1EB5E /* CoreGraphics.framework in Frameworks */,
F3C68F151C0C7E6600E1EB5E /* SafariServices.framework in Frameworks */,
F3EEFFA91827BB18000BB525 /* UIKit.framework in Frameworks */,
F3C75431182133CC00964716 /* Foundation.framework in Frameworks */,
);
@ -551,8 +608,6 @@
1ACA64B4219AB5F2A104F4E3 /* models */ = {
isa = PBXGroup;
children = (
8F99D6381C42C61A0006DB03 /* VKDocs.h */,
8F99D6391C42C61A0006DB03 /* VKDocs.m */,
1ACA6BF00807A26E3B00BD65 /* VKUser.h */,
1ACA664E5CDF97EB2648B660 /* VKUser.m */,
1ACA60E2C646C4C6615170CD /* VKAudio.h */,
@ -623,8 +678,6 @@
1ACA6BC82C49B5869CE0CCC6 /* methods */ = {
isa = PBXGroup;
children = (
8F99D6331C42C6010006DB03 /* VKApiDocs.h */,
8F99D6341C42C6010006DB03 /* VKApiDocs.m */,
1ACA64C1D90338B2A13D2392 /* VKApiBase.h */,
1ACA628E1013456A0CB8D71E /* VKApiBase.m */,
1ACA68234EC488521F154B60 /* VKApiCaptcha.h */,
@ -649,12 +702,14 @@
1ACA6F81E7D41D5219AB4B25 /* Utils */ = {
isa = PBXGroup;
children = (
1ACA6E07E9640D2B9D9B4831 /* NSString+MD5.h */,
1ACA6108D9F4E0C7644BAC52 /* NSString+MD5.m */,
1ACA6CCE31EAF497A4030D24 /* OrderedDictionary.h */,
1ACA69BCB967C1A6450F9935 /* OrderedDictionary.m */,
1ACA671427725230741603BC /* VKUtil.h */,
1ACA6F8866BE96889BB9DA68 /* VKUtil.m */,
1ACA671427725230741603BC /* VKUtil.h */,
1ACA6108D9F4E0C7644BAC52 /* NSString+MD5.m */,
1ACA628625B4301841232A88 /* NSData+MD5.m */,
1ACA69BCB967C1A6450F9935 /* OrderedDictionary.m */,
1ACA60466E2608234660028D /* NSData+MD5.h */,
1ACA6CCE31EAF497A4030D24 /* OrderedDictionary.h */,
1ACA6E07E9640D2B9D9B4831 /* NSString+MD5.h */,
);
path = Utils;
sourceTree = "<group>";
@ -680,21 +735,50 @@
F3BACC431865905B003158DA /* Resources */ = {
isa = PBXGroup;
children = (
F34DECF81D217291005495E5 /* Resources-Info.plist */,
F34DECF11D2171A1005495E5 /* SdkAssetCatalog.xcassets */,
F3062B811A418A0E006B57F9 /* ic_vk_ios7_activity_logo.png */,
F3062B821A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x.png */,
F3062B831A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x~ipad.png */,
F3062B841A418A0E006B57F9 /* ic_vk_ios7_activity_logo@3x.png */,
F3062B7F1A4185FD006B57F9 /* ic_vk_ios7_activity_logo~ipad.png */,
F32ADDC81A417C4C009A9FD6 /* ic_vk_activity_logo.png */,
F32ADDC91A417C4C009A9FD6 /* ic_vk_activity_logo@2x.png */,
F32ADDCA1A417C4C009A9FD6 /* ic_vk_activity_logo@2x~ipad.png */,
F32ADDCB1A417C4C009A9FD6 /* ic_vk_activity_logo@3x.png */,
F32ADDCC1A417C4C009A9FD6 /* ic_vk_activity_logo~ipad.png */,
F3A1D1F01A40436A00EFEC74 /* Disclosure.png */,
F3A1D1F11A40436A00EFEC74 /* Disclosure@2x.png */,
F3A1D1F21A40436A00EFEC74 /* Disclosure@3x.png */,
F39A00AF1A3A019A00167AEB /* BlueBtn_pressed.png */,
F39A00B01A3A019A00167AEB /* BlueBtn_pressed@2x.png */,
F39A00B11A3A019A00167AEB /* BlueBtn_pressed@3x.png */,
F39A00B21A3A019A00167AEB /* BlueBtn.png */,
F39A00B31A3A019A00167AEB /* BlueBtn@2x.png */,
F39A00B41A3A019A00167AEB /* BlueBtn@3x.png */,
F36114C31977DC2D0085898F /* ic_deleteattach.png */,
F36114C41977DC2D0085898F /* ic_deleteattach@2x.png */,
F36114C51977DC2D0085898F /* ic_deletephoto.png */,
F36114C61977DC2D0085898F /* ic_deletephoto@2x.png */,
F3BACC5F186883E8003158DA /* ic_vk_logo_nb.png */,
F3BACC60186883E8003158DA /* ic_vk_logo_nb@2x.png */,
F39A00B51A3A019A00167AEB /* ic_vk_logo_nb@3x.png */,
F36114CF1978060F0085898F /* img_newpostattachlink.png */,
F36114D01978060F0085898F /* img_newpostattachlink@2x.png */,
F36114A4197684870085898F /* Localizable.strings */,
F3BACC441865905B003158DA /* Supporting Files */,
F36114AF19768FD70085898F /* vk_settings.png */,
F36114B019768FD70085898F /* vk_settings@2x.png */,
);
name = Resources;
path = library/Resources;
sourceTree = "<group>";
};
F3C58CCE1D213B2C005E94B5 /* VKSdkTests */ = {
F3BACC441865905B003158DA /* Supporting Files */ = {
isa = PBXGroup;
children = (
F3C58CCF1D213B2C005E94B5 /* VKSdkTests.m */,
F3C58CD11D213B2C005E94B5 /* Info.plist */,
F3BACC451865905B003158DA /* Resources-Info.plist */,
F3BACC461865905B003158DA /* InfoPlist.strings */,
);
path = VKSdkTests;
name = "Supporting Files";
sourceTree = "<group>";
};
F3C75424182133CB00964716 = {
@ -703,7 +787,6 @@
F3C75432182133CC00964716 /* VKSdk */,
F3BACC431865905B003158DA /* Resources */,
F34670321B8B7C5A003EF74B /* DynamicFramework */,
F3C58CCE1D213B2C005E94B5 /* VKSdkTests */,
F3C7542F182133CC00964716 /* Frameworks */,
F3C7542E182133CC00964716 /* Products */,
);
@ -715,7 +798,6 @@
F3C7542D182133CC00964716 /* libVKSdk.a */,
F3BACC401865905B003158DA /* VKSdkResources.bundle */,
F34670311B8B7C5A003EF74B /* VKSdkFramework.framework */,
F3C58CCD1D213B2C005E94B5 /* VKSdkTests.xctest */,
);
name = Products;
sourceTree = "<group>";
@ -723,9 +805,6 @@
F3C7542F182133CC00964716 /* Frameworks */ = {
isa = PBXGroup;
children = (
F3C68F161C0C855C00E1EB5E /* Security.framework */,
F3769E701BE8E41C00AEC4AF /* SafariServices.framework */,
F3769E6E1BE8E41800AEC4AF /* CoreGraphics.framework */,
F36114BF1976CEB80085898F /* QuartzCore.framework */,
F3EEFFA81827BB18000BB525 /* UIKit.framework */,
F3C75430182133CC00964716 /* Foundation.framework */,
@ -753,16 +832,14 @@
isa = PBXGroup;
children = (
F3C7549918226ABB00964716 /* VKAccessToken.h */,
F3C7549A18226ABB00964716 /* VKAccessToken.m */,
F3769D3F1BDFDC6F00AEC4AF /* VKAuthorizationResult.h */,
F3769D401BDFDC6F00AEC4AF /* VKAuthorizationResult.m */,
F3D38E7D183F7B4800D05079 /* VKBatchRequest.h */,
F3D38E7E183F7B4800D05079 /* VKBatchRequest.m */,
F3BACC5618659493003158DA /* VKBundle.h */,
F3BACC5718659493003158DA /* VKBundle.m */,
F3EEFFA41827B726000BB525 /* VKPermissions.h */,
F3EEFFA61827B7F1000BB525 /* VKPermissions.m */,
F3EEFFBC1827C582000BB525 /* VKSdkVersion.h */,
F3C7549A18226ABB00964716 /* VKAccessToken.m */,
F3D38E7E183F7B4800D05079 /* VKBatchRequest.m */,
F3BACC5718659493003158DA /* VKBundle.m */,
F3EEFFA61827B7F1000BB525 /* VKPermissions.m */,
);
name = SDK;
sourceTree = "<group>";
@ -792,7 +869,6 @@
F34671171B8B7D07003EF74B /* VKGroup.h in Headers */,
F34671341B8B7D07003EF74B /* VKAuthorizeController.h in Headers */,
F346711B1B8B7D07003EF74B /* VKPhoto.h in Headers */,
8F99D63A1C42C61A0006DB03 /* VKDocs.h in Headers */,
F34671151B8B7D07003EF74B /* VKAudio.h in Headers */,
F34671351B8B7D07003EF74B /* VKCaptchaView.h in Headers */,
F346712F1B8B7D07003EF74B /* VKUploadWallPhotoRequest.h in Headers */,
@ -813,7 +889,6 @@
F34671101B8B7D07003EF74B /* VKResponse.h in Headers */,
F346713E1B8B7D07003EF74B /* VKImageParameters.h in Headers */,
F34670E41B8B7CE4003EF74B /* VKApiCaptcha.h in Headers */,
F3769D411BDFDC6F00AEC4AF /* VKAuthorizationResult.h in Headers */,
F34671271B8B7D07003EF74B /* VKUniversity.h in Headers */,
F34671371B8B7D07003EF74B /* VKShareDialogController.h in Headers */,
F34670F51B8B7D07003EF74B /* VKAccessToken.h in Headers */,
@ -825,10 +900,10 @@
F34671191B8B7D07003EF74B /* VKLikes.h in Headers */,
F34671021B8B7D07003EF74B /* VKHTTPClient.h in Headers */,
F346713C1B8B7D07003EF74B /* NSString+MD5.h in Headers */,
F346713A1B8B7D07003EF74B /* NSData+MD5.h in Headers */,
F34671041B8B7D07003EF74B /* VKHTTPOperation.h in Headers */,
F346710E1B8B7D07003EF74B /* VKRequestsScheduler.h in Headers */,
F346710A1B8B7D07003EF74B /* VKOperation.h in Headers */,
8F99D6351C42C6010006DB03 /* VKApiDocs.h in Headers */,
F34671381B8B7D07003EF74B /* VKSharedTransitioningObject.h in Headers */,
F34671061B8B7D07003EF74B /* VKJSONOperation.h in Headers */,
);
@ -872,25 +947,6 @@
productReference = F3BACC401865905B003158DA /* VKSdkResources.bundle */;
productType = "com.apple.product-type.bundle";
};
F3C58CCC1D213B2C005E94B5 /* VKSdkTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = F3C58CD41D213B2C005E94B5 /* Build configuration list for PBXNativeTarget "VKSdkTests" */;
buildPhases = (
F3DD812F1D219660001E7E63 /* CopyFiles */,
F3C58CC91D213B2C005E94B5 /* Sources */,
F3C58CCA1D213B2C005E94B5 /* Frameworks */,
F3C58CCB1D213B2C005E94B5 /* Resources */,
);
buildRules = (
);
dependencies = (
F3DD81321D2198C8001E7E63 /* PBXTargetDependency */,
);
name = VKSdkTests;
productName = VKSdkTests;
productReference = F3C58CCD1D213B2C005E94B5 /* VKSdkTests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
F3C7542C182133CC00964716 /* VKSdk */ = {
isa = PBXNativeTarget;
buildConfigurationList = F3C75450182133CC00964716 /* Build configuration list for PBXNativeTarget "VKSdk" */;
@ -923,11 +979,8 @@
F34670301B8B7C5A003EF74B = {
CreatedOnToolsVersion = 6.4;
};
F3C58CCC1D213B2C005E94B5 = {
CreatedOnToolsVersion = 8.0;
DevelopmentTeam = R26JY69RPL;
DevelopmentTeamName = VKontakte;
ProvisioningStyle = Automatic;
F37145F61A42EB2900EEBD6D = {
CreatedOnToolsVersion = 6.1.1;
};
};
};
@ -947,8 +1000,8 @@
targets = (
F3C7542C182133CC00964716 /* VKSdk */,
F3BACC3F1865905B003158DA /* VKSdkResources */,
F37145F61A42EB2900EEBD6D /* Framework */,
F34670301B8B7C5A003EF74B /* VKSdkFramework */,
F3C58CCC1D213B2C005E94B5 /* VKSdkTests */,
);
};
/* End PBXProject section */
@ -958,8 +1011,37 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F346704C1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo.png in Resources */,
F346704D1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo@2x.png in Resources */,
F346704E1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo@2x~ipad.png in Resources */,
F346704F1B8B7C8E003EF74B /* ic_vk_ios7_activity_logo@3x.png in Resources */,
F34670501B8B7C8E003EF74B /* ic_vk_ios7_activity_logo~ipad.png in Resources */,
F34670511B8B7C8E003EF74B /* ic_vk_activity_logo.png in Resources */,
F34670521B8B7C8E003EF74B /* ic_vk_activity_logo@2x.png in Resources */,
F34670531B8B7C8E003EF74B /* ic_vk_activity_logo@2x~ipad.png in Resources */,
F34670541B8B7C8E003EF74B /* ic_vk_activity_logo@3x.png in Resources */,
F34670551B8B7C8E003EF74B /* ic_vk_activity_logo~ipad.png in Resources */,
F34670561B8B7C8E003EF74B /* Disclosure.png in Resources */,
F34670571B8B7C8E003EF74B /* Disclosure@2x.png in Resources */,
F34670581B8B7C8E003EF74B /* Disclosure@3x.png in Resources */,
F34670591B8B7C8E003EF74B /* BlueBtn_pressed.png in Resources */,
F346705A1B8B7C8E003EF74B /* BlueBtn_pressed@2x.png in Resources */,
F346705B1B8B7C8E003EF74B /* BlueBtn_pressed@3x.png in Resources */,
F346705C1B8B7C8E003EF74B /* BlueBtn.png in Resources */,
F346705D1B8B7C8E003EF74B /* BlueBtn@2x.png in Resources */,
F346705E1B8B7C8E003EF74B /* BlueBtn@3x.png in Resources */,
F346705F1B8B7C8E003EF74B /* ic_deleteattach.png in Resources */,
F34670601B8B7C8E003EF74B /* ic_deleteattach@2x.png in Resources */,
F34670611B8B7C8E003EF74B /* ic_deletephoto.png in Resources */,
F34670621B8B7C8E003EF74B /* ic_deletephoto@2x.png in Resources */,
F34670631B8B7C8E003EF74B /* ic_vk_logo_nb.png in Resources */,
F34670641B8B7C8E003EF74B /* ic_vk_logo_nb@2x.png in Resources */,
F34670651B8B7C8E003EF74B /* ic_vk_logo_nb@3x.png in Resources */,
F34670661B8B7C8E003EF74B /* img_newpostattachlink.png in Resources */,
F34670671B8B7C8E003EF74B /* img_newpostattachlink@2x.png in Resources */,
F34670681B8B7C8E003EF74B /* Localizable.strings in Resources */,
F34DECF61D2171E3005495E5 /* SdkAssetCatalog.xcassets in Resources */,
F34670691B8B7C8E003EF74B /* vk_settings.png in Resources */,
F346706A1B8B7C8E003EF74B /* vk_settings@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -967,15 +1049,38 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F34DECF71D217260005495E5 /* SdkAssetCatalog.xcassets in Resources */,
F36114D21978060F0085898F /* img_newpostattachlink@2x.png in Resources */,
F39A00BB1A3A019A00167AEB /* BlueBtn@3x.png in Resources */,
F36114B319768FDD0085898F /* vk_settings.png in Resources */,
F36114CA1977DC2D0085898F /* ic_deletephoto@2x.png in Resources */,
F3062B851A418A0E006B57F9 /* ic_vk_ios7_activity_logo.png in Resources */,
F3A1D1F51A40436A00EFEC74 /* Disclosure@3x.png in Resources */,
F3062B881A418A0E006B57F9 /* ic_vk_ios7_activity_logo@3x.png in Resources */,
F3A1D1F41A40436A00EFEC74 /* Disclosure@2x.png in Resources */,
F39A00BA1A3A019A00167AEB /* BlueBtn@2x.png in Resources */,
F3062B801A4185FF006B57F9 /* ic_vk_ios7_activity_logo~ipad.png in Resources */,
F3062B861A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x.png in Resources */,
F32ADDCE1A417CE9009A9FD6 /* ic_vk_activity_logo@2x.png in Resources */,
F39A00BC1A3A019A00167AEB /* ic_vk_logo_nb@3x.png in Resources */,
F36114B419768FDD0085898F /* vk_settings@2x.png in Resources */,
F32ADDD01A417CE9009A9FD6 /* ic_vk_activity_logo@3x.png in Resources */,
F3A1D1F31A40436A00EFEC74 /* Disclosure.png in Resources */,
F36114A9197685810085898F /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F3C58CCB1D213B2C005E94B5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F39A00B61A3A019A00167AEB /* BlueBtn_pressed.png in Resources */,
F3BACC62186883E8003158DA /* ic_vk_logo_nb@2x.png in Resources */,
F32ADDCF1A417CE9009A9FD6 /* ic_vk_activity_logo@2x~ipad.png in Resources */,
F3BACC481865905B003158DA /* InfoPlist.strings in Resources */,
F36114C71977DC2D0085898F /* ic_deleteattach.png in Resources */,
F36114D11978060F0085898F /* img_newpostattachlink.png in Resources */,
F39A00B91A3A019A00167AEB /* BlueBtn.png in Resources */,
F32ADDCD1A417CE9009A9FD6 /* ic_vk_activity_logo.png in Resources */,
F3BACC61186883E8003158DA /* ic_vk_logo_nb.png in Resources */,
F39A00B71A3A019A00167AEB /* BlueBtn_pressed@2x.png in Resources */,
F36114C91977DC2D0085898F /* ic_deletephoto.png in Resources */,
F39A00B81A3A019A00167AEB /* BlueBtn_pressed@3x.png in Resources */,
F36114C81977DC2D0085898F /* ic_deleteattach@2x.png in Resources */,
F32ADDD11A417CE9009A9FD6 /* ic_vk_activity_logo~ipad.png in Resources */,
F3062B871A418A0E006B57F9 /* ic_vk_ios7_activity_logo@2x~ipad.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -996,6 +1101,21 @@
shellPath = /bin/sh;
shellScript = "set -e\n\nif [ ${DEPLOYMENT_LOCATION} == \"YES\" ]; then\n echo \"Deploying, exit\"\n exit 0\nfi\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\necho \"Framework built successfully\"";
};
F37145FC1A42EB4700EEBD6D /* MultiPlatform Build */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "MultiPlatform Build";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\n\n# If we're already inside this script then die\nif [ -n \"$RW_MULTIPLATFORM_BUILD_IN_PROGRESS\" ]; then\nexit 0\nfi\nexport RW_MULTIPLATFORM_BUILD_IN_PROGRESS=1\n\nRW_FRAMEWORK_NAME=\"VKSdk\"\nRW_INPUT_STATIC_LIB=\"libVKSdk.a\"\nRW_FRAMEWORK_LOCATION=\"${BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework\"\nRW_BUNDLE_NAME=\"VKSdkResources\"\n\nfunction build_static_library {\n # Will rebuild the static library as specified\n # build_static_library sdk\n xcrun xcodebuild -project \"${PROJECT_FILE_PATH}\" \\\n -target \"${TARGET_NAME}\" \\\n -configuration \"${CONFIGURATION}\" \\\n -sdk \"${1}\" \\\n ONLY_ACTIVE_ARCH=NO \\\n BUILD_DIR=\"${BUILD_DIR}\" \\\n OBJROOT=\"${OBJROOT}\" \\\n BUILD_ROOT=\"${BUILD_ROOT}\" \\\n SYMROOT=\"${SYMROOT}\" $ACTION\n}\n\nfunction make_fat_library {\n # Will smash 2 static libs together\n # make_fat_library in1 in2 out\n xcrun lipo -create \"${1}\" \"${2}\" -output \"${3}\"\n}\n\n# 1 - Extract the platform (iphoneos/iphonesimulator) from the SDK name\nif [[ \"$SDK_NAME\" =~ ([A-Za-z]+) ]]; then\nRW_SDK_PLATFORM=${BASH_REMATCH[1]}\nelse\necho \"Could not find platform name from SDK_NAME: $SDK_NAME\"\nexit 1\nfi\n\n# 2 - Extract the version from the SDK\nif [[ \"$SDK_NAME\" =~ ([0-9]+.*$) ]]; then\nRW_SDK_VERSION=${BASH_REMATCH[1]}\nelse\necho \"Could not find sdk version from SDK_NAME: $SDK_NAME\"\nexit 1\nfi\n\n# 3 - Determine the other platform\nif [ \"$RW_SDK_PLATFORM\" == \"iphoneos\" ]; then\nRW_OTHER_PLATFORM=iphonesimulator\nelse\nRW_OTHER_PLATFORM=iphoneos\nfi\n\n# 4 - Find the build directory\nif [[ \"$BUILT_PRODUCTS_DIR\" =~ (.*)$RW_SDK_PLATFORM$ ]]; then\nRW_OTHER_BUILT_PRODUCTS_DIR=\"${BASH_REMATCH[1]}${RW_OTHER_PLATFORM}\"\nelse\necho \"Could not find other platform build directory.\"\nexit 1\nfi\n\n# Build the other platform.\nbuild_static_library \"${RW_OTHER_PLATFORM}${RW_SDK_VERSION}\"\n\n# If we're currently building for iphonesimulator, then need to rebuild\n# to ensure that we get both i386 and x86_64\nif [ \"$RW_SDK_PLATFORM\" == \"iphonesimulator\" ]; then\nbuild_static_library \"${SDK_NAME}\"\nfi\n\n# Join the 2 static libs into 1 and push into the .framework\nmake_fat_library \"${BUILT_PRODUCTS_DIR}/${RW_INPUT_STATIC_LIB}\" \\\n\"${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_INPUT_STATIC_LIB}\" \\\n\"${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}\"\n\ncp -a \"${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}\" \\\n\"${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework/Versions/A/${RW_FRAMEWORK_NAME}\"\n\n# Copy the framework to the user's desktop\nditto \"${RW_FRAMEWORK_LOCATION}\" \"${SRCROOT}/${RW_FRAMEWORK_NAME}.framework\"\n\nditto \"${BUILT_PRODUCTS_DIR}/${RW_BUNDLE_NAME}.bundle\" \"${SRCROOT}/${RW_BUNDLE_NAME}.bundle\"";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -1003,7 +1123,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8F99D63C1C42C61A0006DB03 /* VKDocs.m in Sources */,
F34671051B8B7D07003EF74B /* VKHTTPOperation.m in Sources */,
F34670E01B8B7CD9003EF74B /* VKSharedTransitioningObject.m in Sources */,
F34670D51B8B7CC7003EF74B /* VKImageParameters.m in Sources */,
@ -1016,7 +1135,6 @@
F34670DB1B8B7CD9003EF74B /* VKActivity.m in Sources */,
F34671241B8B7D07003EF74B /* VKApiObject.m in Sources */,
F34671031B8B7D07003EF74B /* VKHTTPClient.m in Sources */,
F3769D431BDFDC6F00AEC4AF /* VKAuthorizationResult.m in Sources */,
F34670E11B8B7CDE003EF74B /* VKApi.m in Sources */,
F34670DC1B8B7CD9003EF74B /* VKAuthorizeController.m in Sources */,
F34671321B8B7D07003EF74B /* VKUploadMessagesPhotoRequest.m in Sources */,
@ -1028,7 +1146,6 @@
F34671281B8B7D07003EF74B /* VKUniversity.m in Sources */,
F34670F21B8B7CE4003EF74B /* VKApiWall.m in Sources */,
F34670FC1B8B7D07003EF74B /* VKBundle.m in Sources */,
8F99D6371C42C6010006DB03 /* VKApiDocs.m in Sources */,
F34671261B8B7D07003EF74B /* VKPhotoSize.m in Sources */,
F346712E1B8B7D07003EF74B /* VKUploadPhotoRequest.m in Sources */,
F34670FA1B8B7D07003EF74B /* VKAccessToken.m in Sources */,
@ -1055,6 +1172,7 @@
F346710F1B8B7D07003EF74B /* VKRequestsScheduler.m in Sources */,
F34670F41B8B7D07003EF74B /* VKSdk.m in Sources */,
F34671091B8B7D07003EF74B /* VKObject.m in Sources */,
F34670D91B8B7CD2003EF74B /* NSData+MD5.m in Sources */,
F346712A1B8B7D07003EF74B /* VKApiObjectArray.m in Sources */,
F34670E51B8B7CE4003EF74B /* VKApiCaptcha.m in Sources */,
);
@ -1067,19 +1185,10 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
F3C58CC91D213B2C005E94B5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F3C58CD01D213B2C005E94B5 /* VKSdkTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F3C75429182133CC00964716 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8F99D63B1C42C61A0006DB03 /* VKDocs.m in Sources */,
F3DA65B11B3DA34600E64A30 /* VKJSONOperation.m in Sources */,
183C475B18B2F1ED00F978DB /* VKBundle.m in Sources */,
183C475A18B2F1ED00F978DB /* VKBatchRequest.m in Sources */,
@ -1092,7 +1201,6 @@
1ACA6227186398789D76C4ED /* VKHTTPClient.m in Sources */,
1ACA61E9A3EB0BD49B9EFAB8 /* VKError.m in Sources */,
1ACA6DF69C81F31A23FFAD31 /* VKResponse.m in Sources */,
F3769D421BDFDC6F00AEC4AF /* VKAuthorizationResult.m in Sources */,
1ACA6AD5392AA08C69341D2B /* VKOperation.m in Sources */,
1ACA6E680DE6950E435D84D6 /* VKObject.m in Sources */,
1ACA696D77203A8BB76E975F /* VKApi.m in Sources */,
@ -1103,7 +1211,7 @@
1ACA6F8C335233B3D05A0F49 /* VKActivity.m in Sources */,
1ACA664E3EC08CC26D0E2340 /* VKUtil.m in Sources */,
1ACA60B9FC0180221C536C9A /* NSString+MD5.m in Sources */,
8F99D6361C42C6010006DB03 /* VKApiDocs.m in Sources */,
1ACA66450BE336D6F5AD4683 /* NSData+MD5.m in Sources */,
1ACA6C11956AB22CAA341CB1 /* OrderedDictionary.m in Sources */,
1ACA656AD2A705875E2C86DC /* VKApiBase.m in Sources */,
1ACA66EB5F29CF88789B1D5F /* VKApiWall.m in Sources */,
@ -1139,15 +1247,20 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
F340187C1AC1D36C006CCEE0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F3C7542C182133CC00964716 /* VKSdk */;
targetProxy = F340187B1AC1D36C006CCEE0 /* PBXContainerItemProxy */;
};
F34670271B8B7A59003EF74B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F3BACC3F1865905B003158DA /* VKSdkResources */;
targetProxy = F34670261B8B7A59003EF74B /* PBXContainerItemProxy */;
};
F3DD81321D2198C8001E7E63 /* PBXTargetDependency */ = {
F37146011A42F06E00EEBD6D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F3C7542C182133CC00964716 /* VKSdk */;
targetProxy = F3DD81311D2198C8001E7E63 /* PBXContainerItemProxy */;
target = F3BACC3F1865905B003158DA /* VKSdkResources */;
targetProxy = F37146001A42F06E00EEBD6D /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@ -1161,13 +1274,20 @@
name = Localizable.strings;
sourceTree = "<group>";
};
F3BACC461865905B003158DA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
F3BACC471865905B003158DA /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
F34670441B8B7C5A003EF74B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = NO;
CLANG_WARN_UNREACHABLE_CODE = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
@ -1200,7 +1320,6 @@
F34670451B8B7C5A003EF74B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = NO;
CLANG_WARN_UNREACHABLE_CODE = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
@ -1227,14 +1346,30 @@
};
name = Release;
};
F37145F81A42EB2900EEBD6D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ONLY_ACTIVE_ARCH = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
VALID_ARCHS = "arm64 armv7 armv7s x86_64 i386";
};
name = Debug;
};
F37145F91A42EB2900EEBD6D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ONLY_ACTIVE_ARCH = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
VALID_ARCHS = "arm64 armv7 armv7s x86_64 i386";
};
name = Release;
};
F3BACC4B1865905B003158DA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = NO;
COMBINE_HIDPI_IMAGES = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "SDK resources/SDK resources-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
@ -1254,11 +1389,10 @@
F3BACC4C1865905B003158DA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = NO;
COMBINE_HIDPI_IMAGES = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "SDK resources/SDK resources-Prefix.pch";
INFOPLIST_FILE = "library/Resources/Resources-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
@ -1271,51 +1405,6 @@
};
name = Release;
};
F3C58CD21D213B2C005E94B5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
INFOPLIST_FILE = VKSdkTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = ru.truba.VKSdkTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
};
name = Debug;
};
F3C58CD31D213B2C005E94B5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
INFOPLIST_FILE = VKSdkTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = ru.truba.VKSdkTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
};
name = Release;
};
F3C7544E182133CC00964716 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -1389,16 +1478,14 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
CLANG_ENABLE_MODULES = NO;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = NO;
DSTROOT = /tmp/sdk.dst;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
INSTALL_PATH = /;
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
OTHER_LDFLAGS = "-ObjC";
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
PRIVATE_HEADERS_FOLDER_PATH = "$(PUBLIC_HEADERS_FOLDER_PATH)/Private";
PRODUCT_NAME = "$(TARGET_NAME)";
PUBLIC_HEADERS_FOLDER_PATH = "include/$(TARGET_NAME)";
@ -1412,15 +1499,13 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
CLANG_ENABLE_MODULES = NO;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = NO;
DSTROOT = /tmp/sdk.dst;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
INSTALL_PATH = /;
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
OTHER_LDFLAGS = "-ObjC";
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
PRIVATE_HEADERS_FOLDER_PATH = "$(PUBLIC_HEADERS_FOLDER_PATH)/Private";
PRODUCT_NAME = "$(TARGET_NAME)";
PUBLIC_HEADERS_FOLDER_PATH = "include/$(TARGET_NAME)";
@ -1442,6 +1527,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F37145F71A42EB2900EEBD6D /* Build configuration list for PBXAggregateTarget "Framework" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F37145F81A42EB2900EEBD6D /* Debug */,
F37145F91A42EB2900EEBD6D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F3BACC4A1865905B003158DA /* Build configuration list for PBXNativeTarget "VKSdkResources" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@ -1451,15 +1545,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F3C58CD41D213B2C005E94B5 /* Build configuration list for PBXNativeTarget "VKSdkTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F3C58CD21D213B2C005E94B5 /* Debug */,
F3C58CD31D213B2C005E94B5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F3C75428182133CB00964716 /* Build configuration list for PBXProject "VK-ios-sdk" */ = {
isa = XCConfigurationList;
buildConfigurations = (

0
VK-ios-sdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata generated Executable file → Normal file
View File

View File

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0720"
LastUpgradeVersion = "0700"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -28,26 +28,7 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C58CCC1D213B2C005E94B5"
BuildableName = "VKSdkTests.xctest"
BlueprintName = "VKSdkTests"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F34670301B8B7C5A003EF74B"
BuildableName = "VKSdkFramework.framework"
BlueprintName = "VKSdkFramework"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>

View File

@ -1,99 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0720"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C7542C182133CC00964716"
BuildableName = "libVKSdk.a"
BlueprintName = "VKSdk"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C58CCC1D213B2C005E94B5"
BuildableName = "VKSdkTests.xctest"
BlueprintName = "VKSdkTests"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C7542C182133CC00964716"
BuildableName = "libVKSdk.a"
BlueprintName = "VKSdk"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C7542C182133CC00964716"
BuildableName = "libVKSdk.a"
BlueprintName = "VKSdk"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C7542C182133CC00964716"
BuildableName = "libVKSdk.a"
BlueprintName = "VKSdk"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0800"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3C58CCC1D213B2C005E94B5"
BuildableName = "VKSdkTests.xctest"
BlueprintName = "VKSdkTests"
ReferencedContainer = "container:VK-ios-sdk.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F3EEFF651827B1DD000BB525"
BuildableName = "VKSDKTestApplication.app"
BlueprintName = "VKSDKTestApplication"
ReferencedContainer = "container:example/VKSDKTestApplication.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

3
VK-ios-sdk.xcworkspace/contents.xcworkspacedata generated Executable file → Normal file
View File

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:VK-ios-sdk.xcodeproj">
</FileRef>
<FileRef
location = "group:example/VKSDKTestApplication.xcodeproj">
</FileRef>

View File

1
VKSdk.framework/Headers Symbolic link
View File

@ -0,0 +1 @@
Versions/Current/Headers

1
VKSdk.framework/VKSdk Symbolic link
View File

@ -0,0 +1 @@
Versions/Current/VKSdk

View File

@ -0,0 +1,51 @@
//
// NSError+VKError.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKError.h"
extern NSString *const VKSdkErrorDomain;
extern NSString *const VkErrorDescriptionKey;
/**
* Category with implementation of VK error
*/
@interface NSError (VKError)
/// Returns vk error associated with that NSError
@property(nonatomic, readonly) VKError *vkError;
/**
Create new NSError with VKError
@param vkError Source error
@return New error with VKSdkErrorDomain domain
*/
+ (NSError *)errorWithVkError:(VKError *)vkError;
/**
Copies user info from this NSError into new error, with adding VKError
@param vkError Source error
@return New error with this error domain, code and user info
*/
- (NSError *)copyWithVkError:(VKError *)vkError;
@end

View File

@ -0,0 +1,104 @@
//
// VKAccessToken.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// --------------------------------------------------------------------------------
//
// Modified by Ruslan Kavetsky
#import <Foundation/Foundation.h>
#import "VKObject.h"
/**
Presents VK API access token that used for loading API methods and other stuff.
*/
@interface VKAccessToken : VKObject
/// String token for use in request parameters
@property(nonatomic, readonly) NSString *accessToken;
/// Time when token expires
@property(nonatomic, strong) NSString *expiresIn;
/// Current user id for this token
@property(nonatomic, strong) NSString *userId;
/// User secret to sign requests (if nohttps used)
@property(nonatomic, strong) NSString *secret;
/// If user sets "Always use HTTPS" setting in his profile, it will be true
@property(nonatomic, assign) BOOL httpsRequired;
/// Indicates time of token creation
@property(nonatomic, assign) NSTimeInterval created;
/// Return YES if token has expired
@property(nonatomic, assign) BOOL isExpired;
// Permisiions assosiated with token
@property(nonatomic, strong) NSArray *permissions;
// User email (if passed)
@property(nonatomic, readwrite, copy) NSString *email;
/**
Retrieve token from key-value query string
@param urlString string that contains URL-query part with token. E.g. access_token=ffffff&expires_in=0...
@return parsed token
*/
+ (instancetype)tokenFromUrlString:(NSString *)urlString;
/**
Create token with existing properties
@param accessToken token string
@param secret secret
@param userId user id
@return new token
*/
+ (instancetype)tokenWithToken:(NSString *)accessToken secret:(NSString *)secret userId:(NSString *)userId;
/**
Retrieve token from file. Token must be saved into file with saveTokenToFile method
@param filePath path to file with saved token
@return parsed token
*/
+ (instancetype)tokenFromFile:(NSString *)filePath;
/**
Retrieve token from user defaults. Token must be saved to defaults with saveTokenToDefaults method
@param defaultsKey path to file with saved token
@return parsed token
*/
+ (instancetype)tokenFromDefaults:(NSString *)defaultsKey;
/**
Save token into specified file
@param filePath path to file with saved token
*/
- (void)saveTokenToFile:(NSString *)filePath;
/**
Save token into user defaults by specified key
@param defaultsKey key for defaults
*/
- (void)saveTokenToDefaults:(NSString *)defaultsKey;
@end

View File

@ -1,7 +1,7 @@
//
// VKAuthorizationResult.m
// VKActivity.h
//
// Copyright (c) 2015 VK.com
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
@ -20,20 +20,13 @@
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKAuthorizationResult.h"
#import <UIKit/UIKit.h>
@interface VKAuthorizationResult ()
@property(nonatomic, readwrite, strong) VKAccessToken *token;
@property(nonatomic, readwrite, strong) VKUser *user;
@property(nonatomic, readwrite, strong) NSError *error;
@property(nonatomic, readwrite, assign) VKAuthorizationState state;
@end
extern NSString *const VKActivityTypePost;
@implementation VKAuthorizationResult
/**
* Class for sharing in VK throught UIActivityController
*/
@interface VKActivity : UIActivity
@end
@implementation VKMutableAuthorizationResult
@dynamic token, user, error, state;
@end

View File

@ -0,0 +1,115 @@
//
// VKApi.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKRequest.h"
#import "VKApiUsers.h"
#import "VKApiFriends.h"
#import "VKApiPhotos.h"
#import "VKApiWall.h"
#import "VKApiConst.h"
#import "VKApiCaptcha.h"
#import "VKApiGroups.h"
#import "VKImageParameters.h"
#import "VKApiModels.h"
/**
Provides access for API parts.
*/
@interface VKApi : NSObject
/**
https://vk.com/dev/users
Returns object for preparing requests to users part of API
*/
+ (VKApiUsers *)users;
/**
https://vk.com/dev/wall
Returns object for preparing requests to wall part of API
*/
+ (VKApiWall *)wall;
/**
https://vk.com/dev/photos
Returns object for preparing requests to photos part of API
*/
+ (VKApiPhotos *)photos;
/**
https://vk.com/dev/friends
Returns object for preparing requests to friends part of API
*/
+ (VKApiFriends *)friends;
/**
https://vk.com/dev/friends
Returns object for preparing requests to groups part of API
*/
+ (VKApiGroups *)groups;
/**
Create new request with parameters. See documentation for methods here https://vk.com/dev/methods
@param method API-method name, e.g. audio.get
@param parameters method parameters
@param httpMethod HTTP method for execution, e.g. GET, POST
@return Complete request class for execute or configure method
*/
+ (VKRequest *)requestWithMethod:(NSString *)method
andParameters:(NSDictionary *)parameters
andHttpMethod:(NSString *)httpMethod;
/**
Uploads photo for wall post
@param image image used for saving to post
@param parameters parameters for image to be uploaded
@param userId ID of user on which wall image should be posted (or nil)
@param groupId ID of group (without minus sign) on which wall image should be posted (or nil)
*/
+ (VKRequest *)uploadWallPhotoRequest:(UIImage *)image
parameters:(VKImageParameters *)parameters
userId:(NSInteger)userId
groupId:(NSInteger)groupId;
/**
Uploads photo in user or group album
@param image image used for saving to post
@param parameters parameters for image to be uploaded
@param albumId target album ID. Required
@param groupId target group ID (positive). May be nil
*/
+ (VKRequest *)uploadAlbumPhotoRequest:(UIImage *)image
parameters:(VKImageParameters *)parameters
albumId:(NSInteger)albumId
groupId:(NSInteger)groupId;
/**
Uploads photo for messaging
@param image image used for saving to post
@param parameters parameters for image to be uploaded
@param albumId target album ID. Required
@param groupId target group ID (positive). May be nil
*/
+ (VKRequest *)uploadMessagePhotoRequest:(UIImage *)image
parameters:(VKImageParameters *)parameters;
@end

View File

@ -0,0 +1,73 @@
//
// VKApiBase.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKRequest.h"
#import "VKApiConst.h"
#import "VKObject.h"
/**
* Basic class for all API-requests builders (parts)
*/
@interface VKApiBase : VKObject {
@private
NSString *_methodGroup; ///< Selected methods group
}
/**
Return group name for current methods builder
@return name of methods group, e.g. users, wall, etc.
*/
- (NSString *)getMethodGroup;
/**
Builds request and return it for configure and loading
@param methodName Selected method name
@param methodParameters Selected method parameters
@return request to configure and load
*/
- (VKRequest *)prepareRequestWithMethodName:(NSString *)methodName
andParameters:(NSDictionary *)methodParameters;
/**
Builds request and return it for configure and loading
@param methodName Selected method name
@param methodParameters Selected method parameters
@param httpMethod HTTP method for loading request. E.g. GET or POST
@return request to configure and load
*/
- (VKRequest *)prepareRequestWithMethodName:(NSString *)methodName
andParameters:(NSDictionary *)methodParameters
andHttpMethod:(NSString *)httpMethod;
/**
Builds request and return it for configure and loading
@param methodName Selected method name
@param methodParameters Selected method parameters
@param httpMethod HTTP method for loading request. E.g. GET or POST
@param modelClass Class of model, based on VKApiObject, for model parsing
@return request to configure and load
*/
- (VKRequest *)prepareRequestWithMethodName:(NSString *)methodName
andParameters:(NSDictionary *)methodParameters
andHttpMethod:(NSString *)httpMethod
andClassOfModel:(Class)modelClass;
@end

View File

@ -0,0 +1,34 @@
//
// VKApiCaptcha.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiBase.h"
/**
Methods for captcha work. Currently, it is 1 method for forcing captcha response
*/
@interface VKApiCaptcha : VKApiBase
/**
Returns error for captcha debugging
@return Request to load
*/
- (VKRequest *)force;
@end

View File

@ -0,0 +1,116 @@
//
// VKApiConst.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
typedef NSString *VKDisplayType;
extern VKDisplayType const VK_DISPLAY_IOS;
extern VKDisplayType const VK_DISPLAY_MOBILE;
//Commons
extern NSString *const VK_ORIGINAL_CLIENT_BUNDLE;
extern NSString *const VK_ORIGINAL_HD_CLIENT_BUNDLE;
extern NSString *const VK_DEBUG_CLIENT_BUNDLE;
extern NSString *const VK_API_USER_ID;
extern NSString *const VK_API_USER_IDS;
extern NSString *const VK_API_FIELDS;
extern NSString *const VK_API_SORT;
extern NSString *const VK_API_OFFSET;
extern NSString *const VK_API_COUNT;
extern NSString *const VK_API_OWNER_ID;
//auth
extern NSString *const VK_API_LANG;
extern NSString *const VK_API_ACCESS_TOKEN;
extern NSString *const VK_API_SIG;
//get users
extern NSString *const VK_API_NAME_CASE;
extern NSString *const VK_API_ORDER;
//Get subscriptions
extern NSString *const VK_API_EXTENDED;
//Search
extern NSString *const VK_API_Q;
extern NSString *const VK_API_CITY;
extern NSString *const VK_API_COUNTRY;
extern NSString *const VK_API_HOMETOWN;
extern NSString *const VK_API_UNIVERSITY_COUNTRY;
extern NSString *const VK_API_UNIVERSITY;
extern NSString *const VK_API_UNIVERSITY_YEAR;
extern NSString *const VK_API_SEX;
extern NSString *const VK_API_STATUS;
extern NSString *const VK_API_AGE_FROM;
extern NSString *const VK_API_AGE_TO;
extern NSString *const VK_API_BIRTH_DAY;
extern NSString *const VK_API_BIRTH_MONTH;
extern NSString *const VK_API_BIRTH_YEAR;
extern NSString *const VK_API_ONLINE;
extern NSString *const VK_API_HAS_PHOTO;
extern NSString *const VK_API_SCHOOL_COUNTRY;
extern NSString *const VK_API_SCHOOL_CITY;
extern NSString *const VK_API_SCHOOL;
extern NSString *const VK_API_SCHOOL_YEAR;
extern NSString *const VK_API_RELIGION;
extern NSString *const VK_API_INTERESTS;
extern NSString *const VK_API_COMPANY;
extern NSString *const VK_API_POSITION;
extern NSString *const VK_API_GROUP_ID;
extern NSString *const VK_API_GROUP_IDS;
extern NSString *const VK_API_FRIENDS_ONLY;
extern NSString *const VK_API_FROM_GROUP;
extern NSString *const VK_API_MESSAGE;
extern NSString *const VK_API_ATTACHMENT;
extern NSString *const VK_API_ATTACHMENTS;
extern NSString *const VK_API_SERVICES;
extern NSString *const VK_API_SIGNED;
extern NSString *const VK_API_PUBLISH_DATE;
extern NSString *const VK_API_LAT;
extern NSString *const VK_API_LONG;
extern NSString *const VK_API_PLACE_ID;
extern NSString *const VK_API_POST_ID;
//Errors
extern NSString *const VK_API_ERROR_CODE;
extern NSString *const VK_API_ERROR_MSG;
extern NSString *const VK_API_ERROR_TEXT;
extern NSString *const VK_API_REQUEST_PARAMS;
//Captcha
extern NSString *const VK_API_CAPTCHA_IMG;
extern NSString *const VK_API_CAPTCHA_SID;
extern NSString *const VK_API_CAPTCHA_KEY;
extern NSString *const VK_API_REDIRECT_URI;
//Photos
extern NSString *const VK_API_PHOTO;
extern NSString *const VK_API_ALBUM_ID;
//Events
extern NSString *const VKCaptchaAnsweredEvent;
//Enums
typedef NS_ENUM(NSInteger, VKProgressType) {
VKProgressTypeUpload,
VKProgressTypeDownload
};

View File

@ -0,0 +1,32 @@
//
// VKApiFriends.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiBase.h"
/**
Builds requests for API.users part
*/
@interface VKApiFriends : VKApiBase
- (VKRequest *)get;
- (VKRequest *)get:(NSDictionary *)params;
@end

View File

@ -0,0 +1,18 @@
//
// VKApiGroups.h
// sdk
//
// Created by Roman Truba on 16.07.14.
// Copyright (c) 2014 VK. All rights reserved.
//
#import "VKApiBase.h"
@interface VKApiGroups : VKApiBase
/**
https://vk.com/dev/groups.get
@param params use parameters from description with VK_API prefix, e.g. VK_API_GROUP_ID, VK_API_FIELDS
@return Request for load
*/
- (VKRequest *)getById:(NSDictionary *)params;
@end

View File

@ -0,0 +1,33 @@
//
// VKApiModels.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObjectArray.h"
#import "VKAudio.h"
#import "VKPhoto.h"
#import "VKLikes.h"
#import "VKUser.h"
#import "VKRelative.h"
#import "VKCounters.h"
#import "VKLikes.h"
#import "VKSchool.h"
#import "VKUniversity.h"
#import "VKGroup.h"

View File

@ -0,0 +1,65 @@
//
// VKApiObject.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <objc/runtime.h>
#import "VKObject.h"
/**
Helps in objects parsing
*/
@interface VKPropertyHelper : VKObject
@property(nonatomic, readonly) NSString *propertyName;
@property(nonatomic, readonly) NSString *propertyClassName;
@property(nonatomic, readonly) Class propertyClass;
@property(nonatomic, readonly) BOOL isPrimitive;
@property(nonatomic, readonly) BOOL isModelsArray;
@property(nonatomic, readonly) BOOL isModel;
- (instancetype)initWith:(objc_property_t)prop;
@end
@protocol VKApiObject <NSObject>
+ (instancetype)createWithDictionary:(NSDictionary *)dict;
+ (instancetype)createWithArray:(NSArray *)array;
@end
/**
Basic class for API objects
*/
@interface VKApiObject : VKObject <VKApiObject>
/// If it possible, contains object fields from JSON as it is
@property(nonatomic, strong) NSDictionary *fields;
/**
Initialize object with API json dictionary. This method tries to set all known properties of current class from dictionare
@param dict API json dictionary
@return Initialized object
*/
- (instancetype)initWithDictionary:(NSDictionary *)dict;
/**
Serialize current object into dictionary
@return Key-value dictionary, contains current object
*/
- (NSDictionary *)serialize;
@end

View File

@ -0,0 +1,80 @@
//
// VKApiObjectArray.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObject.h"
/**
Base class for VK API arrays
*/
@interface VKApiObjectArray : VKApiObject <NSFastEnumeration>
/// Count of items in array
@property(nonatomic, readonly) NSUInteger count;
/// Parsed array items
@property(nonatomic, strong) NSMutableArray *items;
/**
Initialize object with API json dictionary. This method tries to set all known properties of current class from dictionary
@param dict API json dictionary
@param objectClass class of items inside of array
@return Initialized object
*/
- (instancetype)initWithDictionary:(NSDictionary *)dict objectClass:(Class)objectClass;
/**
Initialize object with API json array. This method tries to set all known properties of current class from array
@param array API json array
@param objectClass class of items inside of array
@return Initialized object
*/
- (instancetype)initWithArray:(NSArray *)array objectClass:(Class)objectClass;
/**
Initialize object with any array. items property is sets as passed array, count is a count of items in passed array
@param array API json array
@return Initialized object
*/
- (instancetype)initWithArray:(NSArray *)array;
/// Array funtions
- (id)objectAtIndex:(NSInteger)idx;
- (id)objectAtIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0);
- (NSEnumerator *)objectEnumerator;
- (NSEnumerator *)reverseObjectEnumerator;
- (void)addObject:(id)object;
- (void)removeObject:(id)object;
- (void)insertObject:(id)object atIndex:(NSUInteger)index;
- (id)firstObject;
- (id)lastObject;
- (void)serializeTo:(NSMutableDictionary *)dict withName:(NSString *)name;
- (Class)objectClass;
@end

View File

@ -0,0 +1,72 @@
//
// VKApiPhotos.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiBase.h"
/**
Builds requests for API.photos part
*/
@interface VKApiPhotos : VKApiBase
/**
https://vk.com/dev/photos.getUploadServer
@param albumId album identifier (positive integer)
@return Request for load
*/
- (VKRequest *)getUploadServer:(NSInteger)albumId;
/**
https://vk.com/dev/photos.getUploadServer
@param albumId album identifier (positive integer)
@param groupId group identifier (positive integer)
@return Request for load
*/
- (VKRequest *)getUploadServer:(NSInteger)albumId andGroupId:(NSInteger)groupId;
/**
https://vk.com/dev/photos.getWallUploadServer
@return Request for load
*/
- (VKRequest *)getWallUploadServer;
/**
https://vk.com/dev/photos.getWallUploadServer
@param groupId group identifier (positive integer)
@return Request for load
*/
- (VKRequest *)getWallUploadServer:(NSInteger)groupId;
/**
https://vk.com/dev/photos.save
@param params params received after photo upload, with user id or group id
@return Request for load
*/
- (VKRequest *)save:(NSDictionary *)params;
/**
https://vk.com/dev/photos.saveWallPhoto
@param params params received after photo upload, with user id or group id
@return Request for load
*/
- (VKRequest *)saveWallPhoto:(NSDictionary *)params;
@end

View File

@ -0,0 +1,87 @@
//
// VKApiUsers.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiBase.h"
/**
Builds requests for API.users part
*/
@interface VKApiUsers : VKApiBase
/**
Returns basic information about current user
@return Request for load
*/
- (VKRequest *)get;
/**
https://vk.com/dev/users.get
@param params use parameters from description with VK_API prefix, e.g. VK_API_USER_IDS, VK_API_FIELDS, VK_API_NAME_CASE
@return Request for load
*/
- (VKRequest *)get:(NSDictionary *)params;
/**
https://vk.com/dev/users.search
@param params use parameters from description with VK_API prefix, e.g. VK_API_Q, VK_API_CITY, VK_API_COUNTRY, etc.
@return Request for load
*/
- (VKRequest *)search:(NSDictionary *)params;
/**
https://vk.com/dev/users.isAppUser
@return Request for load
*/
- (VKRequest *)isAppUser;
/**
https://vk.com/dev/users.isAppUser
@param userID ID of user to check
@return Request for load
*/
- (VKRequest *)isAppUser:(NSInteger)userID;
/**
https://vk.com/dev/users.getSubscriptions
@return Request for load
*/
- (VKRequest *)getSubscriptions;
/**
https://vk.com/dev/users.getSubscriptions
@param params use parameters from description with VK_API prefix, e.g. VK_API_USER_ID, VK_API_EXTENDED, etc.
@return Request for load
*/
- (VKRequest *)getSubscriptions:(NSDictionary *)params;
/**
https://vk.com/dev/users.getFollowers
@return Request for load
*/
- (VKRequest *)getFollowers;
/**
https://vk.com/dev/users.getFollowers
@param params use parameters from description with VK_API prefix, e.g. VK_API_USER_ID, VK_API_OFFSET, etc.
@return Request for load
*/
- (VKRequest *)getFollowers:(NSDictionary *)params;
@end

View File

@ -0,0 +1,35 @@
//
// VKApiWall.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiBase.h"
/**
Builds requests for API.wall part
*/
@interface VKApiWall : VKApiBase
/**
https://vk.com/dev/wall.post
@param params Use parameters from description with VK_API prefix
@return Request for execution
*/
- (VKRequest *)post:(NSDictionary *)params;
@end

View File

@ -1,7 +1,7 @@
//
// VKDocs.h
// VKAudio.h
//
// Copyright (c) 2016 VK.com
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
@ -11,7 +11,7 @@
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
@ -20,30 +20,27 @@
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKApiObject.h"
#import "VKApiObjectArray.h"
@class VKDocs;
@class VKUser;
@interface VKAudio : VKApiObject
/**
Docs type of VK API. See descriptions here https://vk.com/dev/doc
*/
@interface VKDocs : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSNumber *owner_id;
@property(nonatomic, copy) NSString *title;
@property(nonatomic, strong) NSNumber *size;
@property(nonatomic, copy) NSString *ext;
@property(nonatomic, copy) NSString *url;
@property(nonatomic, copy) NSString *photo_100;
@property(nonatomic, copy) NSString *photo_130;
@property(nonatomic, strong) NSNumber *date;
@property(nonatomic, strong) NSNumber *type;
@property(nonatomic, strong) NSString *artist;
@property(nonatomic, strong) NSString *title;
@property(nonatomic, strong) NSNumber *duration;
@property(nonatomic, strong) NSString *url;
@property(nonatomic, strong) NSNumber *lyrics_id;
@property(nonatomic, strong) NSNumber *album_id;
@property(nonatomic, strong) NSNumber *genre_id;
@property(nonatomic, assign) BOOL fromCache;
@property(nonatomic, assign) BOOL ignoreCache;
@end
/**
Array of API docs objects
*/
@interface VKDocsArray : VKApiObjectArray<VKDocs*>
@end
@interface VKAudios : VKApiObjectArray
@property(nonatomic, strong) VKUser *user;
@end

View File

@ -0,0 +1,63 @@
//
// VKAuthorizeController.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <UIKit/UIKit.h>
#import "VKSdk.h"
/**
Controller for authorization through webview (if VK app not available)
*/
@interface VKAuthorizeController : UIViewController <UIWebViewDelegate>
/**
Causes UIWebView in standard UINavigationController be presented in SDK delegate
@param appId Identifier of VK application
@param permissions Permissions that user specified for application
@param revoke If YES, user will see permissions list and allow to logout (if logged in already)
@param displayType Defines view of authorization screen
*/
+ (void)presentForAuthorizeWithAppId:(NSString *)appId
andPermissions:(NSArray *)permissions
revokeAccess:(BOOL)revoke
displayType:(VKDisplayType)displayType;
/**
Causes UIWebView in standard UINavigationController be presented for user validation
@param validationError validation error returned by API
*/
+ (void)presentForValidation:(VKError *)validationError;
/**
Builds url for oauth authorization
@param redirectUri uri for redirect
@param clientId id of your application
@param scope requested scope for application
@param revoke If YES, user will see permissions list and allow to logout (if logged in already)
@param display select display type
@return Complete url-string for grant authorization
*/
+ (NSString *)buildAuthorizationUrl:(NSString *)redirectUri
clientId:(NSString *)clientId
scope:(NSString *)scope
revoke:(BOOL)revoke
display:(VKDisplayType)display;
@end

View File

@ -0,0 +1,66 @@
//
// VKBatchRequest.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKObject.h"
#import "VKRequest.h"
/**
Used for execution bunch of methods at time, and receive results of that methods in array
*/
@interface VKBatchRequest : VKObject {
@private
NSMutableArray *_requests;
NSMutableArray *_responses;
BOOL _canceled;
}
/// Specify completion block for request
@property(nonatomic, copy) void (^completeBlock)(NSArray *responses);
/// Specity error (HTTP or API) block for request.
@property(nonatomic, copy) void (^errorBlock)(NSError *error);
/**
Initializes batch processing with requests
@param firstRequest ,... A comma-separated list of requests should be loaded, ending with nil.
@return Prepared request
*/
- (instancetype)initWithRequests:(VKRequest *)firstRequest, ...NS_REQUIRES_NIL_TERMINATION;
/**
Initializes batch processing with requests array
@param requests Array of requests should be loaded.
@return Prepared request
*/
- (instancetype)initWithRequestsArray:(NSArray *)requests;
/**
Executes batch request
@param completeBlock will receive result of passed requests
@param errorBlock called if any request did fail
*/
- (void)executeWithResultBlock:(void (^)(NSArray *responses))completeBlock errorBlock:(void (^)(NSError *))errorBlock;
/**
Cancel current batch operation
*/
- (void)cancel;
@end

View File

@ -0,0 +1,49 @@
//
// VKBundle.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKObject.h"
#define VKLocalizedString(s) [VKBundle localizedString:s]
#define VKImageNamed(s) [VKBundle vkLibraryImageNamed:s]
/**
Class for providing resources from VK SDK Bundle
*/
@interface VKBundle : VKObject
/**
Returns bundle for VK SDK (by default VKSdkResources)
@return Bundle object or nil
*/
+ (NSBundle *)vkLibraryResourcesBundle;
/**
Searches for image in main application bundle, then VK SDK bundle
@param name Name for image to find
@return Founded image object or nil, if file not found
*/
+ (UIImage *)vkLibraryImageNamed:(NSString *)name;
/**
* Returns localized string from VK bundle
*/
+ (NSString *)localizedString:(NSString *)string;
@end

View File

@ -0,0 +1,41 @@
//
// VKCaptchaView.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <UIKit/UIKit.h>
#import "VKError.h"
extern CGFloat kCaptchaImageWidth;
extern CGFloat kCaptchaImageHeight;
extern CGFloat kCaptchaViewHeight;
/**
View for displaying captcha. Don't use it dirrectly. Use VKCaptchaViewController
*/
@interface VKCaptchaView : UIView
/**
Initializes view with captcha error
@param frame bounds of window where view will be displayed
@param captchaError error for request that causes captcha-check
*/
- (id)initWithFrame:(CGRect)frame andError:(VKError *)captchaError;
@end

View File

@ -0,0 +1,45 @@
//
// VKCaptchaViewController.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <UIKit/UIKit.h>
#import "VKError.h"
/**
Controller fo displaying captcha.
*/
@interface VKCaptchaViewController : UIViewController {
@private
VKError *_captchaError;
}
/**
Initializes controller with captcha url
@param error error for request that causes captcha-check
@returns Prepared controller. Best way to use it - use presentIn: method
*/
+ (instancetype)captchaControllerWithError:(VKError *)error;
/**
Presents current view controller in another. Automatically hides when captcha was answered properly
@param viewController Parent view controller
*/
- (void)presentIn:(UIViewController *)viewController;
@end

View File

@ -0,0 +1,47 @@
//
// VKCounters.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObject.h"
@interface VKCounters : VKApiObject
@property(nonatomic, strong) NSNumber *friends;
@property(nonatomic, strong) NSNumber *messages;
@property(nonatomic, strong) NSNumber *photos;
@property(nonatomic, strong) NSNumber *videos;
@property(nonatomic, strong) NSNumber *notifications;
@property(nonatomic, strong) NSNumber *groups;
@property(nonatomic, strong) NSNumber *gifts;
@property(nonatomic, strong) NSNumber *events;
@property(nonatomic, strong) NSNumber *albums;
@property(nonatomic, strong) NSNumber *audios;
@property(nonatomic, strong) NSNumber *online_friends;
@property(nonatomic, strong) NSNumber *mutual_friends;
@property(nonatomic, strong) NSNumber *user_videos;
@property(nonatomic, strong) NSNumber *followers;
@property(nonatomic, strong) NSNumber *user_photos;
@property(nonatomic, strong) NSNumber *subscriptions;
@property(nonatomic, strong) NSNumber *documents;
@property(nonatomic, strong) NSNumber *topics;
@property(nonatomic, strong) NSNumber *pages;
@end

View File

@ -0,0 +1,87 @@
//
// VKError.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKObject.h"
#import "VKApiConst.h"
static int const VK_API_ERROR = -101;
static int const VK_API_CANCELED = -102;
static int const VK_API_REQUEST_NOT_PREPARED = -103;
static int const VK_RESPONSE_STRING_PARSING_ERROR = -104;
@class VKRequest;
/**
Class for presenting VK SDK and VK API errors
*/
@interface VKError : VKObject
/// Contains system HTTP error
@property(nonatomic, strong) NSError *httpError;
/// Describes API error
@property(nonatomic, strong) VKError *apiError;
/// Request which caused error
@property(nonatomic, strong) VKRequest *request;
/// May contains such errors:\n <b>HTTP status code</b> if HTTP error occured;\n <b>VK_API_ERROR</b> if API error occured;\n <b>VK_API_CANCELED</b> if request was canceled;\n <b>VK_API_REQUEST_NOT_PREPARED</b> if error occured while preparing request;
@property(nonatomic, assign) NSInteger errorCode;
/// API error message
@property(nonatomic, strong) NSString *errorMessage;
/// Reason for authorization fail
@property(nonatomic, strong) NSString *errorReason;
// Localized error text from server if there is one
@property(nonatomic, strong) NSString *errorText;
/// API parameters passed to request
@property(nonatomic, strong) NSDictionary *requestParams;
/// Captcha identifier for captcha-check
@property(nonatomic, strong) NSString *captchaSid;
/// Image for captcha-check
@property(nonatomic, strong) NSString *captchaImg;
/// Redirection address if validation check required
@property(nonatomic, strong) NSString *redirectUri;
@property(nonatomic, strong) id json;
/**
Generate new error with code
@param errorCode positive if it's an HTTP error. Negative if it's API or SDK error
*/
+ (instancetype)errorWithCode:(NSInteger)errorCode;
/**
Generate API error from JSON
@param JSON Json description of VK API error
*/
+ (instancetype)errorWithJson:(id)JSON;
/**
Generate API error from HTTP-query
@param queryParams key-value parameters
*/
+ (instancetype)errorWithQuery:(NSDictionary *)queryParams;
/**
Repeats failed captcha request with user entered answer to captcha
@param userEnteredCode answer for captcha
*/
- (void)answerCaptcha:(NSString *)userEnteredCode;
@end

View File

@ -0,0 +1,123 @@
//
// VKGroup.h
// sdk
//
// Created by Roman Truba on 16.07.14.
// Copyright (c) 2014 VK. All rights reserved.
//
#import "VKApiObjectArray.h"
#import "VKUser.h"
@interface VKGeoPlace : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSString *title;
@property(nonatomic, strong) NSNumber *latitude;
@property(nonatomic, strong) NSNumber *longitude;
@property(nonatomic, strong) NSNumber *created;
@property(nonatomic, strong) NSString *icon;
@property(nonatomic, strong) NSNumber *group_id;
@property(nonatomic, strong) NSNumber *group_photo;
@property(nonatomic, strong) NSNumber *checkins;
@property(nonatomic, strong) NSNumber *updated;
@property(nonatomic, strong) NSNumber *type;
@property(nonatomic, strong) NSNumber *country;
@property(nonatomic, strong) NSString *city;
@property(nonatomic, strong) NSString *address;
@property(nonatomic, strong) NSNumber *showmap;
@end
@interface VKGroupContact : VKApiObject
@property(nonatomic, strong) NSNumber *user_id;
@property(nonatomic, strong) NSString *desc;
@property(nonatomic, strong) NSString *email;
@end
@interface VKGroupContacts : VKApiObjectArray
@end
@interface VKGroupLink : VKApiObject
@property(nonatomic, strong) NSString *url;
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSString *desc;
@property(nonatomic, strong) NSString *photo_50;
@property(nonatomic, strong) NSString *photo_100;
@end
@interface VKGroupLinks : VKApiObjectArray
@end
@interface VKGroup : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSString *screen_name;
/**
* является ли сообщество закрытым. Возможные значения:
* 0 открытое;
* 1 закрытое;
* 2 частное.
*/
@property(nonatomic, strong) NSNumber *is_closed;
/**
* тип сообщества:
* group группа;
* page публичная страница;
* event мероприятие.
*/
@property(nonatomic, strong) NSString *type;
@property(nonatomic, strong) NSNumber *is_admin;
/**
* полномочия текущего пользователя (если is_admin=1):
* 1 модератор;
* 2 редактор;
* 3 администратор.
*/
@property(nonatomic, strong) NSNumber *admin_level;
@property(nonatomic, strong) NSNumber *is_member;
@property(nonatomic, strong) VKCity *city;
@property(nonatomic, strong) VKCountry *country;
@property(nonatomic, strong) VKGeoPlace *place;
@property(nonatomic, strong) NSString *description;
@property(nonatomic, strong) NSString *wiki_page;
@property(nonatomic, strong) NSNumber *members_count;
@property(nonatomic, strong) VKCounters *counters;
@property(nonatomic, strong) NSNumber *start_date;
@property(nonatomic, strong) NSNumber *end_date;
@property(nonatomic, strong) NSNumber *finish_date;
@property(nonatomic, strong) NSNumber *can_post;
@property(nonatomic, strong) NSNumber *can_see_all_posts;
@property(nonatomic, strong) NSNumber *can_create_topic;
@property(nonatomic, strong) NSNumber *can_upload_doc;
@property(nonatomic, strong) NSString *activity;
@property(nonatomic, strong) NSString *status;
@property(nonatomic, strong) VKAudio *status_audio;
@property(nonatomic, strong) VKGroupContacts *contacts;
@property(nonatomic, strong) VKGroupLinks *links;
@property(nonatomic, strong) NSNumber *fixed_post;
@property(nonatomic, strong) NSNumber *verified;
@property(nonatomic, strong) NSString *site;
@property(nonatomic, strong) NSString *photo_50;
@property(nonatomic, strong) NSString *photo_100;
@property(nonatomic, strong) NSString *photo_200;
@property(nonatomic, strong) NSString *photo_max_orig;
@property(nonatomic, strong) NSNumber *is_request;
@property(nonatomic, strong) NSNumber *is_invite;
@property(nonatomic, strong) VKPhotoArray *photos;
@property(nonatomic, strong) NSNumber *photos_count;
@property(nonatomic, strong) NSNumber *invited_by;
@property(nonatomic, assign) NSInteger invite_state;
@property(nonatomic, strong) NSString *deactivated;
@property(nonatomic, strong) NSNumber *blacklisted;
@end
@interface VKGroups : VKApiObjectArray
@end

View File

@ -0,0 +1,71 @@
//
// VKImageParameters.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKObject.h"
/**
Describes image representation type
*/
typedef enum VKImageType {
/// Sets jpeg representation of image
VKImageTypeJpg,
/// Sets png representation of image
VKImageTypePng
} VKImageType;
/**
Parameters used for uploading image into VK servers
*/
@interface VKImageParameters : VKObject
/// Type of image compression. Can be <b>VKImageTypeJpg</b> or <b>VKImageTypePng</b>.
@property(nonatomic, assign) VKImageType imageType;
/// Quality used for jpg compression. From 0.0 to 1.0
@property(nonatomic, assign) CGFloat jpegQuality;
/**
Creates new parameters instance for png image.
@return New instance of parameters
*/
+ (instancetype)pngImage;
/**
Creates new parameters instance for jpeg image.
@param quality Used only for <b>VKImageTypeJpg</b> representation. From 0.0 to 1.0
@return New instance with passed parameters
*/
+ (instancetype)jpegImageWithQuality:(float)quality;
/**
Return file extension for selected type
@return png for VKImageTypePng image type, jpg for VKImageTypeJpg image type
*/
- (NSString *)fileExtension;
/**
Return mime type
@return parameters mime type
*/
- (NSString *)mimeType;
@end

View File

@ -0,0 +1,36 @@
//
// VKLikes.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKApiObject.h"
/**
Likes type of VK API
*/
@interface VKLikes : VKApiObject
#ifndef DOXYGEN_SHOULD_SKIP_THIS
@property(nonatomic, strong) NSNumber *count;
@property(nonatomic, strong) NSNumber *user_likes;
@property(nonatomic, strong) NSNumber *can_like;
@property(nonatomic, strong) NSNumber *can_publish;
#endif
@end

View File

@ -0,0 +1,28 @@
//
// VKObject.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface VKObject : NSObject
@end

View File

@ -0,0 +1,42 @@
//
// VKOperation.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
typedef enum {
VKOperationPausedState = -1,
VKOperationReadyState = 1,
VKOperationExecutingState = 2,
VKOperationFinishedState = 3,
} VKOperationState;
/**
Basic class for operations
*/
@interface VKOperation : NSOperation
/// This operation state. Value from VKOperationState enum
@property(readwrite, nonatomic, assign) VKOperationState state;
/// Operation working lock
@property(readwrite, nonatomic, strong) NSRecursiveLock *lock;
/// Sets dispatch queue for returning result
@property(nonatomic, assign) dispatch_queue_t responseQueue;
@end

View File

@ -0,0 +1,44 @@
//
// VKPermissions.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
extern NSString *const VK_PER_NOTIFY;
extern NSString *const VK_PER_FRIENDS;
extern NSString *const VK_PER_PHOTOS;
extern NSString *const VK_PER_AUDIO;
extern NSString *const VK_PER_VIDEO;
extern NSString *const VK_PER_DOCS;
extern NSString *const VK_PER_NOTES;
extern NSString *const VK_PER_PAGES;
extern NSString *const VK_PER_STATUS;
extern NSString *const VK_PER_WALL;
extern NSString *const VK_PER_GROUPS;
extern NSString *const VK_PER_MESSAGES;
extern NSString *const VK_PER_NOTIFICATIONS;
extern NSString *const VK_PER_STATS;
extern NSString *const VK_PER_ADS;
extern NSString *const VK_PER_OFFLINE;
extern NSString *const VK_PER_NOHTTPS;
extern NSString *const VK_PER_EMAIL;
NSArray *parseVkPermissionsFromInteger(int permissionsValue);

View File

@ -0,0 +1,55 @@
//
// VKPhoto.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObject.h"
#import "VKApiObjectArray.h"
#import "VKPhotoSize.h"
@class VKLikes;
/**
Photo type of VK API. See descriptions here https://vk.com/dev/photo
*/
@interface VKPhoto : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSNumber *album_id;
@property(nonatomic, strong) NSNumber *owner_id;
@property(nonatomic, strong) NSString *photo_75;
@property(nonatomic, strong) NSString *photo_130;
@property(nonatomic, strong) NSString *photo_604;
@property(nonatomic, strong) NSString *photo_807;
@property(nonatomic, strong) NSString *photo_1280;
@property(nonatomic, strong) NSString *photo_2560;
@property(nonatomic, strong) NSNumber *width;
@property(nonatomic, strong) NSNumber *height;
@property(nonatomic, strong) NSString *text;
@property(nonatomic, strong) NSNumber *date;
@property(nonatomic, strong) VKPhotoSizes *sizes;
@property(nonatomic, readonly) NSString *attachmentString;
@end
/**
Array of API photos objects
*/
@interface VKPhotoArray : VKApiObjectArray
@end

View File

@ -0,0 +1,20 @@
//
// VKPhotoSize.h
// sdk
//
// Created by Roman Truba on 11.08.14.
// Copyright (c) 2014 VK. All rights reserved.
//
#import "VKApiObjectArray.h"
@interface VKPhotoSize : VKApiObject
@property(nonatomic, readwrite, copy) NSString *src;
@property(nonatomic, readwrite, copy) NSNumber *width;
@property(nonatomic, readwrite, copy) NSNumber *height;
@property(nonatomic, readwrite, copy) NSString *type;
@end
@interface VKPhotoSizes : VKApiObjectArray
- (VKPhotoSize *)photoSizeWithType:(NSString *)type;
@end

View File

@ -0,0 +1,34 @@
//
// VKRelative.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObjectArray.h"
@interface VKRelative : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSString *type;
@end
@interface VKRelativities : VKApiObjectArray
@end

View File

@ -0,0 +1,181 @@
//
// VKRequest.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKResponse.h"
#import "VKApiConst.h"
#import "VKObject.h"
/**
Creates and debug timings for VKRequest
*/
@interface VKRequestTiming : VKObject
/// Date of request start
@property(nonatomic, strong) NSDate *startTime;
/// Date of request finished (after all operations)
@property(nonatomic, strong) NSDate *finishTime;
/// Interval of networking load time
@property(nonatomic, assign) NSTimeInterval loadTime;
/// Interval of model parsing time
@property(nonatomic, assign) NSTimeInterval parseTime;
/// Total time, as difference (finishTime - startTime)
@property(nonatomic, readonly) NSTimeInterval totalTime;
@end
/**
Class for execution API-requests
*/
@interface VKRequest : VKObject
/// Specify language for API request
@property(nonatomic, copy) NSString *preferredLang;
/// Specify progress for uploading or downloading. Useless for text requests (because gzip encoding bytesTotal will always return -1)
@property(nonatomic, copy) void (^progressBlock)(VKProgressType progressType, long long bytesLoaded, long long bytesTotal);
/// Specify completion block for request
@property(nonatomic, copy) void (^completeBlock)(VKResponse *response);
/// Specity error (HTTP or API) block for request.
@property(nonatomic, copy) void (^errorBlock)(NSError *error);
/// Specify attempts for request loading if caused HTTP-error. 0 for infinite
@property(nonatomic, assign) int attempts;
/// Use HTTPS requests (by default is YES). If http-request is impossible (user denied no https access), SDK will load https version
@property(nonatomic, assign) BOOL secure;
/// Sets current system language as default for API data
@property(nonatomic, assign) BOOL useSystemLanguage;
/// Set to NO if you don't need automatic model parsing
@property(nonatomic, assign) BOOL parseModel;
/// Set to YES if you need info about request timing
@property(nonatomic, assign) BOOL debugTiming;
/// Timeout for this request
@property(nonatomic, assign) NSInteger requestTimeout;
/// Sets dispatch queue for returning result
@property(nonatomic, assign) dispatch_queue_t responseQueue;
/// Set to YES if you need to freeze current thread for response
@property(nonatomic, assign) BOOL waitUntilDone;
/// Returns method for current request, e.g. users.get
@property(nonatomic, readonly) NSString *methodName;
/// Returns HTTP-method for current request
@property(nonatomic, readonly) NSString *httpMethod;
/// Returns list of method parameters (without common parameters)
@property(nonatomic, readonly) NSDictionary *methodParameters;
/// Returns http operation that can be enqueued
@property(nonatomic, readonly) NSOperation *executionOperation;
/// Returns info about request timings
@property(nonatomic, readonly) VKRequestTiming *requestTiming;
/// Return YES if current request was started
@property(nonatomic, readonly) BOOL isExecuting;
///-------------------------------
/// @name Preparing requests
///-------------------------------
/**
Creates new request with parameters. See documentation for methods here https://vk.com/dev/methods
@param method API-method name, e.g. audio.get
@param parameters method parameters
@param httpMethod HTTP method for execution, e.g. GET, POST
@return Complete request object for execute or configure method
*/
+ (instancetype)requestWithMethod:(NSString *)method
andParameters:(NSDictionary *)parameters
andHttpMethod:(NSString *)httpMethod;
/**
Creates new request with parameters. See documentation for methods here https://vk.com/dev/methods
@param method API-method name, e.g. audio.get
@param parameters method parameters
@param httpMethod HTTP method for execution, e.g. GET, POST
@param modelClass class for automatic parse
@return Complete request object for execute or configure method
*/
+ (instancetype)requestWithMethod:(NSString *)method
andParameters:(NSDictionary *)parameters
andHttpMethod:(NSString *)httpMethod
classOfModel:(Class)modelClass;
/**
Creates new request for upload image to url
@param url url for upload, which was received from special methods
@param photoObjects VKPhoto object describes photos
@return Complete request object for execute
*/
+ (instancetype)photoRequestWithPostUrl:(NSString *)url
withPhotos:(NSArray *)photoObjects;
/**
Prepares NSURLRequest and returns prepared url request for current vkrequest
@return Prepared request used for loading
*/
- (NSURLRequest *)getPreparedRequest;
///-------------------------------
/// @name Execution
///-------------------------------
/**
Executes that request, and returns result to blocks
@param completeBlock called if there were no HTTP or API errors, returns execution result.
@param errorBlock called immediately if there was API error, or after <b>attempts</b> tries if there was an HTTP error
*/
- (void)executeWithResultBlock:(void (^)(VKResponse *response))completeBlock
errorBlock:(void (^)(NSError *error))errorBlock;
/**
Register current request for execute after passed request, if passed request is successful. If it's not, errorBlock will be called.
@param request after which request must be called that request
@param completeBlock called if there were no HTTP or API errors, returns execution result.
@param errorBlock called immediately if there was API error, or after <b>attempts</b> tries if there was an HTTP error
*/
- (void)executeAfter:(VKRequest *)request
withResultBlock:(void (^)(VKResponse *response))completeBlock
errorBlock:(void (^)(NSError *error))errorBlock;
/**
Starts loading of prepared request. You can use it instead of executeWithResultBlock
*/
- (void)start;
/**
Creates loading operation for this request
*/
- (NSOperation*) createExecutionOperation;
/**
Repeats this request with initial parameters and blocks.
Used attempts will be set to 0.
*/
- (void)repeat;
/**
Cancel current request. Result will be not passed. errorBlock will be called with error code
*/
- (void)cancel;
///-------------------------------
/// @name Operating with parameters
///-------------------------------
/**
Adds additional parameters to that request
@param extraParameters parameters supposed to be added
*/
- (void)addExtraParameters:(NSDictionary *)extraParameters;
@end

View File

@ -0,0 +1,41 @@
//
// VKResponse.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKObject.h"
@class VKRequest;
/**
Class presenting answer from API
*/
@interface VKResponse : VKObject
/// Request which caused response
@property(nonatomic, weak) VKRequest *request;
/// Json content of response. Can be array or object.
@property(nonatomic, strong) id json;
/// Model parsed from response
@property(nonatomic, strong) id parsedModel;
/// Original response string from server
@property(nonatomic, copy) NSString *responseString;
@end

View File

@ -0,0 +1,43 @@
//
// VKSchool.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObjectArray.h"
@interface VKSchool : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSNumber *country;
@property(nonatomic, strong) NSNumber *city;
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSNumber *year_from;
@property(nonatomic, strong) NSNumber *year_to;
@property(nonatomic, strong) NSNumber *year_graduated;
@property(nonatomic, strong) NSString *Mclass;
@property(nonatomic, strong) NSString *speciality;
@property(nonatomic, strong) NSNumber *type;
@property(nonatomic, strong) NSString *type_str;
@end
@interface VKSchools : VKApiObjectArray
@end

View File

@ -0,0 +1,299 @@
//
// VKSdk.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// --------------------------------------------------------------------------------
//
// Modified by Ruslan Kavetsky
#import <Foundation/Foundation.h>
#import "VKAccessToken.h"
#import "VKPermissions.h"
#import "VKUtil.h"
#import "VKApi.h"
#import "VKApiConst.h"
#import "VKSdkVersion.h"
#import "VKCaptchaViewController.h"
#import "VKRequest.h"
#import "VKBatchRequest.h"
#import "NSError+VKError.h"
#import "VKApiModels.h"
#import "VKUploadImage.h"
#import "VKShareDialogController.h"
#import "VKActivity.h"
/**
Global SDK events delegate protocol.
You should implement it, typically as main view controller or as application delegate.
*/
@protocol VKSdkDelegate <NSObject>
@required
/**
Calls when user must perform captcha-check
@param captchaError error returned from API. You can load captcha image from <b>captchaImg</b> property.
After user answered current captcha, call answerCaptcha: method with user entered answer.
*/
- (void)vkSdkNeedCaptchaEnter:(VKError *)captchaError;
/**
Notifies delegate about existing token has expired
@param expiredToken old token that has expired
*/
- (void)vkSdkTokenHasExpired:(VKAccessToken *)expiredToken;
/**
Notifies delegate about user authorization cancelation
@param authorizationError error that describes authorization error
*/
- (void)vkSdkUserDeniedAccess:(VKError *)authorizationError;
/**
Pass view controller that should be presented to user. Usually, it's an authorization window
@param controller view controller that must be shown to user
*/
- (void)vkSdkShouldPresentViewController:(UIViewController *)controller;
/**
Notifies delegate about receiving new access token
@param newToken new token for API requests
*/
- (void)vkSdkReceivedNewToken:(VKAccessToken *)newToken;
@optional
/**
Notifies delegate about receiving predefined token (initializeWithDelegate:andAppId:andCustomToken: token is not nil)
@param token used token for API requests
*/
- (void)vkSdkAcceptedUserToken:(VKAccessToken *)token;
/**
Notifies delegate about receiving new access token
@param newToken new token for API requests
*/
- (void)vkSdkRenewedToken:(VKAccessToken *)newToken;
/**
Requests delegate about redirect to Safari during authorization procedure.
By default returns YES
*/
- (BOOL)vkSdkAuthorizationAllowFallbackToSafari;
/**
Applications which not using VK SDK as main way of authentication should override this method and return NO.
By default returns YES.
*/
- (BOOL)vkSdkIsBasicAuthorization;
/**
* Called when a controller presented by SDK will be dismissed
*/
- (void)vkSdkWillDismissViewController:(UIViewController *)controller;
/**
* Called when a controller presented by SDK did dismiss
*/
- (void)vkSdkDidDismissViewController:(UIViewController *)controller;
@end
/**
Entry point for using VK sdk. Should be initialized at application start
*/
@interface VKSdk : NSObject
///-------------------------------
/// @name Delegate
///-------------------------------
/// Responder for global SDK events
@property(nonatomic, weak) id <VKSdkDelegate> delegate;
/// Returns a last app_id used for initializing the SDK
@property(nonatomic, readonly, copy) NSString *currentAppId;
/// API version for making requests
@property(nonatomic, readonly, copy) NSString *apiVersion;
///-------------------------------
/// @name Initialization
///-------------------------------
/**
Returns instance of VK sdk. You should never use that directly
*/
+ (instancetype)instance;
/**
Initialize SDK with responder for global SDK events
@param delegate responder for global SDK events
@param appId your application id (if you haven't, you can create standalone application here https://vk.com/editapp?act=create )
*/
+ (void)initializeWithDelegate:(id <VKSdkDelegate>)delegate
andAppId:(NSString *)appId;
/**
Initialize SDK with responder for global SDK events and custom token key
(e.g., saved from other source or for some test reasons)
@param delegate responder for global SDK events
@param appId your application id (if you haven't, you can create standalone application here https://vk.com/editapp?act=create )
@param token custom-created access token
*/
+ (void)initializeWithDelegate:(id <VKSdkDelegate>)delegate
andAppId:(NSString *)appId
andCustomToken:(VKAccessToken *)token DEPRECATED_ATTRIBUTE;
/**
Initialize SDK with responder for global SDK events
@param delegate responder for global SDK events
@param appId your application id (if you haven't, you can create standalone application here https://vk.com/editapp?act=create )
@param apiVersion if you want to use latest API version, pass required version here
*/
+ (void)initializeWithDelegate:(id <VKSdkDelegate>)delegate
andAppId:(NSString *)appId
apiVersion:(NSString *)version;
///-------------------------------
/// @name Authentication in VK
///-------------------------------
/**
Starts authorization process. If VKapp is available in system, it will opens and requests access from user.
Otherwise Mobile Safari will be opened for access request.
@param permissions array of permissions for your applications. All permissions you can
*/
+ (void)authorize:(NSArray *)permissions;
/**
Starts authorization process. If VKapp is available in system, it will opens and requests access from user.
Otherwise Mobile Safari will be opened for access request.
@param permissions Array of permissions for your applications. All permissions you can
@param revokeAccess If YES, user will allow logout (to change user)
*/
+ (void)authorize:(NSArray *)permissions revokeAccess:(BOOL)revokeAccess;
/**
Starts authorization process.
@param permissions Array of permissions for your applications. All permissions you can
@param revokeAccess If YES, user will allow logout (to change user)
@param forceOAuth If YES, SDK will use only oauth authorization through mobile safari. Otherwise, it will try to authorize through VK application
*/
+ (void)authorize:(NSArray *)permissions revokeAccess:(BOOL)revokeAccess forceOAuth:(BOOL)forceOAuth;
/**
Starts authorization process.
@param permissions Array of permissions for your applications. All permissions you can
@param revokeAccess If YES, user will allow logout (to change user)
@param forceOAuth If YES, SDK will use only oauth authorization through mobile safari. Otherwise, it will try to authorize through VK application
@param inApp If YES, SDK will try to open modal window with webview to authorize. This method strongly not recommended as user should enter his account data in your application. For use modal view add VKSdkResources.bundle to your project.
*/
+ (void)authorize:(NSArray *)permissions revokeAccess:(BOOL)revokeAccess forceOAuth:(BOOL)forceOAuth inApp:(BOOL)inApp;
/**
Starts authorization process.
@param permissions Array of permissions for your applications. All permissions you can
@param revokeAccess If YES, user will allow logout (to change user)
@param forceOAuth If YES, SDK will use only oauth authorization through mobile safari. Otherwise, it will try to authorize through VK application
@param inApp If YES, SDK will try to open modal window with webview to authorize. This method strongly not recommended as user should enter his account data in your application. For use modal view add VKSdkResources.bundle to your project.
@param displayType Defines view of authorization screen
*/
+ (void)authorize:(NSArray *)permissions revokeAccess:(BOOL)revokeAccess forceOAuth:(BOOL)forceOAuth inApp:(BOOL)inApp display:(VKDisplayType)displayType;
///-------------------------------
/// @name Access token methods
///-------------------------------
/**
Set API token to passed
@param token token must be used for API requests
*/
+ (void)setAccessToken:(VKAccessToken *)token;
/**
Notify SDK that user denied login
@param error Descripbes error which was happends while trying to recieve token
*/
+ (void)setAccessTokenError:(VKError *)error;
/**
Returns token for API requests
@return Received access token or nil, if user not yet authorized
*/
+ (VKAccessToken *)getAccessToken;
///-------------------------------
/// @name Other methods
///-------------------------------
/**
Checks passed URL for access token
@param passedUrl url from external application
@param sourceApplication source application
@return YES if parsed successfully
*/
+ (BOOL)processOpenURL:(NSURL *)passedUrl fromApplication:(NSString *)sourceApplication;
/**
Handle `[AppDelegate applicationDidBecomeActive]` for cases like user starts authorization process but switch back to app without giving access
*/
+ (void)handleDidBecomeActive;
/**
* Checks if somebody logged in with SDK
*/
+ (BOOL)isLoggedIn;
/**
Make try to read token from defaults and start session again.
*/
+ (BOOL)wakeUpSession;
/**
Try to read token from defaults, then check for required permissions.
*/
+ (BOOL)wakeUpSession:(NSArray *)permissions;
/**
Forces logout using OAuth (with VKAuthorizeController). Removes all cookies for *.vk.com.
Has no effect for logout in VK app
*/
+ (void)forceLogout;
/**
* Checks if there is some application, which may process authorize url
*/
+ (BOOL)vkAppMayExists;
/**
Check existing permissions
@param permissions array of permissions you want to check
*/
+ (BOOL)hasPermissions:(NSArray *)permissions;
/**
Enables or disables scheduling for requests
*/
+ (void)setSchedulerEnabled:(BOOL)enabled;
// Deny allocating more SDK
+ (instancetype)alloc __attribute__((unavailable("alloc not available, call initialize: or instance instead")));
- (instancetype)init __attribute__((unavailable("init not available, call initialize: or instance instead")));
+ (instancetype)new __attribute__((unavailable("new not available, call initialize: or instance instead")));
@end

View File

@ -0,0 +1,24 @@
//
// VKSdkVersion.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define VK_SDK_VERSION @"1.2.1"
#define VK_SDK_API_VERSION @"5.23"

View File

@ -0,0 +1,79 @@
//
// VKShareDialogController.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <UIKit/UIKit.h>
#import "VKObject.h"
#import "VKUploadImage.h"
typedef NS_ENUM(NSInteger, VKShareDialogControllerResult) {
VKShareDialogControllerResultCancelled,
VKShareDialogControllerResultDone
};
/*
* Link representation for share dialog
*/
@interface VKShareLink : VKObject
/// Use that field for present link description in share dialog interface
@property(nonatomic, copy) NSString *title;
/// Use that field for pass real link to VK. Host of the link will be displayed in share dialog
@property(nonatomic, copy) NSURL *link;
- (instancetype)initWithTitle:(NSString *)title link:(NSURL *)link;
@end
/**
* Creates dialog for sharing some information from your app to user wall in VK
*/
@interface VKShareDialogController : UIViewController
/// Array of prepared VKUploadImage objects for upload and share. User can remove any attachment
@property(nonatomic, strong) NSArray *uploadImages;
/// Photos already uploaded to VK. That is array of photos ids: @[ownerid_photoid, ...];
@property(nonatomic, strong) NSArray *vkImages;
/// Links attachment for new post
@property(nonatomic, strong) VKShareLink *shareLink;
/// Text to share. User can change it
@property(nonatomic, copy) NSString *text;
/// Put only needed scopes into that array. By default equals @[VK_PER_WALL,VK_PER_PHOTOS]
@property(nonatomic, strong) NSArray *requestedScope;
/// You can receive information about sharing state
@property(nonatomic, copy) void (^completionHandler)(VKShareDialogControllerResult result);
/// Flag meaning the share viewcontroller manage it's presentation state by itself
@property(nonatomic, assign) BOOL dismissAutomatically;
/// Force share dialog to use in-app webview authorization
@property(nonatomic, assign) BOOL authorizeInApp;
/**
Correctly presents current view controller in another
@param viewController Parent view controller
*/
- (void)presentIn:(UIViewController *)viewController __deprecated;
@end

View File

@ -0,0 +1,42 @@
//
// VKUniversity.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or suabstantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKApiObjectArray.h"
@interface VKUniversity : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSNumber *country;
@property(nonatomic, strong) NSNumber *city;
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSNumber *faculty;
@property(nonatomic, strong) NSString *faculty_name;
@property(nonatomic, strong) NSNumber *chair;
@property(nonatomic, strong) NSString *chair_name;
@property(nonatomic, strong) NSNumber *graduation;
@property(nonatomic, strong) NSString *education_form;
@property(nonatomic, strong) NSString *education_status;
@end
@interface VKUniversities : VKApiObjectArray
@end

View File

@ -0,0 +1,52 @@
//
// VKUploadImage.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKImageParameters.h"
/**
Contains image data with image description
*/
@interface VKUploadImage : VKObject
/// Bytes of image
@property(nonatomic, strong) NSData *imageData;
/// Source image
@property(nonatomic, strong) UIImage *sourceImage;
/// Image basic info
@property(nonatomic, strong) VKImageParameters *parameters;
/**
Create new image data representation used for upload
@param data Bytes of image
@param params Image basic info
@return Prepared object for using in upload
*/
+ (instancetype)uploadImageWithData:(NSData *)data andParams:(VKImageParameters *)params;
/**
Create new image representation used for upload
@param image Source image
@param params Image basic info
@return Prepared object for using in upload
*/
+ (instancetype)uploadImageWithImage:(UIImage *)image andParams:(VKImageParameters *)params;
@end

View File

@ -1,7 +1,7 @@
//
// VKDocs.m
// VKUploadMessagesPhotoRequest.h
//
// Copyright (c) 2016 VK.com
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
@ -21,16 +21,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKDocs.h"
#import "VKUploadPhotoBase.h"
@implementation VKDocs
@end
@implementation VKDocsArray
-(Class)objectClass {
return [VKDocs class];
}
@interface VKUploadMessagesPhotoRequest : VKUploadPhotoBase
@end

View File

@ -0,0 +1,52 @@
//
// VKPhotoUploadBase.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKRequest.h"
#import "VKImageParameters.h"
#import "VKOperation.h"
/**
Provides common part of photo upload process
*/
@interface VKUploadPhotoBase : VKRequest
/// ID of album to upload
@property(nonatomic, assign) NSInteger albumId;
/// ID of group to upload
@property(nonatomic, assign) NSInteger groupId;
/// ID of user wall to upload
@property(nonatomic, assign) NSInteger userId;
/// Passed image parameters
@property(nonatomic, strong) VKImageParameters *imageParameters;
/// Image to upload
@property(nonatomic, strong) UIImage *image;
- (instancetype)initWithImage:(UIImage *)image parameters:(VKImageParameters *)parameters;
@end
/**
Special operation for execute upload
*/
@interface VKUploadImageOperation : VKOperation
+ (instancetype)operationWithUploadRequest:(VKUploadPhotoBase *)request;
@end

View File

@ -0,0 +1,39 @@
//
// VKUploadPhotoRequest.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKUploadPhotoBase.h"
/**
Special request for upload photos to specified album
*/
@interface VKUploadPhotoRequest : VKUploadPhotoBase
/**
Initializes photo upload request with parameters
@param image Image to upload
@param parameters image parameters for upload
@param albumId ID of album for photo
@param groupId ID of group (without minus sign) on which wall image should be posted (or nil)
@return Completed request for executing
*/
- (instancetype)initWithImage:(UIImage *)image parameters:(VKImageParameters *)parameters albumId:(NSInteger)albumId groupId:(NSInteger)groupId;
@end

View File

@ -0,0 +1,38 @@
//
// VKUploadWallPhotoRequest.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "VKUploadPhotoBase.h"
/**
Special request for upload single photo to user wall
*/
@interface VKUploadWallPhotoRequest : VKUploadPhotoBase
/**
Initializes photo upload request with parameters
@param image Image to upload
@param parameters image parameters for upload
@param userId ID of user on which wall image should be posted (or nil)
@param groupId ID of group (without minus sign) on which wall image should be posted (or nil)
@return Completed request for executing
*/
- (instancetype)initWithImage:(UIImage *)image parameters:(VKImageParameters *)parameters userId:(NSInteger)userId groupId:(NSInteger)groupId;
@end

View File

@ -0,0 +1,183 @@
//
// VKUser.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "VKApiObject.h"
#import "VKApiObjectArray.h"
#import "VKAudio.h"
#import "VKCounters.h"
#import "VKPhoto.h"
#import "VKSchool.h"
#import "VKUniversity.h"
#import "VKRelative.h"
@interface VKGeoObject : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSString *title;
@end
@interface VKCity : VKGeoObject
@end
@interface VKCountry : VKGeoObject
@end
@interface VKPersonal : VKObject
@property(nonatomic, strong) NSArray *langs;
@property(nonatomic, strong) NSNumber *political;
@property(nonatomic, strong) NSString *religion;
@property(nonatomic, strong) NSNumber *life_main;
@property(nonatomic, strong) NSNumber *people_main;
@property(nonatomic, strong) NSString *inspired_by;
@property(nonatomic, strong) NSNumber *smoking;
@property(nonatomic, strong) NSNumber *alcohol;
@end
/**
User type of VK API. See descriptions here https://vk.com/dev/fields
*/
@interface VKBanInfo : VKApiObject
/// идентификатор администратора, который добавил пользователя в черный список;
@property(nonatomic, strong) NSNumber *admin_id;
/// дата добавления пользователя в черный список;
@property(nonatomic, strong) NSNumber *date;
/// причина добавления пользователя в черный список;
@property(nonatomic, strong) NSNumber *reason;
/// текст комментария
@property(nonatomic, strong) NSString *comment;
/// дата, когда пользователь будет разбанен.
@property(nonatomic, strong) NSNumber *end_date;
@end
@interface VKLastSeen : VKApiObject
@property(nonatomic, strong) NSNumber *time;
@property(nonatomic, strong) NSNumber *platform;
@end
@interface VKExports : VKApiObject
@property(nonatomic, strong) NSNumber *twitter;
@property(nonatomic, strong) NSNumber *facebook;
@property(nonatomic, strong) NSNumber *livejournal;
@property(nonatomic, strong) NSNumber *instagram;
@end
@interface VKUser : VKApiObject
@property(nonatomic, strong) NSNumber *id;
@property(nonatomic, strong) NSString *first_name;
@property(nonatomic, strong) NSString *last_name;
@property(nonatomic, strong) NSString *first_name_acc;
@property(nonatomic, strong) NSString *last_name_acc;
@property(nonatomic, strong) NSString *first_name_gen;
@property(nonatomic, strong) NSString *last_name_gen;
@property(nonatomic, strong) NSString *first_name_dat;
@property(nonatomic, strong) NSString *last_name_dat;
@property(nonatomic, strong) NSString *first_name_ins;
@property(nonatomic, strong) NSString *last_name_ins;
@property(nonatomic, strong) VKPersonal *personal;
@property(nonatomic, strong) NSNumber *sex;
@property(nonatomic, strong) NSNumber *invited_by;
@property(nonatomic, strong) NSNumber *online;
@property(nonatomic, strong) NSString *bdate;
@property(nonatomic, strong) VKCity *city;
@property(nonatomic, strong) VKCountry *country;
@property(nonatomic, strong) NSMutableArray *lists;
@property(nonatomic, strong) NSString *screen_name;
@property(nonatomic, strong) NSNumber *has_mobile;
@property(nonatomic, strong) NSNumber *rate;
@property(nonatomic, strong) NSString *mobile_phone;
@property(nonatomic, strong) NSString *home_phone;
@property(nonatomic, assign) BOOL can_post;
@property(nonatomic, assign) BOOL can_see_all_posts;
@property(nonatomic, strong) NSString *status;
@property(nonatomic, strong) VKAudio *status_audio;
@property(nonatomic, assign) bool status_loaded;
@property(nonatomic, strong) VKLastSeen *last_seen;
@property(nonatomic, strong) NSNumber *relation;
@property(nonatomic, strong) VKUser *relation_partner;
@property(nonatomic, strong) VKCounters *counters;
@property(nonatomic, strong) NSString *nickname;
@property(nonatomic, strong) VKExports *exports;
@property(nonatomic, strong) NSNumber *wall_comments;
@property(nonatomic, assign) BOOL can_write_private_message;
@property(nonatomic, strong) NSString *phone;
@property(nonatomic, strong) NSNumber *online_mobile;
@property(nonatomic, strong) NSNumber *faculty;
@property(nonatomic, strong) NSNumber *university;
@property(nonatomic, strong) VKUniversities *universities;
@property(nonatomic, strong) VKSchools *schools;
@property(nonatomic, strong) NSNumber *graduation;
@property(nonatomic, strong) NSNumber *friendState;
@property(nonatomic, strong) NSString *faculty_name;
@property(nonatomic, strong) NSString *university_name;
@property(nonatomic, strong) NSString *books;
@property(nonatomic, strong) NSString *games;
@property(nonatomic, strong) NSString *interests;
@property(nonatomic, strong) NSString *movies;
@property(nonatomic, strong) NSString *tv;
@property(nonatomic, strong) NSString *about;
@property(nonatomic, strong) NSString *music;
@property(nonatomic, strong) NSString *quoutes;
@property(nonatomic, strong) NSString *activities;
@property(nonatomic, strong) NSString *photo_max;
@property(nonatomic, strong) NSString *photo_50;
@property(nonatomic, strong) NSString *photo_100;
@property(nonatomic, strong) NSString *photo_200;
@property(nonatomic, strong) NSString *photo_200_orig;
@property(nonatomic, strong) NSString *photo_400_orig;
@property(nonatomic, strong) NSString *photo_max_orig;
@property(nonatomic, strong) VKPhotoArray *photos;
@property(nonatomic, strong) NSNumber *photos_count;
@property(nonatomic, strong) VKRelativities *relatives;
@property(nonatomic, assign) NSTimeInterval bdateIntervalSort;
@property(nonatomic, strong) NSNumber *verified;
@property(nonatomic, strong) NSString *deactivated;
@property(nonatomic, strong) NSString *site;
@property(nonatomic, strong) NSString *home_town;
@property(nonatomic, strong) NSNumber *blacklisted;
@property(nonatomic, strong) NSNumber *blacklisted_by_me;
@property(nonatomic, strong) NSString *twitter;
@property(nonatomic, strong) NSString *skype;
@property(nonatomic, strong) NSString *facebook;
@property(nonatomic, strong) NSString *livejournal;
@property(nonatomic, strong) NSString *wall_default;
/// Для метода account.lookupContacts
@property(nonatomic, strong) NSString *contact;
@property(nonatomic, strong) NSNumber *request_sent;
@property(nonatomic, strong) NSNumber *common_count;
/// Для метода groups.getBanned
@property(nonatomic, strong) VKBanInfo *ban_info;
/// audio.get
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSString *name_gen;
// getSubscriptions
@property(nonatomic, strong) NSNumber *followers_count;
@end
/**
Array of API users
*/
@interface VKUsersArray : VKApiObjectArray
@end

View File

@ -0,0 +1,51 @@
//
// VKUtil.h
//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define VK_SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define VK_SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define VK_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define VK_SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define VK_SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
#define VK_COLOR [UIColor colorWithRed:85.0f / 255 green:133.0f / 255 blue:188.0f / 255 alpha:1.0f]
#define VK_IS_DEVICE_IPAD (UIUserInterfaceIdiomPad == [[UIDevice currentDevice] userInterfaceIdiom])
#import <UIKit/UIKit.h>
/**
Various functions
*/
@interface VKUtil : NSObject
/**
Breaks key=value string to dictionary
@param queryString string with key=value pairs joined by & symbol
@return Dictionary of parameters
*/
+ (NSDictionary *)explodeQueryString:(NSString *)queryString;
+ (NSString *)generateGUID;
+ (NSNumber *)parseNumberString:(id)number;
+ (UIColor *)colorWithRGB:(NSInteger)rgb;
+ (NSString *)queryStringFromParams:(NSDictionary *)params;
@end

Binary file not shown.

View File

@ -0,0 +1 @@
A

0
VKSdkResources.bundle/BlueBtn.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
VKSdkResources.bundle/BlueBtn@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
VKSdkResources.bundle/BlueBtn@3x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
VKSdkResources.bundle/BlueBtn_pressed.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
VKSdkResources.bundle/BlueBtn_pressed@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
VKSdkResources.bundle/BlueBtn_pressed@3x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
VKSdkResources.bundle/Disclosure.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
VKSdkResources.bundle/Disclosure@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
VKSdkResources.bundle/Disclosure@3x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
VKSdkResources.bundle/Info.plist Executable file → Normal file

Binary file not shown.

0
VKSdkResources.bundle/en.lproj/InfoPlist.strings Executable file → Normal file
View File

0
VKSdkResources.bundle/en.lproj/Localizable.strings Executable file → Normal file
View File

0
VKSdkResources.bundle/ic_deleteattach.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
VKSdkResources.bundle/ic_deleteattach@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

0
VKSdkResources.bundle/ic_deletephoto.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
VKSdkResources.bundle/ic_deletephoto@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

0
VKSdkResources.bundle/ic_vk_activity_logo.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

0
VKSdkResources.bundle/ic_vk_activity_logo@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

0
VKSdkResources.bundle/ic_vk_activity_logo@2x~ipad.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

0
VKSdkResources.bundle/ic_vk_activity_logo@3x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

0
VKSdkResources.bundle/ic_vk_activity_logo~ipad.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
VKSdkResources.bundle/ic_vk_ios7_activity_logo.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
VKSdkResources.bundle/ic_vk_ios7_activity_logo@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

0
VKSdkResources.bundle/ic_vk_ios7_activity_logo@3x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

0
VKSdkResources.bundle/ic_vk_logo_nb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

0
VKSdkResources.bundle/ic_vk_logo_nb@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
VKSdkResources.bundle/ic_vk_logo_nb@3x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

0
VKSdkResources.bundle/img_newpostattachlink.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

0
VKSdkResources.bundle/img_newpostattachlink@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

0
VKSdkResources.bundle/ru.lproj/Localizable.strings Executable file → Normal file
View File

0
VKSdkResources.bundle/vk_settings.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
VKSdkResources.bundle/vk_settings@2x.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,128 +0,0 @@
//
// VKSdkTests.m
// VKSdkTests
//
// Created by Roman Truba on 27.06.16.
// Copyright © 2016 VK. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "VKUser.h"
#import "VKUtil.h"
#import "VKSdk.h"
@interface VKSdkTests : XCTestCase
@end
@implementation VKSdkTests
- (void)setUp {
[super setUp];
self.continueAfterFailure = NO;
[VKSdk initializeWithAppId:@"3974615" apiVersion:@"5.50"];
NSURL *URL = [NSURL URLWithString:@"https://api.vk.com"];
[NSURLRequest.class performSelector:NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:")
withObject:NSNull.null // Just need to pass non-nil here to appear as a BOOL YES, using the NSNull.null singleton is pretty safe
withObject:[URL host]];
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
static NSString *const ALL_USER_FIELDS = @"id,first_name,last_name,sex,bdate,city,country,photo_50,photo_100,photo_200_orig,photo_200,photo_400_orig,photo_max,photo_max_orig,online,online_mobile,lists,domain,has_mobile,contacts,connections,site,education,universities,schools,can_post,can_see_all_posts,can_see_audio,can_write_private_message,status,last_seen,relation,relatives,counters";
- (void)testApi {
VKRequest *request = [VKRequest requestWithMethod:@"users.get" parameters:@{VK_API_USER_ID : @1, VK_API_FIELDS : ALL_USER_FIELDS} modelClass:[VKUsersArray class]];
[request setPreferredLang:@"ru"];
XCTestExpectation *expectation = [self expectationWithDescription:[NSString stringWithFormat:@"Api call: %@", request.methodName]];
[request executeWithResultBlock:^(VKResponse<VKUsersArray*> *response) {
XCTAssertNotNil(response.parsedModel);
XCTAssertTrue([response.parsedModel isKindOfClass:[VKUsersArray class]]);
NSError *error = nil;
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:[response.responseString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error];
XCTAssertNil(error);
[self validateUsers:response.parsedModel withJsonData:jsonObject];
[expectation fulfill];
} errorBlock:^(NSError *error) {
XCTAssertNil(error);
}];
[self waitForExpectationsWithTimeout:5.f handler:^(NSError * _Nullable error) {
NSLog(@"Request timed out %@", error);
}];
}
- (void)testUserParse {
NSString *PaulDurov = @"{\"response\":[{\"id\":1,\"first_name\":\"Павел\",\"last_name\":\"Дуров\",\"sex\":2,\"domain\":\"durov\",\"bdate\":\"10.10.1984\",\"city\":{\"id\":2,\"title\":\"Санкт-Петербург\"},\"country\":{\"id\":1,\"title\":\"Россия\"},\"photo_50\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c543\\/FfB--bOEVOY.jpg\",\"photo_100\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c542\\/fcMCbfjDsv0.jpg\",\"photo_200\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c541\\/TaUV7CG7RHg.jpg\",\"photo_max\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c541\\/TaUV7CG7RHg.jpg\",\"photo_200_orig\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c535\\/Aolq7Qohi2o.jpg\",\"photo_400_orig\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c536\\/dcqdvDEUs4E.jpg\",\"photo_max_orig\":\"https:\\/\\/pp.vk.me\\/c629231\\/v629231001\\/c536\\/dcqdvDEUs4E.jpg\",\"has_mobile\":1,\"online\":0,\"can_post\":0,\"can_see_all_posts\":0,\"can_see_audio\":0,\"can_write_private_message\":0,\"twitter\":\"durov\",\"instagram\":\"durov\",\"site\":\"http:\\/\\/telegram.org\",\"status\":\"\",\"last_seen\":{\"time\":1398447188,\"platform\":7},\"common_count\":2,\"counters\":{\"albums\":2,\"videos\":14,\"audios\":0,\"notes\":6,\"photos\":226,\"friends\":721,\"online_friends\":126,\"mutual_friends\":2,\"followers\":6062370,\"subscriptions\":1,\"pages\":42},\"university\":1,\"university_name\":\"СПбГУ\",\"faculty\":0,\"faculty_name\":\"\",\"graduation\":2006,\"relation\":0,\"universities\":[{\"id\":1,\"country\":1,\"city\":2,\"name\":\"СПбГУ\",\"graduation\":2006}],\"schools\":[{\"id\":\"1035386\",\"country\":88,\"city\":16,\"name\":\"Sc.Elem. Coppino - Falletti di Barolo\",\"year_from\":1990,\"year_to\":1992,\"class\":\"\"},{\"id\":\"1\",\"country\":1,\"city\":2,\"name\":\"Академическая гимназия (АГ) СПбГУ\",\"year_from\":1996,\"year_to\":2001,\"year_graduated\":2001,\"class\":\"о\",\"type\":1,\"type_str\":\"Гимназия\"}],\"relatives\":[]}]}";
NSError *error = nil;
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:[PaulDurov dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error];
XCTAssertNil(error);
__block VKUsersArray *users = [[VKUsersArray alloc] initWithDictionary:jsonObject];
XCTAssert(users.count == 1);
XCTAssert(users.items.count == 1);
[self validateUsers:users withJsonData:jsonObject];
}
- (void)validateUsers:(VKUsersArray*)users withJsonData:(NSDictionary*)jsonData {
VKUser *user = users.items.firstObject;
NSArray *jsonResponse = VK_ENSURE_ARRAY(jsonData[@"response"]);
XCTAssertNotNil(jsonResponse);
NSDictionary *jsonUser = VK_ENSURE_DICT(jsonResponse.firstObject);
for (NSString *key in jsonUser) {
id userValue = [user valueForKey:key];
XCTAssertNotNil(userValue);
NSDictionary *dictValue = VK_ENSURE_DICT(jsonUser[key]);
if (dictValue) {
NSLog(@"%@ %@", key, [userValue class]);
XCTAssert([userValue isKindOfClass:[VKApiObject class]] == YES);
}
}
XCTAssertNotNil(user);
XCTAssertEqualObjects(user.first_name, @"Павел");
XCTAssertEqualObjects(user.last_name, @"Дуров");
XCTAssertNotNil(VK_ENSURE(user.country, [VKCountry class]));
XCTAssertEqualObjects(user.country.id, @(1));
XCTAssertEqualObjects(user.country.title, @"Россия");
// Universities
XCTAssertNotNil(VK_ENSURE(user.universities, [VKUniversities class]));
XCTAssertEqual(user.universities.count, 1);
VKUniversity *university = user.universities.firstObject;
XCTAssertNotNil(university);
XCTAssertEqualObjects(university.name, @"СПбГУ");
// Schools
XCTAssertNotNil(VK_ENSURE(user.schools, [VKSchools class]));
XCTAssertEqual(user.schools.count, 2);
for (VKSchool *school in user.schools) {
XCTAssertNotNil(VK_ENSURE(school, [VKSchool class]));
XCTAssertNotNil(school.id);
XCTAssertNotNil(school.name);
XCTAssertNotNil(school.name);
}
}
@end

Some files were not shown because too many files have changed in this diff Show More